使用 boto3 为 S3 中的版本生成预签名 url

Tip*_*ter 5 amazon-s3 amazon-web-services boto3

因此,我正在努力寻找有关为 S3 中文件的每个版本生成预签名 url 的方法的信息。我能够获取所有版本,但是当调用generate_presigned_url()时,我没有从版本对象传递的密钥。有什么办法可以做到这一点吗?我希望不需要下载每个版本,但如果这是唯一的方法那就没问题。

这是我当前的片段:

for version in versions:
    object = version.get()
    url = s3Client.generate_presigned_url(
        ClientMethod='get_object',
        Params={
            'Bucket': bucket,
            'Key': object.get('VersionID') #Not sure what value to put here?
        }
    )
Run Code Online (Sandbox Code Playgroud)

Tip*_*ter 7

对这个进行了更多的挖掘。看起来可以使用“VersionId”参数获取旧版本文件的预签名 URL。没有提到该参数支持generate_presigned_url 调用,但我还是尝试了一下并且它有效。

for version in versions:
    object = version.get()
    url = s3Client.generate_presigned_url(
        ClientMethod='get_object',
        Params={
            'Bucket': bucket,
            'Key': key,
            'VersionId': object.get('VersionId')
        }
    )
Run Code Online (Sandbox Code Playgroud)