Я пытаюсь получить доступ к простому сервису AWS IOT REST, но пока не смог. Вот что я сделал.
- Я создал пользователя iam в своем aws и загрузил ключ доступа и секретный ключ
- Авторизовался в AWS IOT с этим пользователем и создал "вещь"
- Из свойства вещи я нашел URL-адрес REST для тени
- Использовал почтальон с новой функцией «подпись aws» и предоставил ему ключ доступа, секретный ключ, регион (us-east-1) и имя службы (iot)
Пытался "ПОЛУЧИТЬ" конечную точку, и вот что я получил -
{ "message": "Credential should be scoped to correct service. ", "traceId": "be056198-d202-455f-ab85-805defd1260d" }
Я подумал, что с почтальоном что-то не так, поэтому я попытался использовать пример aws-sdk-sample подключения к S3 и изменил его, чтобы подключиться к URL-адресу IOT. Вот мой фрагмент программы (Java)
String awsAccessKey = "fasfasfasdfsdafs"; String awsSecretKey = "asdfasdfasfasdfasdfasdf/asdfsdafsd/fsdafasdf"; URL endpointUrl = null; String regionName = "us-east-1"; try { endpointUrl = new URL("https://dasfsdfasdf.iot.us-east-1.amazonaws.com/things/SOMETHING/shadow"); }catch (Exception e){ e.printStackTrace(); } Map<String, String> headers = new HashMap<String, String>(); headers.put("x-amz-content-sha256", AWSSignerBase.EMPTY_BODY_SHA256); AWSSignerForAuthorizationHeader signer = new AWSSignerForAuthorizationHeader( endpointUrl, "GET", "iot", regionName); String authorization = signer.computeSignature(headers, null, // no query parameters AWSSignerBase.EMPTY_BODY_SHA256, awsAccessKey, awsSecretKey); // place the computed signature into a formatted 'Authorization' header // and call S3 headers.put("Authorization", authorization); String response = HttpUtils.invokeHttpRequest(endpointUrl, "GET", headers, null); System.out.println("--------- Response content ---------"); System.out.println(response); System.out.println("------------------------------------");
Это дает мне ту же ошибку -
--------- Request headers ---------
x-amz-content-sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Authorization: AWS4-HMAC-SHA256 Credential=fasfasfasdfsdafs/20160212/us-east-1/iot/aws4_request, SignedHeaders=host;x-amz-content-sha256;x-amz-date, Signature=3b2194051a8dde8fe617219c78c2a79b77ec92338028e9e917a74e8307f4e914
x-amz-date: 20160212T182525Z
Host: dasfsdfasdf.iot.us-east-1.amazonaws.com
--------- Response content ---------
{"message":"Credential should be scoped to correct service. ","traceId":"cd3e0d96-82fa-4da5-a4e1-b736af6c5e34"}
------------------------------------
Кто-нибудь может сказать мне, что я делаю не так, пожалуйста? В документации AWS не так много информации об этой ошибке. Пожалуйста помоги