我收到一个错误AWS::S3::Errors::InvalidRequest The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.
当我尝试将文件上传到新法兰克福地区的 S3 存储桶时。一切正常US Standard
region.
Script:
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-sdk (1.56.0)
如何修复它?
谢谢。
AWS4-HMAC-SHA256,也称为签名版本 4(“V4”)是 S3 支持的两种身份验证方案之一。
所有区域都支持 V4,但支持美国标准1,并且许多(但不是全部)其他区域也支持其他较旧的方案,即签名版本 2(“V2”)。
根据http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html...2014 年 1 月之后部署的新 S3 区域将仅支持 V4。
由于法兰克福于 2014 年末推出,因此它不支持 V2,此错误表明您正在使用 V2。
http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html说明如何在各种 SDK 中启用 V4(假设您使用的 SDK 具有该功能)。
我推测某些旧版本的 SDK 可能不支持此选项,因此如果上述方法没有帮助,您可能需要正在使用的 SDK 的较新版本。
¹US Standard
是基于 S3 区域部署的旧名称us-east-1
地区。自从最初写下这个答案以来,“Amazon S3 将美国标准区域重命名为美国东部(弗吉尼亚北部)区域,以与 AWS 区域命名约定保持一致。” http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region出于所有实际目的,这只是命名上的更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)