S3에서 버킷 사양으로 파일 다운로드, 삭제하는 파이썬 클라이언트 앱
개요
특정 버킷에서 파일을 모두 검색하고 싶을 때 콘솔에서 귀찮았기 때문에,
버킷을 지정하여 파일을 일괄로 얻을 수 있는 툴을 만들어 보았습니다.
(아마 이미 있을 것 같지만・・・)
취득뿐만 아니라 삭제 처리도 붙여 보았습니다.
(이쪽을 사용해 무언가 일어나도 자기 책임으로 부탁합니다.)
사용 라이브러리
도구 설명
소스 자체는 여기 으로 공개하고 있습니다.
도구를 시작하면 다음과 같이 보입니다.
if aws_access_key_id =='':
s3 = boto3.resource('s3')
s3client=boto3.client('s3')
else:
s3 = boto3.resource('s3',
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key_id)
s3client=boto3.client('s3',
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key_id)
bucketName=self.inputFileName.get()
resultFolder=self.outputFolder.get()
dataBaseDir=os.path.join(resultFolder,bucketName)
executeType=EXECUTE_LIST.index(self.combo.get())
s3bucket=s3.Bucket(bucketName)
objs = s3bucket.meta.client.list_objects_v2(Bucket=s3bucket.name)
for o in objs.get('Contents'):
key = o.get('Key')
s3Paths=os.path.splitext(key)
if len(s3Paths[1]) !=0:
keys=key.split('/')
filename=keys[len(keys)-1]
if executeType==0:
outputDataDir=key.split(filename)[0]
outputDataDir=os.path.join(dataBaseDir,outputDataDir)
os.makedirs(outputDataDir,exist_ok=True)
outputDataFile=os.path.join(outputDataDir,filename)
s3bucket.download_file(key,outputDataFile)
else:
s3client.delete_object(Bucket=s3bucket.name, Key=key)
objs = s3bucket.meta.client.list_objects_v2(Bucket=s3bucket.name)
의 부분으로 취득할 수 있으므로 나머지는 for문으로 처리를 하고 있습니다.
인수에
Prefix
를 추가하여 특정 폴더, 파일 만 지정할 수 있습니다.pythonGui.py
로 했을 경우 다음과 같이 됩니다.Reference
이 문제에 관하여(S3에서 버킷 사양으로 파일 다운로드, 삭제하는 파이썬 클라이언트 앱), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dmikita/items/6ab2e3572674a21d07ab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)