Membuat Permintaan HTTP ke Amazon SWF - Amazon Simple Workflow Service

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

Membuat Permintaan HTTP ke Amazon SWF

Jika Anda tidak menggunakan salah satu SDK AWS, Anda dapat melakukan operasi Amazon Simple Workflow Service (Amazon SWF) melalui HTTP menggunakan metode permintaan POST. Metode POST mengharuskan Anda menentukan operasi di header permintaan dan memberikan data untuk operasi dalam format JSON dalam isi permintaan.

Konten Header HTTP

Amazon SWF membutuhkan informasi berikut di header permintaan HTTP:

  • host Endpoint Amazon SWF.

  • x-amz-date Anda harus memberikan stempel waktu baik di header Date HTTP atau x-amz-date header AWS (beberapa pustaka klien HTTP tidak membiarkan Anda mengatur header Date). Saat header x-amz-date ada, sistem mengabaikan header Date saat mengautentikasi permintaan.

    Tanggal harus ditentukan dalam salah satu dari tiga format berikut, seperti yang ditentukan dalam HTTP/1.1 RFC:

    • Min, 06 Nov 1994 08:49:37 GMT (RFC 822, diperbarui oleh RFC 1123)

    • Min, 06-Nov-94 08:49:37 GMT (RFC 850, diusangkan oleh RFC 1036)

    • Sun 6 Nov 08:49:37 1994 (format asctime() ANSI C)

  • x-amzn-authorization Permintaan ditandatangani dalam format:

    AWS3 AWSAccessKeyId=####,Algorithm=HmacSHA256, [,SignedHeaders=Header1;Header2;...] Signature=S(StringToSign)

    AWS3 – Ini adalah tag khusus implementasi AWS yang menunjukkan versi autentikasi yang digunakan untuk menandatangani permintaan (saat ini, nilai ini untuk Amazon SWF selalu AWS3).

    AWSAccessKeyId – Access Key ID AWS Anda.

    Algorithm – Algoritme yang digunakan untuk membuat nilai HMAC-SHA dari string-to-sign, seperti HmacSHA256 atau HmacSHA1.

    Signature – Base64( Algoritme( StringToSign, SigningKey ) ). Untuk detail selengkapnya, lihat Menghitung Tanda Tangan HMAC-SHA untuk Amazon SWF

    SignedHeaders – (Opsional) Jika ada, harus berisi daftar semua header HTTP yang digunakan dalam perhitungan HttpHeaders Terkanonikalisasi. Satu karakter titik koma (;) (karakter ASCII 59) harus digunakan sebagai pembatas untuk nilai daftar.

  • x-amz-target – Layanan tujuan dari permintaan dan operasi untuk data, dalam format

    com.amazonaws.swf.service.model.SimpleWorkflowService. + <action>

    Sebagai contoh, com.amazonaws.swf.service.model.SimpleWorkflowService.RegisterDomain

  • content-type – Jenis kebutuhan untuk menentukan JSON dan set karakter, sebagai application/json; charset=UTF-8

Berikut ini adalah contoh header untuk permintaan HTTP dalam pembuatan domain.

POST http://swf.us-east-1.amazonaws.com/ HTTP/1.1 Host: swf.us-east-1.amazonaws.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.25) Gecko/20111212 Firefox/3.6.25 ( .NET CLR 3.5.30729; .NET4.0E) Accept: application/json, text/javascript, */* Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Content-Type: application/json; charset=UTF-8 X-Requested-With: XMLHttpRequest X-Amz-Date: Fri, 13 Jan 2012 18:42:12 GMT X-Amz-Target: com.amazonaws.swf.service.model.SimpleWorkflowService.RegisterDomain Content-Encoding: amz-1.0 X-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,Algorithm=HmacSHA256,SignedHeaders=Host;X-Amz-Date;X-Amz-Target;Content-Encoding,Signature=tzjkF55lxAxPhzp/BRGFYQRQRq6CqrM254dTDE/EncI= Referer: http://swf.us-east-1.amazonaws.com/explorer/index.html Content-Length: 91 Pragma: no-cache Cache-Control: no-cache {"name": "867530902", "description": "music", "workflowExecutionRetentionPeriodInDays": "60"}

Berikut adalah contoh respons HTTP yang sepadan.

HTTP/1.1 200 OK Content-Length: 0 Content-Type: application/json x-amzn-RequestId: 4ec4ac3f-3e16-11e1-9b11-7182192d0b57

Konten Isi HTTP

Isi permintaan HTTP berisi data untuk operasi yang ditentukan dalam header permintaan HTTP. Gunakan format data JSON untuk menyampaikan nilai-nilai data dan struktur data, secara bersamaan. Elemen dapat bersarang dalam elemen lain menggunakan notasi braket. Misalnya, hal berikut menunjukkan permintaan untuk mencantumkan semua eksekusi alur kerja yang dimulai antara dua titik yang ditentukan dalam waktu—menggunakan notasi Waktu Unix.

{ "domain": "867530901", "startTimeFilter": { "oldestDate": 1325376070, "latestDate": 1356998399 }, "tagFilter": { "tag": "music purchase" } }

Sampel Permintaan dan Respon JSON Amazon SWF

Contoh berikut menunjukkan permintaan ke Amazon SWF untuk deskripsi domain yang kita buat sebelumnya. Kemudian contoh menunjukkan respon Amazon SWF.

Permintaan POST HTTP

POST http://swf.us-east-1.amazonaws.com/ HTTP/1.1 Host: swf.us-east-1.amazonaws.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.25) Gecko/20111212 Firefox/3.6.25 ( .NET CLR 3.5.30729; .NET4.0E) Accept: application/json, text/javascript, */* Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Content-Type: application/json; charset=UTF-8 X-Requested-With: XMLHttpRequest X-Amz-Date: Sun, 15 Jan 2012 03:13:33 GMT X-Amz-Target: com.amazonaws.swf.service.model.SimpleWorkflowService.DescribeDomain Content-Encoding: amz-1.0 X-Amzn-Authorization: AWS3 AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE,Algorithm=HmacSHA256,SignedHeaders=Host;X-Amz-Date;X-Amz-Target;Content-Encoding,Signature=IFJtq3M366CHqMlTpyqYqd9z0ChCoKDC5SCJBsLifu4= Referer: http://swf.us-east-1.amazonaws.com/explorer/index.html Content-Length: 21 Pragma: no-cache Cache-Control: no-cache {"name": "867530901"}

Respons Amazon SWF

HTTP/1.1 200 OK Content-Length: 137 Content-Type: application/json x-amzn-RequestId: e86a6779-3f26-11e1-9a27-0760db01a4a8 {"configuration": {"workflowExecutionRetentionPeriodInDays": "60"}, "domainInfo": {"description": "music", "name": "867530901", "status": "REGISTERED"} }

Perhatikan protokol (HTTP/1.1) diikuti dengan kode status (200). Sebuah nilai kode 200 menunjukkan operasi yang berhasil.

Amazon SWF tidak membuat serial nilai null. Jika parser JSON Anda diatur untuk membuat serial nilai null untuk permintaan, Amazon SWF mengabaikannya.