일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- tool
- AWS
- 요리
- devops
- Spring Batch
- ubuntu
- Design Patterns
- db
- MySQL
- springboot
- ReactJS
- Oracle
- jsp
- java
- Spring
- linux
- 맛집
- laravel
- IntelliJ
- jenkins
- php
- Gradle
- Spring Boot
- Git
- elasticsearch
- Web Server
- JVM
- redis
- javascript
- it
- Today
- Total
아무거나
AWS PHP SDK 사용 본문
SDK란?
Software Development Kit의 약자로 특정한 소프트웨어나 플랫폼을 이용해서 소프트웨어를 개발할 때 이를 돕는 개발도구의 집합이다.
환경 구축 관련
requirements // sdk를 사용하기 위하여 꼭 필요한 것들
- php >= 5.5.0
- OpenSSL PHP extension // php 확장기능 필요
- optiaml settings // 없어도 되지만 하는걸 추천하는 기능
Installation // 설치방법
1. Composer 설치
- cd /var/www/html // documentroot 경로로 이동
- curl -sS https://getcomposer.org/installer | php
- permission denied 오류가 뜰때 sudo chown ubuntu 명령을 쳐서 현재 디렉토리를 ubuntu 사용자의 것으로 바꾸고 다시 위의 설치 명령을 입력한다.
2. composer를 이용하여 aws-sdk-php 설치
- php composer.phar require aws/aws-sdk-php // composer라는 프로그램을 php로 실행해서 aws/aws-sdk-php라고 하는 aws에서 만든 sdk를 이 프로젝트에 포함시키겠다는 뜻
3. ls -al를 해보면 composer관련 파일, vendor라는 파일이 있다.
- cat composer.json 열어보면 aws-sdk-php를 사용하겠다는 내용이 나옴
- vendor 폴더 안에는 aws-sdk-php가 저장되어 있다.
4. vi ec2.php 만들어 아래 내용을 입력
- <?php
require 'vendor/autoload.php'; // 이걸 실행시키면 vendor라는 폴더에 설치한 프로젝트를 읽어오는 코드를 추가한 것
AWS-SDK-PHP 사용법
* basic SDK usage // sdk를 사용하는 기본적인 사례들을 보여줌
* SDK Guides -> configuration, credentials
- credentials(인증 관련 정보 = 자격 증명)
* 인증 관련 정보 설명
1. Using credentials from environment variables
- 환경변수를 세팅하면 운영체제 전역에서 접근할 수 있는 변수를 만드는 기능을 사용하는 방법
2. Using IAM roles for Amazon EC2 instances (권장)
- EC2 인스턴스에서 PHP코드 안에서 SDK를 사용하는 코드가 들어가 있는 방식
3. Using the AWS credentials file and credential profiles
- 작성하는 코드안에다가 aws에서 지정해놓은 어떤 디렉토리의 특정한 파일명으로
[default]
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY
[project1]
aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID
aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY
이런식의 포맷의 텍스트파일을 만들어서 갖다놓으면 sdk가 알아서 그 위치에 그 파일이 있는지를 체크하고 있으면 위에껄 쓰고 없으면 아래 방법을 씀
<?php
use Aws\DynamoDb\DynamoDbClient;
// Instantiate a client with the credentials from the project1 profile
$client = new DynamoDbClient([
'profile' => 'project1',
'region' => 'us-west-2',
'version' => 'latest'
]);
4. Using hard-coded credentials // 하드코딩 방식( 보안상 가장 비 효율적 )
$s3Client = new S3Client([
'version' => 'latest',
'region' => 'us-west-2',
'credentials' => [
'key' => 'my-access-key-id',
'secret' => 'my-secret-access-key',
],
]);
사용법
1. AWS Services -> Security & Identity -> IAM -> Users
2. Add User ( IAM 추가 및 테스트 파일 생성 )
- name에 php입력 후 Programmatic access 에 체크하고 Next
- 계속 Next
- Acess Key Id, Secret access key를 알아놓자.
- Acess Key Id 를 복사하여 나의 리눅스에 홈 디렉토리로 이동한다. cd ~/
- mkdir .aws 폴더를 만든다.
- cd .aws
- vi credentials 파일을 만들고 내용은 아래 형식을 넣고 저장( 위의 인증 관련 정보 설명 내용중 3번 참조 )
[default]
aws_access_key_id = {위의 Acess Key Id 를 입력}
aws_secret_access_key = {위의 Secret access key를 입력}
- cd /var/www/html 이동 (테스트)
- vi ec2.php 파일을 편집
- php-sdk 문서 -> API Reference 클릭하면 sdk여러 명령어를 볼 수 있는 페이지로 이동함
- ec2 -> Ec2Client 클릭 -> 해당 네임스페이스 복사
- <?php
// Include the SDK using the Composer autoloader
require 'vendor/autoload.php';
$Aws = new Aws\Ec2\Ec2Client(); // ec2 객체 사용
var_dump($Aws); // 객체 생성 유무 확인
- php ec2.php 입력하여 확인
- Argument 1 passsed to Aws\Ec2\Ec2Client::__construct() 관련 에러가 나면
다시 vi ec2.php로 들어간다.
- 기존소스에 배열을 추가한다.
<?php
// Include the SDK using the Composer autoloader
require 'vendor/autoload.php';
$param = Array();
$Aws = new Aws\Ec2\Ec2Client($param); // ec2 객체 사용
var_dump($Aws); // 객체 생성 유무 확인
- 다시 실행하면 경고를 띄어주게 된다. 내용은 필수적은 클라이언트 configuration이 빠져있다는 대략적이 내용이다.. 확인하면 region, version 의 정보가 필요하다고 한다.
오류 메세지에 제공되는 url로 들어가 확인하여 ec2.php에 정보를 추가한다.
- $param = Array('region' => 'ap-northeast-2'); // ec2.php에 region정보를 추가
- $param = Array('region' => 'ap-northeast-2', 'version' => '2015-10-01'); // version 정보를 추가
- 저장하고 다시 ec2.php를 입력하면 어떤정보가 주르륵 보여지면 성공한 것이다.
3. DescribeInstances 메서드 사용방법
- vi ec2.php 들어간다.
- <?php
// Include the SDK using the Composer autoloader
require 'vendor/autoload.php';
$param = Array('region' => 'ap-northeast-2', 'version' => '2015-10-01');
$ec2 = new Aws\Ec2\Ec2Client($param); // ec2 객체 사용
$instances = $ec2->describeInstances([]);
print_r($instances);
- 위 소스를 실행하면 에러가 뜬다. ( 허용되지 않은 어떤 행위를 한다는 뜻 )
- IAM 매니지먼트 콘솔로 들어간다.
- user클릭하고 permissions메뉴에서 add permissions 클릭
- Attach existing policies directly 에서 AmazonEC2FullAccess 를 체크하고 next를 클릭 이것은 ec2에 관련된 모든 일을 할 수 있는 권한을 준다는 뜻이다.
- 다시 ec2.php 실행하면 원하는 정보를 추출할 수 있다.
'Infra > AWS' 카테고리의 다른 글
스케일업 방법 (0) | 2019.03.14 |
---|---|
Security Group IP 대역 설정 (0) | 2019.03.14 |
S3 콘솔 사용법 (0) | 2019.03.13 |
Simple Storage Service(S3) (0) | 2019.03.13 |
AWS Command Line Tools 기본설정 (0) | 2019.03.12 |