Amazon SWF에 대한 HTTP 요청 만들기 - Amazon Simple Workflow Service

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

Amazon SWF에 대한 HTTP 요청 만들기

AWS SDK 중 하나를 사용하지 않는 경우 POST 요청 메서드를 사용하여 HTTP를 통해 Amazon Simple Workflow Service(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 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 서명 계산 단원을 참조하십시오.

    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 본문

HTTP 요청의 본문에는 HTTP 요청의 헤더에 지정한 작업의 데이터가 포함되며, JSON 데이터 형식을 사용하여 데이터 값과 데이터 구조를 동시에 표현합니다. 괄호 표기를 사용하여 요소를 다른 요소 안에 중첩할 수 있습니다. 예를 들어, 다음은 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에서는 이러한 값을 무시합니다.