似乎無法弄清楚如何將我能用cli做的事情翻譯成boto3 python。
我可以很好地運行這個:
aws s3 ls s3://bucket-name-format/folder1/folder2/
aws s3 cp s3://bucket-name-format/folder1/folder2/myfile.csv.gz
嘗試用boto3來做這件事:
import boto3
s3 = boto3.client('s3'/span>, region_name='us-east-1', aws_access_key_id=KEY_ID, aws_secret_access_key=ACCESS_KEY)
bucket_name = "bucket-name-format"。
bucket_dir = "/folder1/folder2/"。
bucket = '{0}{1}'.format(bucket_name,bucket_dir)。
filename = 'myfile.csv.gz'。
s3.download_file(Filename=final_name,Bucket=bucket,Key=filename)
我得到這個錯誤 :
無效的桶名 "bucket-name-format/folder1/folder2/"。水桶名稱必須符合重詞"^[a-zA-Z0-9.-_]{1,255}$"或者是符合重詞"^arn:(aws).:(s3|s3-object-lambda):[a-z-0-9]:[0-9]{12}:accesspoint[/:] [a-zA-Z0-9-。 ]{1,63}$|^arn:(aws).:s3-outposts:[a-z-0-9] :[0-9]{12}:outpost[/:][a-zA-Z0-9-]{1,63}[/:]accesspoint[/:][a-zA-Z0-9-]{1,63}$"*
我知道這個錯誤是因為桶的名稱"bucket-name-format/folder1/folder2/"確實無效。
問題:我如何添加路徑?我所看到的所有例子都只是列出了基本的桶的名稱 問題:我如何添加路徑?
uj5u.com熱心網友回復: 采取以下命令: 該S3 URI可以分解為 實際上,前綴和后綴是有點人為的,物件名稱實際上是 這意味著要用boto3 API下載相同的物件,你要用這樣的方式來呼叫它: 注意,Bucket的download_file的引數只是Bucket的名字,而Key不是以正斜杠開頭。
標籤:aws s3 cp s3://bucket-name-format/folder1/folder2/myfile.csv.gz
bucket-name-formatfolder1/folder2/folder1/folder2/myfile.csv.gzfolder1/folder2/myfile.csv.gzbucket_name = "bucket-name-format"。
bucket_dir = "folder1/folder2/"。
filename = 'myfile.csv.gz'/span>
s3.download_file(Filename=final_name,Bucket=bucket_name,Key=bucket_dir filename)
