Menggunakan API kueri - Amazon ElastiCache untuk Redis

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

Menggunakan API kueri

Parameter kueri

Permintaan berbasis Kueri HTTP adalah permintaan HTTP yang menggunakan HTTP verb GET atau POST dan parameter Query yang bernama Action.

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

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

Autentikasi permintaan Query

Anda hanya dapat mengirim permintaan Kueri melalui 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 ini adalah langkah dasar yang digunakan untuk memberikan autentikasi kepada AWS. Ini mengasumsikan Anda terdaftar dengan AWS dan memiliki Access Key ID dan Secret Access Key.

Proses Autentikasi Query
  1. Pengirim membangun permintaan ke AWS.

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

  3. Pengirim permintaan mengirimkan data permintaan, tanda tangan, dan Access Key ID (kunci-identifier dari Secret Access Key yang digunakan) untukAWS.

  4. AWS menggunakan Access Key ID untuk mencari Secret Access Key.

  5. AWS menghasilkan tanda tangan dari data permintaan dan Secret Access Key menggunakan algoritma yang sama dengan yang digunakan untuk menghitung tanda tangan pada permintaan.

  6. Jika tanda tangan cocok, maka permintaan tersebut dianggap otentik. Jika perbandingan gagal, maka permintaan dibuang, dan AWS menghasilkan respons kesalahan.

catatan

Jika permintaan berisi parameter Timestamp, tanda tangan yang dihitung untuk permintaan akan kedaluawrsa dalam 15 menit setelah 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 canonicalized yang Anda butuhkan nanti dalam prosedur ini:

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

    2. URL mengkodekan nama parameter dan nilainya sesuai dengan aturan berikut:

      1. Jangan melakukan enkode URL karakter unreserved apa pun yang didefiniskan RFC 3986. Karakter yang tidak dicadangkan adalah A-Z, a-z, 0-9, tanda hubung (-), garis bawah (_), titik (.), dan tilde (~).

      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. Gunakan enkode persen pada karakter UTF-8 yang diperluas dalam bentuk%XY%ZA...

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

    3. Pisahkan nama parameter yang dienkodekan dari nilai yang dienkodekan dengan tanda sama dengan (=) (karakter ASCII 61), meskipun jika nilai parameter itu kosong.

    4. Pisahkan pasangan nama-nilai dengan tanda ampersand (&) (kode ASCII 38).

  2. Buat string untuk menandatangani sesuai dengan pseudo-tata bahasa berikut (tanda ā€œ\ nā€ merupakan baris baru ASCII).

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

    Komponen HTTPRequestURI adalah komponen jalur absolut HTTP dari URI hingga, tapi tidak termasuk, string query. Jika HTTPRequestURI kosong, gunakan garis miring ke depan (/).

  3. Hitung HMAC sesuai RFC 2104 dengan string yang baru saja Anda buat, Secret Access Key Anda sebagai kunci, dan SHA256 atau SHA1 sebagai algoritma hash.

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

  4. Mengonversi nilai yang dihasilkan ke base64.

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

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

https://elasticache.us-west-2.amazonaws.com/ ?Action=DescribeCacheClusters &CacheClusterIdentifier=myCacheCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-12-01

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

GET\n elasticache.amazonaws.com\n Action=DescribeCacheClusters &CacheClusterIdentifier=myCacheCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-12-01 &X-Amz-Algorithm=&AWS;4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE%2F20140523%2Fus-west-2%2Felasticache%2Faws4_request &X-Amz-Date=20141201T223649Z &X-Amz-SignedHeaders=content-type%3Bhost%3Buser-agent%3Bx-amz-content-sha256%3Bx-amz-date content-type: host:elasticache.us-west-2.amazonaws.com user-agent:CacheServicesAPICommand_Client x-amz-content-sha256: x-amz-date:

Hasilnya adalah permintaan yang ditandatangani berikut.

https://elasticache.us-west-2.amazonaws.com/ ?Action=DescribeCacheClusters &CacheClusterIdentifier=myCacheCluster &SignatureMethod=HmacSHA256 &SignatureVersion=4 &Version=2014-12-01 &X-Amz-Algorithm=&AWS;4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20141201/us-west-2/elasticache/aws4_request &X-Amz-Date=20141201T223649Z &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 menghitung tanda tangan permintaan, lihat topik Proses Penandatanganan Tanda Tangan Versi 4 dan subtopiknya.