我只是 boto3 的新手,我不明白如何获取刚上传到s3亚马逊的文件的URL链接。
请澄清。
谢谢
import boto3
s3 = boto3.resource('s3')
data = open ('file.xlsx', 'rb')
s3.Bucket ('dimxxx1').put_object (Key='file.xlsx', Body=data)
答案 0 :(得分:3)
在python3中,
url = f"https://{bucket}.s3.{region}.amazonaws.com/{folder}{file_name}"
答案 1 :(得分:1)
这里是此问题的修复程序,它使您能够按照此link的建议获取S3文件的URL。基本上,您必须为要提供访问权限的每个S3对象生成一个预签名URL。请参见下面的代码:
import boto3
# Get the service client.
s3 = boto3.client('s3')
# Generate the URL to get 'key-name' from 'bucket-name'
url = s3.generate_presigned_url(
ClientMethod='get_object',
Params={
'Bucket': '<bucket-name>',
'Key': '<key-name>'
}
)
将和更改为您的S3存储桶,以及已上传文件的名称。
答案 2 :(得分:1)
首先,更好的上传方式是:
import boto3
s3 = boto3.resource('s3')
s3.Bucket('dimxxx1').upload_file('/tmp/file.xlsx', 'file.xlsx')
要获取URL,可以从基本元素中构建它:
http://s3-REGION-.amazonaws.com/BUCKET-NAME/KEY
例如:
http://s3-ap-southeast-2.amazonaws.com/dimxxx1/file.xlsx
答案 3 :(得分:0)
这是使用python格式化程序的正确序列:
url = f"https://s3.{region}.amazonaws.com/{bucket}/{folder}...N/{file_name}"