当我尝试将文件上传到新法兰克福地区的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)
怎么解决?
谢谢你。
用node,试试
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'
以使用新的符号版本:适用于
JS
sdk。相关问题 更多 >
编程相关推荐