

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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 1036에 의해 폐기된 RFC 850)
  + Sun Nov 6 08:49:37 1994 (ANSI C's asctime() 형식)
+ `x-amzn-authorization`: 다음 형식의 서명된 요청 파라미터입니다.

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

  `AWS3` - 요청에 서명하는 데 사용되는 인증 버전을 나타내는 AWS 구현별 태그입니다(현재 Amazon SWF의 경우이 값은 항상 임`AWS3`).

  `AWSAccessKeyId` - AWS 액세스 키 ID입니다.

  `Algorithm` – 서명할 문자열의 HMAC-SHA 값(예: `HmacSHA256` 또는 `HmacSHA1`)을 생성하는 데 사용되는 알고리즘입니다.

  `Signature` – Base64[알고리즘(StringToSign, SigningKey)]. 자세한 내용은 [Amazon SWF에 대한 HMAC-SHA 서명 계산](HMACAuth-swf.md) 단원을 참조하십시오.

  `SignedHeaders` – (선택)이 헤더가 있는 경우, 규정화된 HttpHeaders 계산에 사용되는 모든 HTTP 헤더 목록을 포함해야 합니다. 세미콜론 문자(;)(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 데이터 형식을 사용하여 데이터 값과 데이터 구조를 동시에 표현합니다. 괄호 표기를 사용하여 요소를 다른 요소 안에 중첩할 수 있습니다. 예를 들어, 다음은 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에서는 이러한 값을 무시합니다.