Der Autorisierungsmechanismus, den Sie bereitgestellt haben, wird nicht unterstützt. Bitte verwenden Sie AWS4-HMAC-SHA256
Bekomme ich eine Fehlermeldung AWS::S3::Errors::InvalidRequest The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.
wenn ich versuche, eine Datei hochladen, um S3-bucket, in der neuen region Frankfurt. Alles funktioniert einwandfrei mit US Standard
region.
Skript:
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)
Wie es zu lösen ist?
Danke.
InformationsquelleAutor der Frage Alexey | 2014-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
AWS4-HMAC-SHA256, auch bekannt als Signatur, Version 4, ("V4") ist eine von zwei authentifizierungsarten unterstützt von S3.
Allen Regionen zu unterstützen, V4, aber UNS-Standard1, und vielen-aber nicht allen-anderen Regionen unterstützen auch die anderen, älteren Schema, Unterschrift Version 2 ("V2").
Laut http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html ... neue S3-Regionen bereitgestellt, die nach Januar, 2014 wird nur support V4.
Seit Frankfurt wurde eingeführt spät im Jahr 2014, es unterstützt nicht die V2, die ist, was dieser Fehler deutet Sie verwenden.
http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html erklärt, wie Sie zu aktivieren V4 in den verschiedenen SDKs, vorausgesetzt, Sie verwenden ein SDK, das über diese Funktionalität verfügt.
Ich würde spekulieren, dass einige ältere Versionen des SDKs möglicherweise nicht unterstützt diese option, so dass, wenn die oben nicht hilft, müssen Sie möglicherweise eine neuere Version des SDK, die Sie verwenden.
1
US Standard
ist der frühere name für den S3-regionale Bereitstellung ist in derus-east-1
region. Seit der Zeit dieser Antwort wurde ursprünglich geschrieben,die "Amazon S3 umbenannt, der US-Standard Region US East (N. Virginia) Region, um die Konsistenz mit AWS regionale Namenskonventionen." Für alle praktischen Zwecke, es ist nur eine änderung in der Namensgebung.
InformationsquelleAutor der Antwort Michael - sqlbot
Mit Knoten, versuchen
InformationsquelleAutor der Antwort morris4
Sollten Sie
signatureVersion: 'v4'
imconfig
Nutzung der neuen Schild-version:Werke für
JS
sdk.InformationsquelleAutor der Antwort Denis Rizun
Für Menschen mit
boto3
(Python SDK
) verwenden Sie den code untenInformationsquelleAutor der Antwort Penkey Suresh
Ähnliches Problem mit der PHP-SDK, das funktioniert:
$s3Client = S3Client::factory(array('key'=>YOUR_AWS_KEY, 'secret'=>YOUR_AWS_SECRET, 'signature' => 'v4', 'region'=>'eu-central-1'));
Der wichtige Teil ist die
signature
und dieregion
InformationsquelleAutor der Antwort Pascal
In Java hatte ich, um eine Immobilie
hinzufügen und die region um die s3Client Instanz.
InformationsquelleAutor der Antwort GameScripting
Für thumbor-aws, das verwendet boto config, die ich brauchte, um das
$AWS_CONFIG_FILE
Also alles, was verwendet boto direkt ohne Veränderungen, das kann nützlich sein,
InformationsquelleAutor der Antwort higuita
Für Android SDK, setEndpoint löst das problem, obwohl es schon veraltet.
InformationsquelleAutor der Antwort Ian Darke
Mit boto3, das ist der code :
und
InformationsquelleAutor der Antwort Benoit