【问题标题】:Generate S3 pre-signed URL with v4 signature using python boto3使用 python boto3 生成带有 v4 签名的 S3 预签名 URL
【发布时间】:2017-09-21 10:31:31
【问题描述】:

以下不起作用:

来自 boto 3 文档:

http://boto3.readthedocs.io/en/latest/guide/s3.html#generating-presigned-urls

这是我的带有占位符存储桶和键值的脚本:

import boto3
import requests
from botocore.client import Config

# Get the service client.
s3 = boto3.client('s3', config=Config(signature_version='s3v4'))

# Generate the URL to get 'key-name' from 'bucket-name'
url = s3.generate_presigned_url(
    ClientMethod='get_object',
    Params={
        'Bucket': 'mybucketname',
        'Key': 'myObject.txt'
    }
)

print url
response = requests.get(url)
print response

S3 以 403 响应:

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>B5681E888657E2A1</RequestId>
<HostId>
FMS7oPPOXt4I0KXPPQwdBx2fyxze+ussMmy/BOWLVFusWMoU2zAErE08ez34O6VhSYRvIYFm7Bs=
</HostId>
</Error>

【问题讨论】:

    标签: python amazon-s3


    【解决方案1】:

    您需要为您的 boto3 客户端提供 aws 凭据。 Docs here

    如果您需要帮助来访问您在 aws 上的凭据,您可以查看 here

    import boto3
    client = boto3.client(
        's3',
        aws_access_key_id=ACCESS_KEY,
        aws_secret_access_key=SECRET_KEY,
        aws_session_token=SESSION_TOKEN,
    )
    
    # Or via the Session
    session = boto3.Session(
        aws_access_key_id=ACCESS_KEY,
        aws_secret_access_key=SECRET_KEY,
        aws_session_token=SESSION_TOKEN,
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多