Sto tentando di accedere a un semplice servizio AWS IOT REST ma non sono ancora riuscito a farlo. Ecco cosa ho fatto.AWS IOT - Le credenziali devono avere un ambito per correggere il servizio
- ho creato un utente iam nei miei AWS e scaricato la chiave di accesso e la chiave segreta
- Collegato in AWS IOT con quell'utente e ha creato una "cosa"
- Dalla proprietà della cosa che ho trovato l'URL REST per l'ombra
- Utilizzato postino con la nuova funzione "AWS firma" e fornito con la chiave di accesso, chiave segreta, regione (us-est-1) e il nome del servizio (IOT)
cercato di "GET" l'endpoint e questo è quello che ho ottenuto -
{ "message": "Credential should be scoped to correct service. ", "traceId": "be056198-d202-455f-ab85-805defd1260d" }
ho pensato che c'è qualcosa di sbagliato con il postino così ho provato ad utilizzare ad esempio AWS-sdk-campione di connessione a S3 e cambiato per collegarsi all'URL IOT. Ecco il mio programma di frammento (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("------------------------------------");
Questo mi dà lo stesso errore -
--------- 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"}
------------------------------------
Qualcuno può dirmi che cosa sto facendo male per favore? La documentazione di AWS non ha molte informazioni su questo errore. Please help
hai risolto il problema? Sto con lo stesso problema –
qui – MeV