上传Amazon S3 python,boto3后获取文件url

时间:2018-11-04 23:45:41

标签: python amazon-web-services amazon-s3 boto3

我只是 boto3 的新手,我不明白如何获取刚上传到s3亚马逊的文件的URL链接。

请澄清。

谢谢

import boto3

s3 = boto3.resource('s3')

data = open ('file.xlsx', 'rb')
s3.Bucket ('dimxxx1').put_object (Key='file.xlsx', Body=data)

4 个答案:

答案 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}"