PHP용 AWS SDK를 사용한 S3 작업

10320 단어 phpaws
만질 기회가 있었기 때문에 PHP 용 AWS SDK를 사용하여 S3 작업을 구성합니다.

AWS에서 필요한 리소스를 구축하고 FuelPHP를 사용하는 애플리케이션으로 S3를 운영하는 예.

업무 환경



·맥 OS
・작곡가 1.10.13
・FuelPHP 1.8.2
・PHP 3.152.1용 AWS SDK

환경


하부 구조



개인 블로그에서 IAM 사용자 액세스 키와 보안 액세스 키를 하드 코딩하는 예를 종종 봅니다.

안티패턴이고 실제 운용에서는 사용하지 않을 것 같아서 IAM 역할을 사용하여 예시를 요약해 보겠습니다.

검증을 위해 EC2에 S3 접근 권한을 부여한 IAM 사용자를 설정하고 EC2에서 사용합니다.
구축을 위해 CloudFormation을 사용합니다.


EC2
  • CloudFormation 정의에 대해 설명합니다.


  • 시즌3
  • CloudFormation 정의에 대해 설명합니다.


  • 나는
  • CloudFormation 정의에 대해 설명합니다.


  • EC2 인스턴스 프로파일
  • CloudFormation 정의에 대해 설명합니다.




  • 작곡가 설치

    Mac에는 작곡가가 포함되어 있지 않으므로 Homebrew를 사용하여 설치하십시오.

    brew install composer
    




    FuelPHP 프로젝트 생성

    프레임워크는 FuelPHP를 사용합니다. 작곡가와 함께 프로젝트를 만드십시오.

    composer create-project fuel/fuel:1.8.2 aws_php_sdk
    

    제쳐두고, composer create-project 지정된 프로젝트를 git 복제 한 다음 작곡가를 설치하는 것 같습니다.

    https://getcomposer.org/doc/03-cli.md#create-project




    PHP 설치용 AWS SDK

    https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/getting-started_installation.html

    프로젝트 디렉토리에서 다음을 실행합니다.
    SDK는 Fuel/vendor/aws/aws-sdk-php 아래에 설치됩니다.

    composer require aws/aws-sdk-php
    



    앱 개발



    소스 구성에 따라 파일을 만들고 정렬합니다.
    사실 클래스를 만들어서 개별적으로 래퍼 기능을 하는 것이 더 낫다고 생각합니다.
    아래에는 코드만 요약되어 있습니다.

    <?php
    // Import settings
    require 'fuel/vendor/autoload.php';  // Set according to FuelPHP path
    
    use Aws\S3\S3Client;  // Set to operate S3
    use Aws\Exception\AwsException;  // SDK general exceptions
    use Aws\S3\Exception\S3Exception;  // S3 specific exceptions
    
    // Get credentials
    use Aws\Credentials\CredentialProvider;  // Set to get credentials
    
    try {
        $provider = CredentialProvider::instanceProfile();
        $memoizedProvider = CredentialProvider::memoize($provider);
    } catch (AwsException $e) {
        echo $e->getMessage();
    }
    
    // S3 client credentials settings
    $client = new S3Client([
        'region'      => 'ap-northeast-1',
        'version'     => 'latest',
        'credentials' => $memoizedProvider,
        'debug'   => true  // If debug is specified, the error log can be seen in detail at the time of verification.
    ]);
    
    // S3 StreamWrapper registration
    try {
        $client->registerStreamWrapper();
    } catch (S3Exception $e) {
        echo $e->getMessage();
    }
    
    // Bucket list display
    try {
        $iter = Aws\recursive_dir_iterator('s3://bucket/key');
        foreach ($iter as $filename) {
            echo $filename . "\n";
        }
    } catch (S3Exception $e) {
        echo $e->getMessage();
    }
    
    // Download data
    try {
        $data = file_get_contents('s3://bucket/key');
    } catch (S3Exception $e) {
        echo $e->getMessage();
    }
    
    // Upload data
    try {
        file_put_contents('s3://bucket/key', 'Hello!');
    } catch (S3Exception $e) {
        echo $e->getMessage();
    }
    
    // Move data
    try {
        rename('s3://bucket/src', 's3://bucket/dist');
    } catch (S3Exception $e) {
        echo $e->getMessage();
    }
    
    

    설정 가져오기



    https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/getting-started_basic-usage.html

    가져오기 설정을 추가합니다.


    자격 증명 가져오기



    https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials_provider.html

    자격 증명을 가져옵니다. 이번에는 인스턴스 프로파일에서 가져옵니다.


    S3 클라이언트 자격 증명 설정



    S3 클라이언트 정의 및 자격 증명 설정


    S3 스트림 래퍼 등록



    https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/s3-stream-wrapper.html

    S3 작업에 S3 스트림 래퍼를 사용하려면 등록하십시오.


    버킷리스트 디스플레이



    적은 수의 HTTP 요청으로 재귀적으로 얻는 방법.


    데이터 다운로드/업로드/이동



    문서라면 이동을 어떻게 사용하는지 이해하기 어렵습니다.
    이동 소스 및 이동 대상의 경로를 전달하여 mv 명령처럼 사용할 수 있습니다.

    좋은 웹페이지 즐겨찾기