1. ホーム
  2. ruby

[解決済み] あなたが提供した認証メカニズムはサポートされていません。AWS4-HMAC-SHA256を使用してください。

2022-02-09 19:18:35

質問事項

エラーが発生する AWS::S3::Errors::InvalidRequest The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256. 新しいフランクフルト地域のS3バケットにファイルをアップロードしようとしたとき。全ては 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-sdk (1.56.0)

修正方法を教えてください。

ありがとうございました。

解決方法は?

AWS4-HMAC-SHA256, Signature Version 4, ("V4") は、S3がサポートする2つの認証スキームのうちの1つである。

すべてのリージョンでV4がサポートされていますが、US-Standard¹や他の多くのリージョン(すべてではありませんが)では、もう一つの古い方式であるSignature Version 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の新しいリリースが必要な場合があります。


¹ US Standard を拠点とするS3リージョナルデプロイメントの旧名称です。 us-east-1 リージョンになります。この回答が最初に書かれた時点から "アマゾンS3は、AWSの地域命名規則と一致させるために、USスタンダードリージョンをUSイースト(N.バージニア)リージョンに改名しました"。 実用上は、ネーミングの変更に過ぎない。