아무거나

AWS PHP SDK 사용 본문

Infra/AWS

AWS PHP SDK 사용

전봉근 2019. 3. 14. 11:00
반응형

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
Comments