如何使用 python 检索 AWS S3 对象 URL

Posted

技术标签:

【中文标题】如何使用 python 检索 AWS S3 对象 URL【英文标题】:How to retrieve AWS S3 objects URL using python 【发布时间】:2022-01-23 19:57:08 【问题描述】:

我需要编写一个 lambda 函数来检索 s3 对象 URL 以进行对象预览。我遇到了这个解决方案,但我对此有疑问。就我而言,我想检索我的 s3 存储桶中任何对象的 URL,因此没有 Keyname。如何检索存储在我的 s3 存储桶中的任何未来对象的 URL。

bucket_name = 'aaa'
aws_region = boto3.session.Session().region_name
object_key = 'aaa.png'

s3_url = f"https://bucket_name.s3.aws_region.amazonaws.com/object_key"

return 
   'statusCode': 200,
   'body': json.dumps('s3_url': s3_url)

【问题讨论】:

【参考方案1】:

你有一些例子here。但是,你到底想做什么?你说的未来对象是什么意思?您可以在您的存储桶上放置一个creation event,每次将新对象上传到该存储桶时都会触发您的 lambda。

import boto3

def lambda_handler(event, context):
    print(event)
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']

    s3 = boto3.client('s3')
    obj = s3.get_object(
        Bucket=bucket,
        Key=key
    )
    print(obj['Body'].read().decode('utf-8'))

【讨论】:

我希望能够检索 s3 对象 url 以进行对象预览,但我没有 KEYNAME

以上是关于如何使用 python 检索 AWS S3 对象 URL的主要内容,如果未能解决你的问题,请参考以下文章

AWS 存储服务

如何在循环中获取 Amazon S3 对象?

如何使用AWS SDK从S3下载对象--RESTful。

如何使用AWS SDK从S3下载对象--RESTful。

如何使用 python 将流上传到 AWS s3

使用aws cli将S3对象上传到存储桶后如何获取它?