2.3.8. PHP를 사용하여 Ceph Object Gateway에 액세스


S3 액세스에 PHP 스크립트를 사용할 수 있습니다. 이 절차에서는 버킷 또는 오브젝트 삭제와 같은 다양한 작업을 수행하는 몇 가지 PHP 스크립트 예를 제공합니다.

중요

아래 예제는 php v5.4.16aws-sdk v2.8.24 에 대해 테스트됩니다. php >= 5.5 이상이 필요하므로 최신 버전의 aws-sdk 를 사용하지 마십시오.php 5.5 RHEL 7 의 기본 리포지토리에서 사용할 수 없습니다. php 5.5 를 사용하려면 epel 및 기타 타사 리포지토리를 활성화해야 합니다. 또한 php 5.5 및 최신 버전의 aws-sdk 구성 옵션은 다릅니다.

사전 요구 사항

  • 개발 워크스테이션에 대한 루트 수준 액세스.
  • 인터넷 액세스.

절차

  1. php 패키지를 설치합니다.

    [root@dev ~]# yum install php
  2. PHP용 aws-sdk 의 zip 아카이브를 다운로드하여 압축을 풉니다.
  3. 프로젝트 디렉터리를 생성합니다.

    [user@dev ~]$ mkdir php_s3
    [user@dev ~]$ cd php_s3
  4. 추출된 aws 디렉터리를 프로젝트 디렉터리에 복사합니다. 예를 들어 다음과 같습니다.

    [user@php_s3]$ cp -r ~/Downloads/aws/ ~/php_s3/
  5. 연결 파일을 생성합니다.

    [user@php_s3]$ vim conn.php
  6. conn.php 파일에 다음 내용을 붙여 넣습니다.

    구문

    <?php
    define('AWS_KEY', 'MY_ACCESS_KEY');
    define('AWS_SECRET_KEY', 'MY_SECRET_KEY');
    define('HOST', 'FQDN_OF_GATEWAY_NODE');
    define('PORT', '8080');
    
    // require the AWS SDK for php library
    require '/PATH_TO_AWS/aws-autoloader.php';
    
    use Aws\S3\S3Client;
    
    // Establish connection with host using S3 Client
    client = S3Client::factory(array(
        'base_url' => HOST,
        'port' => PORT,
        'key'      => AWS_KEY,
        'secret'   => AWS_SECRET_KEY
    ));
    ?>

    FQDN_OF_GATEWAY_NODE 를 게이트웨이 노드의 FQDN으로 교체합니다. MY_ACCESS_KEYMY_SECRET_KEYRed Hat Ceph Storage 오브젝트 게이트웨이 구성 및 관리 가이드에서 언급한 대로 S3 액세스용 radosgw 사용자를 생성할 때 생성된 access_key secret_key 로 바꿉니다. PATH_TO_AWSphp 프로젝트 디렉터리에 복사한 추출된 aws 디렉터리의 절대 경로로 교체합니다.

    파일을 저장하고 편집기를 종료합니다.

  7. 파일을 실행합니다.

    [user@php_s3]$ php -f conn.php | echo $?

    파일에 값을 올바르게 제공한 경우 명령의 출력은 0 이 됩니다.

  8. 버킷을 만들기 위한 새 파일을 만듭니다.

    [user@php_s3]$ vim create_bucket.php

    다음 내용을 새 파일에 붙여넣습니다.

    구문

    <?php
    
    include 'conn.php';
    
    client->createBucket(array('Bucket' => 'my-new-bucket3'));
    
    ?>

    파일을 저장하고 편집기를 종료합니다.

  9. 파일을 실행합니다.

    [user@php_s3]$ php -f create_bucket.php
  10. 소유 버킷을 나열할 새 파일을 만듭니다.

    [user@php_s3]$ vim list_owned_buckets.php

    다음 내용을 파일에 붙여넣습니다.

    구문

    <?php
    
    include 'conn.php';
    
    blist = client->listBuckets();
    echo "Buckets belonging to " . blist['Owner']['ID'] . ":\n";
    foreach (blist['Buckets'] as b) {
        echo "{b['Name']}\t{b['CreationDate']}\n";
    }
    
    ?>

    파일을 저장하고 편집기를 종료합니다.

  11. 파일을 실행합니다.

    [user@php_s3]$ php -f list_owned_buckets.php

    출력은 다음과 유사해야 합니다.

    my-new-bucket3 2022-04-21 10:33:19 UTC
  12. hello.txt 라는 소스 파일을 먼저 생성하여 오브젝트를 생성합니다.

    [user@php_s3]$ echo "Hello World!" > hello.txt
  13. 새 php 파일을 만듭니다.

    [user@php_s3]$ vim create_object.php

    다음 내용을 파일에 붙여넣습니다.

    구문

    <?php
    
    include 'conn.php';
    
    key         = 'hello.txt';
    source_file = './hello.txt';
    acl         = 'private';
    bucket      = 'my-new-bucket3';
    client->upload(bucket, key, fopen(source_file, 'r'), acl);
    
    ?>

    파일을 저장하고 편집기를 종료합니다.

  14. 파일을 실행합니다.

    [user@php_s3]$ php -f create_object.php

    이렇게 하면 hello.txt 개체가 my-new-bucket3 버킷에 생성됩니다.

  15. 버킷의 콘텐츠를 나열할 새 파일을 만듭니다.

    [user@php_s3]$ vim list_bucket_content.php

    다음 내용을 파일에 붙여넣습니다.

    구문

    <?php
    
    include 'conn.php';
    
    o_iter = client->getIterator('ListObjects', array(
        'Bucket' => 'my-new-bucket3'
    ));
    foreach (o_iter as o) {
        echo "{o['Key']}\t{o['Size']}\t{o['LastModified']}\n";
    }
    ?>

    파일을 저장하고 편집기를 종료합니다.

  16. 파일을 실행합니다.

    [user@php_s3]$ php -f list_bucket_content.php

    출력은 다음과 유사합니다.

    hello.txt    12    Fri, 22 Apr 2022 15:54:52 GMT
  17. 빈 버킷을 삭제하기 위해 새 파일을 생성합니다.

    [user@php_s3]$ vim del_empty_bucket.php

    다음 내용을 파일에 붙여넣습니다.

    구문

    <?php
    
    include 'conn.php';
    
    client->deleteBucket(array('Bucket' => 'my-new-bucket3'));
    ?>

    파일을 저장하고 편집기를 종료합니다.

  18. 파일을 실행합니다.

    [user@php_s3]$ php -f del_empty_bucket.php | echo $?

    버킷이 성공적으로 삭제되면 명령은 0 을 출력으로 반환합니다.

    참고

    create_bucket.php 파일을 편집하여 빈 버킷(예: my-new-bucket4,my-new-bucket5 )을 생성합니다. 그런 다음 빈 버킷을 삭제하기 전에 위에서 언급한 del_empty_bucket.php 파일을 편집합니다.

    중요

    비어 있지 않은 버킷 삭제는 현재 PHP 2 및 aws-sdk 버전에서 지원되지 않습니다.

  19. 오브젝트를 삭제하기 위한 새 파일을 생성합니다.

    [user@php_s3]$ vim delete_object.php

    다음 내용을 파일에 붙여넣습니다.

    구문

    <?php
    
    include 'conn.php';
    
    client->deleteObject(array(
        'Bucket' => 'my-new-bucket3',
        'Key'    => 'hello.txt',
    ));
    ?>

    파일을 저장하고 편집기를 종료합니다.

  20. 파일을 실행합니다.

    [user@php_s3]$ php -f delete_object.php

    그러면 hello.txt 오브젝트가 삭제됩니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.