Utilizzo della query API - Amazon MemoryDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo della query API

Parametri di query

HTTPLe richieste basate su query sono HTTP richieste che utilizzano il HTTP verbo GET or POST e un parametro Query denominato. Action

Ogni richiesta di query deve includere alcuni parametri comuni per gestire l'autenticazione e la selezione di un'azione.

Alcune operazioni accettano elenchi di parametri. Questi elenchi sono specificati usando l'annotazione param.n. Valori di n sono numeri interi a partire da 1.

Autenticazione delle richieste di query

È possibile inviare solo richieste di Query HTTPS ed è necessario includere una firma in ogni richiesta di Query. Questa sezione descrive come creare la firma. Il metodo descritto nella seguente procedura è noto come Signature Version 4.

Di seguito sono riportate le fasi di base utilizzate per l'autenticazione delle richieste in AWS. Ciò presuppone che tu sia registrato AWS e disponga di un ID chiave di accesso e di una chiave di accesso segreta.

Processo di autenticazione delle query
  1. Il mittente crea una richiesta a. AWS

  2. Il mittente calcola la firma della richiesta, un codice di autenticazione dei messaggi basato su Keyed-Hashing for Hash (HMAC) con una funzione hash SHA -1, come definito nella sezione successiva di questo argomento.

  3. Il mittente della richiesta invia i dati della richiesta, la firma e l'ID della chiave di accesso (l'identificatore della chiave di accesso segreta utilizzata) a. AWS

  4. AWS utilizza l'ID della chiave di accesso per cercare la chiave di accesso segreta.

  5. AWS genera una firma dai dati della richiesta e dalla chiave di accesso segreta utilizzando lo stesso algoritmo utilizzato per calcolare la firma nella richiesta.

  6. Se le firme corrispondono, la richiesta viene considerata autentica. Se il confronto non va a buon fine, la richiesta viene scartata e AWS invia una risposta di errore.

Nota

Se una richiesta contiene un parametro Timestamp, la firma calcolata per la richiesta scade 15 minuti dopo il relativo valore.

Se una richiesta contiene un parametro Expires, la firma scade in corrispondenza dell'ora specificata dal parametro Expires.

Per calcolare la firma della richiesta
  1. Creare la stringa di query in forma canonica necessaria successivamente durante questa procedura:

    1. Ordina i componenti della stringa di query UTF -8 in base al nome del parametro con un ordinamento naturale dei byte. I parametri possono provenire dal GET URI o dal POST corpo (quando Content-Type è application/). x-www-form-urlencoded

    2. URLcodifica il nome e i valori dei parametri secondo le seguenti regole:

      1. Non URL codificate nessuno dei caratteri non riservati definiti da 3986. RFC I caratteri non riservati sono A-Z, a-z, 0-9, trattino (-), trattino basso (_), punto (.) e tilde (~).

      2. Codificare con codifica percentuale tutti gli altri caratteri con %XY, dove X e Y sono caratteri esadecimali (0-9 e A-F maiuscole).

      3. Codifica percentuale estesa a UTF -8 caratteri nel formato %XY%ZA...

      4. Codificare con codifica percentuale il carattere di spazio come %20 (non utilizzare +, come negli schemi di codifica comuni).

    3. Separa i nomi dei parametri codificati dai relativi valori codificati con il segno di uguale (=) (ASCIIcarattere 61), anche se il valore del parametro è vuoto.

    4. Separate le coppie nome-valore con una e commerciale (&) (codice 38). ASCII

  2. Create la stringa da firmare secondo la seguente pseudo-grammatica ("\n" rappresenta una nuova riga). ASCII

    StringToSign = HTTPVerb + "\n" + ValueOfHostHeaderInLowercase + "\n" + HTTPRequestURI + "\n" + CanonicalizedQueryString <from the preceding step>

    Il HTTPRequestURI componente è il componente del percorso HTTP assoluto della stringa di query URI fino a, ma non include. Se HTTPRequestURI è vuoto, usa una barra (/).

  3. Calcola un valore RFC HMAC conforme a 2104 utilizzando la stringa appena creata, la chiave di accesso segreta come chiave SHA256 e/o SHA1 come algoritmo hash.

    Per ulteriori informazioni, consulta https://www.ietf. org/rfc/rfc2104.txt.

  4. Convertire il valore risultante in base64.

  5. Includere il valore come valore del parametro Signature nella richiesta.

Di seguito è riportata una richiesta di esempio (le interruzioni di riga sono aggiunte per chiarezza).

https://memory-db.us-east-1.amazonaws.com/ ?Action=DescribeClusters &ClusterName=myCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2021-01-01

Per la stringa di query precedente, si calcola la HMAC firma sulla stringa seguente.

GET\n memory-db.amazonaws.com\n Action=DescribeClusters &ClusterName=myCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2021-01-01 &X-Amz-Algorithm=Amazon4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE%2F20140523%2Fus-east-1%2Fmemorydb%2Faws4_request &X-Amz-Date=20210801T223649Z &X-Amz-SignedHeaders=content-type%3Bhost%3Buser-agent%3Bx-amz-content-sha256%3Bx-amz-date content-type: host:memory-db.us-east-1.amazonaws.com user-agent:ServicesAPICommand_Client x-amz-content-sha256: x-amz-date:

Il risultato è la richiesta firmata seguente.

https://memory-db.us-east-1.amazonaws.com/ ?Action=DescribeClusters &ClusterName=myCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2021-01-01 &X-Amz-Algorithm=Amazon4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20141201/us-east-1/memorydb/aws4_request &X-Amz-Date=20210801T223649Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=2877960fced9040b41b4feaca835fd5cfeb9264f768e6a0236c9143f915ffa56

Per informazioni dettagliate sul processo di firma e sul calcolo della firma della richiesta, consulta l'argomento Processo di firma Signature Version 4 e i relativi argomenti secondari.