

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

# Amazon SWF に対する HTTP リクエストの実行
<a name="UsingJSON-swf"></a>

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

## HTTP ヘッダーの内容
<a name="HTTPHeader"></a>

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` - `HmacSHA256` や `HmacSHA1` など、署名対象の文字列の HMAC-SHA 値を作成するために使用されるアルゴリズム。

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

  `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 本文の内容
<a name="JSONschema"></a>

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

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

## Amazon SWF JSON のリクエストと応答のサンプル
<a name="JSONMajorExample"></a>

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

### HTTP POST リクエスト
<a name="http-post-request"></a>

```
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 応答
<a name="swf-response"></a>

```
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 ではそれらの値が無視されます。