파이썬의 boto3을 사용하여 S3의 폴더 객체를 얻을 수 없어서 곤란했습니다.
소개
아마존 S3의 '폴더'라는 환상을 파괴하고 그 실체를 밝힌다.
htps : //에서 v.ぁsss d. jp / c ぉ d / 아 ws / 아마 존 - s3 - fu l에서 rs /
여기에 실려 있던 정보로 아래의 2개의 케이스 이외에도 있었으므로 보충하겠습니다
결론
관리 화면에서 폴더별로 업로드 할 수 있으며 폴더 안의 파일 유무에 따라 달라집니다.
상세
사례 1 추가
관리 콘솔에서 빈 폴더를 폴더별로 업로드
예) 빈 case1test 폴더를 관리 화면에서 업로드
이 경우 개체로 폴더를 가져올 수 있습니다.
사례 2 추가
관리 콘솔에서 파일이 들어 있는 폴더를 폴더별로 업로드
예) test.png가 들어있는 case2test 폴더를 관리 화면에서 case2test 폴더 당 업로드
이 경우 개체로 폴더를 가져올 수 없습니다.
출처
import json
import boto3
def lambda_handler(event, context):
S3Bucket = 'myBucket'
S3KeyPrefix = 'test/'
s3 = boto3.resource('s3')
bucket = s3.Bucket(S3Bucket)
Obj = bucket.meta.client.list_objects_v2(Bucket=bucket.name, Prefix=S3KeyPrefix)
print(Obj)
# TODO implement
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
실행 결과
{'ResponseMetadata':
略
'Contents': [
{'Key': 'test/', 'LastModified': datetime.datetime(2019,1,17,9,48,42, tzinfo=tzlocal()), 'ETag': '"d41d8cd98f00b204e9800998ecf8427e"', 'Size': 0, 'StorageClass': 'STANDARD'},
{'Key': 'test/case1test/', 'LastModified': datetime.datetime(2019,1,17,9,48,50, tzinfo=tzlocal()), 'ETag': '"d41d8cd98f00b204e9800998ecf8427e"', 'Size': 0, 'StorageClass': 'STANDARD'},
{'Key': 'test/case2test/test.png', 'LastModified': datetime.datetime(2019,1,17,9,48,53, tzinfo=tzlocal()), 'ETag': '"0753ec70b92a549bb53484c0e83ba7c1"', 'Size': 5293, 'StorageClass': 'STANDARD'}
], 'Name': 'myBucket', 'Prefix': 'test/', 'MaxKeys': 1000, 'KeyCount': 3
}
''Key': 'test/case1test/'' 객체가 있습니다.
''Key': 'test/case2test/'' 개체가 없습니다.
결론
폴더 개체는 없다고 가정합니다
Reference
이 문제에 관하여(파이썬의 boto3을 사용하여 S3의 폴더 객체를 얻을 수 없어서 곤란했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lunar_sword3/items/7e8b9ceec48c789452e3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
사례 1 추가
관리 콘솔에서 빈 폴더를 폴더별로 업로드
예) 빈 case1test 폴더를 관리 화면에서 업로드
이 경우 개체로 폴더를 가져올 수 있습니다.
사례 2 추가
관리 콘솔에서 파일이 들어 있는 폴더를 폴더별로 업로드
예) test.png가 들어있는 case2test 폴더를 관리 화면에서 case2test 폴더 당 업로드
이 경우 개체로 폴더를 가져올 수 없습니다.
출처
import json
import boto3
def lambda_handler(event, context):
S3Bucket = 'myBucket'
S3KeyPrefix = 'test/'
s3 = boto3.resource('s3')
bucket = s3.Bucket(S3Bucket)
Obj = bucket.meta.client.list_objects_v2(Bucket=bucket.name, Prefix=S3KeyPrefix)
print(Obj)
# TODO implement
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
실행 결과
{'ResponseMetadata':
略
'Contents': [
{'Key': 'test/', 'LastModified': datetime.datetime(2019,1,17,9,48,42, tzinfo=tzlocal()), 'ETag': '"d41d8cd98f00b204e9800998ecf8427e"', 'Size': 0, 'StorageClass': 'STANDARD'},
{'Key': 'test/case1test/', 'LastModified': datetime.datetime(2019,1,17,9,48,50, tzinfo=tzlocal()), 'ETag': '"d41d8cd98f00b204e9800998ecf8427e"', 'Size': 0, 'StorageClass': 'STANDARD'},
{'Key': 'test/case2test/test.png', 'LastModified': datetime.datetime(2019,1,17,9,48,53, tzinfo=tzlocal()), 'ETag': '"0753ec70b92a549bb53484c0e83ba7c1"', 'Size': 5293, 'StorageClass': 'STANDARD'}
], 'Name': 'myBucket', 'Prefix': 'test/', 'MaxKeys': 1000, 'KeyCount': 3
}
''Key': 'test/case1test/'' 객체가 있습니다.
''Key': 'test/case2test/'' 개체가 없습니다.
결론
폴더 개체는 없다고 가정합니다
Reference
이 문제에 관하여(파이썬의 boto3을 사용하여 S3의 폴더 객체를 얻을 수 없어서 곤란했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/lunar_sword3/items/7e8b9ceec48c789452e3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(파이썬의 boto3을 사용하여 S3의 폴더 객체를 얻을 수 없어서 곤란했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/lunar_sword3/items/7e8b9ceec48c789452e3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)