2017-01-13 4 views
0

Я использую awscli (S3 Api) для работы с некоторыми запросами с моим объектом softlayer objectstorage. Я могу получить список ведер, создать или удалить ведро. Когда я пытаюсь скопировать файл образца к определенному ведро, я получаю сообщение об ошибке: aws --endpoint-url=https://s3-api.us-geo.objectstorage.softlayer.net s3 cp test.txt s3://my_test_bucket/filesawscli, запрошенная подпись, которую мы вычислили, не соответствует подписи, которую вы указали.

Я получаю следующее сообщение об ошибке (проверено с обеих SDk APIs, питон boto3 API и wascli)

upload failed: ./test.txt to s3://my_test_bucket/test.txt An error occurred (SignatureDoesNotMatch) when calling the PutObject operation: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. For more information, see REST Authentication and SOAP Authentication for details.

ответ

1

Это странно - вы, кажется, используете правильный синтаксис. Как вы передаете свои учетные данные? Проще всего было бы в ~/.aws/credentials файл, который содержит:

[default] 
aws_access_key_id = {Access Key ID} 
aws_secret_access_key = {Secret Access Key} 

Если вы получаете ту же ошибку в различных инструментов/библиотек это, скорее всего, вопрос. Если вы правильно настроили свои учетные данные и все еще получаете проблему с подписью, нам нужно, возможно, сделать более глубокое погружение, чтобы выяснить, что происходит, потому что кажется, что вы ничего не делаете неправильно.

+0

Я использую в 'AWS configure' команды и EVN переменных (с помощью' SET VALUE = KEY'), я в состоянии перечислить все содержание моего ведра, но не могу загрузить – HoussemFat

+0

Ok, выглядит, как вы возможно, нашли дефект! Попробуйте войти в '~/.aws/config' и удалите все, что указывает регион, а затем попробуйте запустить команду еще раз. –

+1

Я тестировал его, но без решения. Я использую windows os, я увижу, связано ли это с os, потому что он отлично работает для obuntu os. в любом случае, спасибо. – HoussemFat

0

Причина, по которой вы получили сообщение об ошибке, может быть, версия подписи отличается.
IBM Cloud Storage Object, используя подпись версии 2, но версии по умолчанию является 4. http://docs.aws.amazon.com/general/latest/gr/signature-version-2.html

Я не уверен, как установить версию подписи на завиток и питона.
В SDK для Java вам необходимо установить подобное, иначе вы получите сообщение об ошибке.

AWSCredentialsProvider provider = loadCredentialProvider(); 

ClientConfiguration config = new ClientConfiguration(); 
config.withSignerOverride("S3SignerType"); 

// second arg region not needed 
EndpointConfiguration endpointConfiguration = 
     new EndpointConfiguration(us-geo.objectstorage.softlayer.net, ""); 

AmazonS3 cos = AmazonS3ClientBuilder.standard() 
     .withCredentials(provider) 
     .withClientConfiguration(config) 
     .withEndpointConfiguration(endpointConfiguration) 
     .build(); 
Смежные вопросы

 Смежные вопросы