2016-09-03 1 views
0

AWS S3에서는 my-bucket이라는 버킷을 가지고 있습니다. 내 버킷에 액세스하려면 AWS Ruby SDK을 사용하고 있습니다. my-bucket/customers/products이와 내가 확인 할AWS Ruby SDK는 항상 존재하는 키를 확인합니다. 'false'

my-bucket/ 
    customers/ 
     products/ 
       - data1.txt 
       - data2.txt 
       ... 

존재 : 나는 S3에 다음 디렉토리 구조 (나는 그것이 S3에서 "디렉토리"호출되지 않습니다 알고 있지만, 단지 아이디어를 보여를) 한 my-bucket에서

AWS 루비 SDK, 나는 다음과 같은 코드를 시도 :

s3 = Aws::S3::Resource.new 
bucket = s3.bucket("my-bucket") 
result = bucket.object("customers/products").exists? 

을하지만 result 내가 어디 잘못입니다, S3의 해당 디렉토리가 할지라도, false 준다?

답변

3

. 존재하는 일부 객체의 접두어에 불과합니다. 당신은 말했다 :

나는 S3의 디렉토리 단지 다른 용어보다 더 그러나이 S3

에서 "디렉토리"

를 호출되지 않습니다 알고 있습니다. 디렉토리 (또는 폴더)는 S3에 전혀 존재하지 않습니다. 열쇠가있는 객체 만 있습니다. 파일 이름에 슬래시 문자를 사용할 수있는 단일 플랫 디렉토리와 같습니다.

대부분의 S3 탐색 응용 프로그램은 키 이름의 슬래시를 "디렉토리"로 해석하고 편의상 파일 시스템처럼 계층 적으로 객체를 표시하지만 해당 디렉토리/폴더는 실제로 S3에 존재하지 않습니다.

다른 답변에서 지적한 것처럼 가장 좋은 방법은 해당 접두사가 포함 된 개체가 있는지 확인하는 것입니다.

+0

'Object'는'data.txt'와 같이'customers/products' 안에 포함 된 객체를 의미합니까? –

+0

개체는 파일을 의미합니다. –

0

"고객/제품"개체로 존재하지 않기 때문이다 사용 bucket.objects.with_prefix("customers/products").any?

+0

정의되지 않은 메소드'any? ' –

+0

전체 오류를 지정할 수 있습니까? –

+0

bucket = s3.buckets [ 'bucket-name']을 참조하기 위해 aws docs도 마찬가지입니다. –