我有以下代码来获取 presigned_url:
s3_client = boto3.client('s3', endpoint_url=AWS_ENDPOINT)
presigned_url = s3_client.generate_presigned_url('get_object',
Params={'Bucket': "my-bucket",
'Key':"my-key"},
ExpiresIn=expiration)
然后我使用以下命令上传文件
curl -v --upload-file my-key {presigned_url}
但我收到
AccessDenied
错误。我需要在 S3 存储桶上设置一些权限吗?在boto3下生成presigned_url时需要分配特殊权限吗?
您应该使用
generate_presigned_post
而不是 generate_presigned_url
。
get_object
一起使用,但也可以使用list_buckets
或get_bucket_location
。
generate_presigned_post:创建一个上传文件的URL。
在这里您可以看到一个工作示例:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html#generate-a-presigned-url-to-upload- a 文件