不支持您提供的授权机制。请使用AWS4-HMAC-SHA256

2024-06-09 12:40:56 发布

您现在位置:Python中文网/ 问答频道 /正文

当我尝试将文件上传到新法兰克福地区的S3 bucket时,出现了一个错误AWS::S3::Errors::InvalidRequest The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.。所有这些都可以在US Standard区域正常工作。

脚本:

backup_file = '/media/db-backup_for_dev/2014-10-23_02-00-07/slave_dump.sql.gz'
s3 = AWS::S3.new(
    access_key_id:     AMAZONS3['access_key_id'],
    secret_access_key: AMAZONS3['secret_access_key']
)

s3_bucket = s3.buckets['test-frankfurt']

# Folder and file name
s3_name = "database-backups-last20days/#{File.basename(File.dirname(backup_file))}_#{File.basename(backup_file)}"

file_obj = s3_bucket.objects[s3_name]
file_obj.write(file: backup_file)

aws软件开发工具包(1.56.0)

怎么解决?

谢谢你。


Tags: keynameawsidobjsecrets3bucket
3条回答

用node,试试

var s3 = new AWS.S3( {
    endpoint: 's3-eu-central-1.amazonaws.com',
    signatureVersion: 'v4',
    region: 'eu-central-1'
} );

AWS4-HMAC-SHA256,也称为签名版本4(“V4”),是S3支持的两个身份验证方案之一。

所有区域都支持V4,但美国标准1和许多(但不是所有)其他区域也支持另一个旧方案签名版本2(“V2”)。

根据http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html。。。2014年1月之后部署的新S3区域将只支持V4。

由于法兰克福是在2014年底推出的,它不支持V2,这就是这个错误表明您正在使用的。

http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html说明如何在各种SDK中启用V4,假设您使用的是具有此功能的SDK。

我推测一些老版本的SDK可能不支持这个选项,因此如果上面的方法不起作用,您可能需要使用一个新版本的SDK。


üUS Standard是基于us-east-1区域的S3区域部署的前一个名称。从最初写下这个答案的时候起, "Amazon S3 renamed the US Standard Region to the US East (N. Virginia) Region to be consistent with AWS regional naming conventions."实际上,这只是命名的改变。

您应该在config中设置signatureVersion: 'v4'以使用新的符号版本:

AWS.config.update({
    signatureVersion: 'v4'
});

适用于JSsdk。

相关问题 更多 >