Menggunakan kueri API - Amazon MemoryDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan kueri API

Parameter kueri

HTTPPermintaan berbasis kueri adalah HTTP permintaan yang menggunakan HTTP kata kerja GET atau POST dan parameter Query bernama. Action

Setiap permintaan Kueri harus menyertakan beberapa parameter umum untuk menangani autentikasi dan sejumlah tindakan pilihan.

Beberapa operasi mengambil daftar parameter. Daftar ini ditentukan menggunakan notasi param.n. Nilai n adalah bilangan bulat mulai dari 1.

Autentikasi permintaan Kueri

Anda hanya dapat mengirim permintaan Kueri HTTPS dan Anda harus menyertakan tanda tangan di setiap permintaan Kueri. Bagian ini menjelaskan cara membuat tanda tangan. Metode yang dijelaskan dalam prosedur berikut ini dikenal sebagai tanda tangan versi 4.

Berikut adalah langkah dasar yang digunakan untuk mengautentikasi permintaan ke AWS. Ini mengasumsikan Anda terdaftar AWS dan memiliki ID Kunci Akses dan Kunci Akses Rahasia.

Proses autentikasi kueri
  1. Pengirim membuat permintaan ke. AWS

  2. Pengirim menghitung tanda tangan permintaan, Keyed-Hashing untuk Kode Otentikasi Pesan Berbasis Hash (HMAC) dengan fungsi hash SHA -1, seperti yang didefinisikan di bagian berikutnya dari topik ini.

  3. Pengirim permintaan mengirimkan data permintaan, tanda tangan, dan ID Kunci Akses (pengenal kunci dari Kunci Akses Rahasia yang digunakan) ke. AWS

  4. AWS menggunakan ID Kunci Akses untuk mencari Kunci Akses Rahasia.

  5. AWS menghasilkan tanda tangan dari data permintaan dan Kunci Akses Rahasia menggunakan algoritma yang sama yang digunakan untuk menghitung tanda tangan dalam permintaan.

  6. Jika tanda tangan cocok, maka permintaan tersebut dianggap autentik. Jika perbandingan gagal, permintaan dibatalkan, dan AWS akan memberikan respons kesalahan.

catatan

Jika permintaan berisi parameter Timestamp, tanda tangan yang dihitung untuk permintaan akan berakhir masa berlakunya dalam 15 menit mengikuti nilainya.

Jika permintaan berisi parameter Expires, tanda tangan berakhir pada waktu yang ditentukan oleh parameter Expires.

Untuk menghitung tanda tangan permintaan
  1. Buat string kueri kanonikalisasi yang akan Anda butuhkan nanti dalam prosedur ini:

    1. Urutkan komponen string kueri UTF -8 berdasarkan nama parameter dengan urutan byte alami. Parameter dapat berasal dari GET URI atau dari POST tubuh (ketika Content-Type adalah x-www-form-urlencoded aplikasi/).

    2. URLmenyandikan nama parameter dan nilai sesuai dengan aturan berikut:

      1. Jangan URL menyandikan karakter tanpa pamrih yang didefinisikan RFC 3986. Karakter tanpa fungsi khusus ini adalah A-Z, a-z, 0-9, tanda hubung ( - ), garis bawah ( _ ), titik ( . ), dan tanda gelombang ( ~ ).

      2. Gunakan enkode persen pada semua karakter lain dengan %XY, di mana X dan Y adalah karakter hex 0-9 dan huruf besar A-F.

      3. Persen encode diperpanjang UTF -8 karakter dalam bentuk %XY%ZA...

      4. Gunakan enkode persen pada karakter spasi sebagai %20 (dan bukan +, seperti skema pengenkodean yang umum dilakukan).

    3. Pisahkan nama parameter yang dikodekan dari nilai yang dikodekan dengan tanda sama dengan (=) (ASCIIkarakter 61), bahkan jika nilai parameter kosong.

    4. Pisahkan pasangan nama-nilai dengan ampersand (&) (ASCIIkode 38).

  2. Buat string untuk ditandatangani sesuai dengan pseudo-grammar berikut ("\n" mewakili baris baru). ASCII

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

    HTTPRequestURIKomponen adalah komponen jalur HTTP absolut dari URI hingga, tetapi tidak termasuk, string kueri. Jika kosong, gunakan garis miring (/). HTTPRequestURI

  3. Hitung RFC 2104 yang sesuai HMAC dengan string yang baru saja Anda buat, Kunci Akses Rahasia Anda sebagai kunci, dan SHA256 atau SHA1 sebagai algoritma hash.

    Untuk informasi lebih lanjut, lihat https://www.ietf. org/rfc/rfc2104.txt.

  4. Konversikan nilai yang dihasilkan ke base64.

  5. Sertakan nilai sebagai nilai dari parameter Signature dalam permintaan.

Misalnya, berikut adalah permintaan sampel (baris baru ditambahkan untuk memperjelas).

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

Untuk string kueri sebelumnya, Anda akan menghitung HMAC tanda tangan di atas string berikut.

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:

Hasilnya adalah permintaan yang ditandatangani berikut.

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

Untuk informasi rinci tentang proses penandatanganan dan penghitungan tanda tangan permintaan, lihat topik Proses penandatanganan Versi Tanda Tangan 4 dan subtopiknya.