如果使用AWS SDK版本2生成AWS S3预签名URL时出现"access denied"权限问题,请注意在生成URL时添加所需的HTTP方法和存储桶名称。以下是一个示例Python代码段,展示了如何使用AWS SDK版本2生成签名URL并设置相应的HTTP方法和存储桶名称来解决此问题。
import boto3
s3_client = boto3.client('s3')
bucket_name = 'my-bucket'
object_key = 'my-object'
http_verb = 'GET' # or 'PUT'
expiration = 3600
response = s3_client.generate_presigned_url(
'get_object' if http_verb == 'GET' else 'put_object',
Params={
'Bucket': bucket_name,
'Key': object_key
},
ExpiresIn=expiration
)
在上述代码中,http_verb
变量设置为GET
或PUT
以指示您要执行的操作类型。另外,确保bucket_name
和object_key
变量设置为相应的值。这个代码段将返回一个可用于执行请求的签名URL。