Amazon SWF に対する HTTP リクエストの実行 - Amazon Simple Workflow Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon SWF に対する HTTP リクエストの実行

どの AWS SDK も使用しない場合は、POST リクエストメソッドを使用して、HTTP 経由で Amazon Simple Workflow Service (Amazon SWF) オペレーションを実行します。POST メソッドでは、リクエストのヘッダーでオペレーションを指定し、リクエストの本文に、オペレーションのデータを JSON 形式で入力します。

HTTP ヘッダーの内容

Amazon SWF では、HTTP リクエストのヘッダーに次の情報を入力する必要があります。

  • host Amazon SWF エンドポイント。

  • x-amz-date HTTP の Date ヘッダー、または AWS の x-amz-date header のどちらかにタイムスタンプを指定する必要があります (一部の HTTP クライアントライブラリでは、Date ヘッダーを設定できません)。x-amz-date ヘッダーがある場合、リクエストの認証時に Date ヘッダーは無視されます。

    日付は、HTTP/1.1 RFC で規定されている次の 3 つ形式のいずれかで指定する必要があります。

    • Sun, 06 Nov 1994 08:49:37 GMT (RFC 822、RFC 1123 により更新)

    • Sunday, 06-Nov-94 08:49:37 GMT (RFC 850、RFC 1036 により廃止)

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

  • x-amzn-authorization 形式の署名付きリクエストパラメータ。

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

    AWS3 - リクエストに署名するために使用される認証バージョンを示す AWS 実装固有のタグです (現在、Amazon SWF の場合、この値は常に AWS3 です)。

    AWSAccessKeyId – お客様の AWS アクセスキー ID。

    Algorithm - HmacSHA256HmacSHA1 など、署名対象の文字列の HMAC-SHA 値を作成するために使用されるアルゴリズム。

    Signature - Base64 (アルゴリズム (StringToSign、SigningKey)。詳細については、「Amazon SWF の HMAC-SHA 署名の生成」を参照してください。

    SignedHeaders - (オプション) 存在する場合、正規化された HttpHeaders 計算で使用されるすべての HTTP ヘッダーのリストを含める必要があります。1 つのセミコロンの文字 (;) (ASCII 文字 59) をリスト値の区切り文字として使用する必要があります。

  • x-amz-target - 次の形式で指定する、リクエストの送信先サービスおよびデータのオペレーション

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

    例えば、com.amazonaws.swf.service.model.SimpleWorkflowService.RegisterDomain などです。

  • content-type - タイプは JSON に、文字セットは application/json; charset=UTF-8 に指定する必要があります。

次に、ドメインを作成する 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: 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"}

以下に、対応する HTTP レスポンスの例を示します。

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

HTTP 本文の内容

HTTP リクエストの本文には、HTTP リクエストのヘッダーで指定されたオペレーションのデータが含まれます。JSON データ形式を使用すると、データ値とデータ構造を同時に送信できます。エレメントは、ブラケット表記を使用することで他のエレメント内にネストすることができます。次の例では、指定された 2 つのポイント間で開始されたすべてのワークフローの実行を、Unix Time 表記を使用して一覧表示するリクエストを示しています。

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

Amazon SWF JSON のリクエストと応答のサンプル

次の例は、以前に作成したドメインの説明についての Amazon SWF へのリクエストを示しています。次に、Amazon SWF 応答が表示されます。

HTTP POST リクエスト

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"}

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"} }

プロトコル (HTTP/1.1) の後にステータスコード (200) が付いていることに注意してください。コードの値 200 は、オペレーションが成功したことを示します。

Amazon SWF は null 値をシリアル化しません。JSON パーサーをリクエストに対する null 値をシリアル化するように設定している場合、Amazon SWF ではそれらの値が無視されます。