Menggunakan API kueri - Amazon ElastiCache (Redis) OSS

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 verb GET atau POST dan parameter Kueri 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 integer yang dimulai dari 1.

Autentikasi permintaan Kueri

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 telah terdaftar dengan AWS dan memiliki ID Kunci Aksed dan Kunci Akses Rahasia.

Proses autentikasi Query
  1. Pengirim membangun permintaan ke AWS.

  2. Pengirim menghitung tanda tangan permintaan, Hashing Berkunci 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 ID Kunci Akses (pengidentifikasi 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 dengan yang digunakan untuk menghitung tanda tangan pada 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 kedaluwarsa dalam 15 menit setelah nilai yang tertera.

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 pengurutan byte alami. Parameter dapat berasal dari GET URI atau dari isi POST (jika Content-Type adalah application/x-www-form-urlencoded).

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

      1. Jangan mengodekan URL karakter tanpa syarat apa pun yang didefinisikan RFC 3986. Karakter tanpa syarat tersebut adalah A-Z, a-z, 0-9, tanda hubung (-), garis bawah (_), titik (.), dan tilde (~).

      2. Tanda persen mengodekan semua karaktern lain dengan %XY, yang mana X dan Y adalah karakter hex 0-9 dan kapital A-F.

      3. Tanda persen mengodekan karakter UTF-8 yang diperluas dalam format %XY%ZA....

      4. Tanda persen mengodekan karakter spasi sebagai %20 (dan bukan + seperti skema pengodean umum).

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

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

  2. Buat string untuk menandatangani sesuai dengan pseudo-tata bahasa berikut (tanda ā€œ\nā€ berarti 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 kueri. Jika HTTPRequestURI kosong, gunakan garis miring depan ( / ).

  3. Hitung HMAC yang sesuai RFC 2104 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 ini adalah contoh permintaan (jeda baris ditambahkan agar jelas).

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

Untuk kueri string 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 penghitungan tanda tangan permintaan, lihat topik Proses Penandatanganan Tanda Tangan Versi 4 dan subtopiknya.