2013-08-05 6 views
2

새 버켓을 만들지 않으면 특정 버킷이 있는지 확인하고 싶습니다.이미 존재하지 않는 경우 버킷을 생성합니다.

내가 버킷 이미 aws.phar + PHP는 여기에

를 사용하여 존재하는 경우 나에서 감지 할 수있는 방법을 알아야

는 의사 코드

$bucket = 'my-bucket'; 

//some code to detect if bucket name 'my-bucket' exists *suggest here* 
//$myBucketExists = $client->someMethode() 

if(!$myBucketExists){ 

     $result = $client->createBucket(array(
     'Bucket' => $bucket 
    )); 

     // Wait until the bucket is created 
     $client->waitUntil('BucketExists', array('Bucket' => $bucket)); 
} 
// rest of the code using the bucket 

답변

4

에게

$myBucketExists = $client->headBucket(array('Bucket' => $bucket));

+1

[doesBucketExists()] (http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.S3.S3Client.html#_doesBucketExist) 도우미 메서드가 있습니다. headBucket. –

+0

with headBucket() 메서드 버킷 doen't가있는 경우 headBucket에서 예외를 throw하므로 catch 블록에 새 버킷 생성 코드를 작성해야합니다. 이렇게하면 작동합니다. Thanks @Nadh – veer7

+0

doesBucketExist()는 훌륭합니다. 두 가지 방법 모두 잘 작동하며 최선의 코딩 방법으로 doesBucketExist()를 선호합니다. 감사합니다 @ 제레미 린 블럼 – veer7

1
사용 headBucket()입니다

시험해보기 :

$s3 = $this->awsService->get('S3'); 

if(!$s3->doesBucketExist($bucket)) { 
    $s3->createBucket(array(
     'Bucket' => $bucket 
    )); 
} 
+0

답변에 추가 정보를 입력하십시오 –

+1

버킷이 현재 사용중인 계정이 아닌 모든 S3 계정에 존재하는 경우 doesBucketExist가 true를 반환한다는 점에 유의하십시오. 두 번째 매개 변수로 false를 전달하면 이 403 응답을 방지하여이 함수가 true를 반환하는 것을 방지 할 수 있다고 생각합니다. http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html 문서를 참조하십시오. – Carlton

관련 문제