Step Functions 워크플로APIs에서 타사 호출 - AWS Step Functions

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

Step Functions 워크플로APIs에서 타사 호출

HTTP 태스크는 워크플로에서 Salesforce 및 StripeAPI와 같은 퍼블릭 타사 를 호출할 수 있는 일종의 작업 워크플로 상태 상태입니다. 타사 를 호출하려면 arn:aws:states:::http:invoke 리소스와 함께 작업 상태를 API사용합니다. 그런 다음 API , 사용하려는 URL방법 및 인증 세부 정보와 같은 API 엔드포인트 구성 세부 정보를 제공합니다.

Workflow Studio를 사용하여 HTTP 태스크가 포함된 상태 시스템을 빌드하는 경우 Workflow Studio는 를 사용하여 실행 역할을 자동으로 생성합니다.IAM HTTP 태스크에 대한 정책입니다. 자세한 내용은 Workflow Studio에서 HTTP 작업을 테스트하기 위한 역할 단원을 참조하십시오.

HTTP 작업 정의

ASL 정의http:invoke 리소스가 있는 HTTP 태스크를 나타냅니다. 다음 HTTP 작업 정의는 모든 고객 목록을 반환API하는 Stripe를 호출합니다.

"Call third-party API": { "Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": { "ApiEndpoint": "https://api.stripe.com/v1/customers", "Authentication": { "ConnectionArn": "arn:aws:events:us-east-2:123456789012:connection/Stripe/81210c42-8af1-456b-9c4a-6ff02fc664ac" }, "Method": "GET" }, "End": true }

HTTP 작업 필드

HTTP 태스크의 정의에는 다음 필드가 포함됩니다.

Resource(필수)

작업 유형 을 지정하려면 Resource 필드에 ARN를 입력합니다. HTTP 태스크의 경우 다음과 같이 Resource 필드를 지정합니다.

"Resource": "arn:aws:states:::http:invoke"
Parameters(필수)

에는 호출API하려는 타사에 대한 정보를 제공하는 ApiEndpointMethod, 및 ConnectionArn 필드가 포함되어 있습니다. 에는 Headers 및 와 같은 선택적 필드Parameters도 포함되어 있습니다QueryParameters.

Parameters 필드에서와 같이 정적 JSON 및 JsonPath 구문의 조합을 지정할 수 Parameters 있습니다. 자세한 내용은 Step API Functions에서 서비스에 파라미터 전달하기 단원을 참조하십시오.

ApiEndpoint(필수)

호출API하려는 타사URL의 를 지정합니다. 에 쿼리 파라미터를 추가하려면 QueryParameters 필드를 URL사용합니다. 다음 예제에서는 Stripe을 호출API하여 모든 고객 목록을 가져오는 방법을 보여줍니다.

"ApiEndpoint":"https://api.stripe.com/v1/customers"

구문을 사용하여 참조 경로를 지정하여 타사 JsonPath 가 포함된 JSON 노드를 선택할 수도 있습니다APIURL. 예를 들어 특정 고객 ID를 APIs 사용하여 Stripe의 를 호출하려고 한다고 가정해 보겠습니다. 다음 상태 입력을 제공했다고 생각해 보세요.

{ "customer_id": "1234567890", "name": "John Doe" }

Stripe 를 사용하여 이 고객 ID의 세부 정보를 검색하려면 다음 예제와 ApiEndpoint 같이 를 API지정합니다. 이 예제에서는 내장 함수와 참조 경로를 사용합니다.

"ApiEndpoint.$":"States.Format('https://api.stripe.com/v1/customers/{}', $.customer_id)"

런타임 시 Step Functions는 다음처럼 ApiEndpoint 값을 확인합니다.

https://api.stripe.com/v1/customers/1234567890
Method(필수)

타사 를 호출하는 데 사용할 HTTP 메서드를 지정합니다API. HTTP 태스크에서 GET, , , POST, DELETE, PUTPATCHOPTIONS, 또는 방법 중 하나를 지정할 수 있습니다HEAD.

예를 들어 GET 메서드를 사용하려면 다음과 같이 Method 필드를 지정합니다.

"Method": "GET"

참조 경로를 사용하여 런타임에 메서드를 지정할 수도 있습니다. 예: "Method.$": "$.myHTTPMethod".

Authentication(필수)

타사 API 호출을 인증하는 방법을 지정하는 ConnectionArn 필드가 포함되어 있습니다.Step Functions 는 의 연결 리소스를 ApiEndpoint 사용하여 지정된 에 대한 인증을 지원합니다.Amazon EventBridge.

ConnectionArn(필수)

를 지정합니다.EventBridge 연결 ARN.

HTTP 태스크에는 API 공급자의 인증 자격 증명을 안전하게 관리하는 EventBridge 연결 이 필요합니다. 연결은 타사 에 권한을 부여하는 데 사용할 권한 부여 유형과 자격 증명을 지정합니다API. 연결을 사용하면 API 키와 같은 하드 코딩 보안 암호가 상태 시스템 정의에 포함되지 않도록 할 수 있습니다. 연결 시 Headers, QueryParameters, RequestBody 파라미터를 지정할 수도 있습니다.

EventBridge 연결을 생성할 때 인증 세부 정보를 제공합니다. HTTP 태스크에 대한 인증 작동 방식에 대한 자세한 내용은 섹션을 참조하세요HTTP 태스크에 대한 인증.

다음 예제에서는 HTTP 작업 정의에서 Authentication 필드를 지정하는 방법을 보여줍니다.

"Authentication": { "ConnectionArn": "arn:aws:events:us-east-2:123456789012:connection/Stripe/81210c42-8af1-456b-9c4a-6ff02fc664ac" }
Headers(선택 사항)

API 엔드포인트에 추가 컨텍스트 및 메타데이터를 제공합니다. 헤더를 문자열 또는 JSON 배열로 지정할 수 있습니다.

에서 헤더를 지정할 수 있습니다.EventBridge 연결 및 HTTP 작업의 Headers 필드. Headers 필드에 API 공급자에 대한 인증 세부 정보를 포함하지 않는 것이 좋습니다. 이러한 세부 정보를 에 포함하는 것이 좋습니다.EventBridge 연결.

Step Functions 에서 지정하는 헤더를 추가합니다.EventBridge HTTP 작업 정의에서 지정한 헤더에 대한 연결입니다. 정의 및 연결에 동일한 헤더 키가 있는 경우 Step Functions 는 에 지정된 해당 값을 사용합니다.EventBridge 해당 헤더에 대한 연결입니다. 방법에 대한 자세한 내용은 Step Functions 는 데이터 병합을 수행합니다. 섹션을 참조하세요병합 EventBridge 연결 및 HTTP 태스크 정의 데이터.

다음 예제에서는 타사 API 호출에 포함될 헤더를 지정합니다content-type.

"Headers": { "content-type": "application/json" }

참조 경로를 사용하여 런타임에 헤더를 지정할 수도 있습니다. 예: "Headers.$": "$.myHTTPHeaders".

Step Functions 는 User-Agent, RangeHost 헤더를 설정합니다.Step Functions 는 호출API하려는 를 기반으로 Host 헤더의 값을 설정합니다. 다음은 이러한 헤더 값의 예제입니다.

User-Agent: Amazon|StepFunctions|HttpInvoke|us-east-1, Range: bytes=0-262144, Host: api.stripe.com

HTTP 작업 정의에는 다음 헤더를 사용할 수 없습니다. 이러한 헤더를 사용하는 경우 HTTP 작업 실패 시 States.Runtime 오류가 발생합니다.

  • A-IM

  • Accept-Charset

  • Accept-Datetime

  • Accept-Encoding

  • Cache-Control

  • 연결

  • Content-Encoding

  • 콘텐츠-MD5

  • 날짜

  • Expect

  • 전달됨

  • From

  • Host

  • HTTP2-설정

  • If-Match

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Max-Forwards

  • 오리진(Origin)

  • Pragma

  • Proxy-Authorization

  • 참조자

  • Server

  • TE

  • 트레일러

  • Transfer-Encoding

  • 업그레이드

  • Via

  • 경고

  • x-forwarded-*

  • x-amz-*

  • x-amzn-*

QueryParameters(선택 사항)

의 끝에 키-값 페어를 삽입합니다APIURL. 쿼리 파라미터를 문자열, JSON 배열 또는 JSON 객체로 지정할 수 있습니다.Step Functions URL-서드 파티 를 호출할 때 쿼리 파라미터를 자동으로 인코딩합니다API.

예를 들어 Stripe를 호출API하여 미국 달러()로 트랜잭션을 수행하는 고객을 검색한다고 가정해 보겠습니다USD. 다음 QueryParameters를 상태 입력으로 제공했다고 생각해 보세요.

"QueryParameters": { "currency": "usd" }

런타임 시 Step Functions는 다음과 API URL 같이 QueryParameters에 를 추가합니다.

https://api.stripe.com/v1/customers/search?currency=usd

참조 경로를 사용하여 런타임에 쿼리 파라미터를 지정할 수도 있습니다. 예: "QueryParameters.$": "$.myQueryParameters".

에서 쿼리 파라미터를 지정한 경우 EventBridge 연결,Step Functions 는 이러한 쿼리 파라미터를 HTTP 작업 정의에서 지정한 쿼리 파라미터에 추가합니다. 정의 및 연결에 동일한 쿼리 파라미터 키가 있는 경우 Step Functions 는 에 지정된 해당 값을 사용합니다.EventBridge 해당 헤더에 대한 연결입니다. 방법에 대한 자세한 내용은 Step Functions 는 데이터 병합을 수행합니다. 섹션을 참조하세요병합 EventBridge 연결 및 HTTP 태스크 정의 데이터.

Transform(선택 사항)

RequestBodyEncodingRequestEncodingOptions 필드를 포함합니다. 기본적으로 Step Functions 는 요청 본문을 API 엔드포인트에 JSON 데이터로 전송합니다.

API 공급자가 form-urlencoded 요청 본문을 수락하는 경우 Transform 필드를 사용하여 요청 본문에 대한 URL인코딩을 지정합니다. 또한 content-type 헤더를 로 지정해야 합니다application/x-www-form-urlencoded.Step Functions 그런 다음 요청 본문을 자동으로 URL인코딩합니다.

RequestBodyEncoding

요청 본문의 URL인코딩을 지정합니다. NONE 또는 URL_ENCODED 값 중 하나를 지정할 수 있습니다.

  • NONE - HTTP 요청 본문은 RequestBody 필드JSON의 직렬화됩니다. 이것이 기본값입니다.

  • URL_ENCODED URL- HTTP 요청 본문은 RequestBody 필드의 인코딩된 형식 데이터입니다.

RequestEncodingOptions

RequestBodyEncodingURL_ENCODED로 설정한 경우 요청 본문의 배열에 사용할 인코딩 옵션을 결정합니다.

Step Functions 는 다음 배열 인코딩 옵션을 지원합니다. 이러한 옵션에 대한 자세한 정보와 예제는 요청 본문에 적용 URL- 인코딩 섹션을 참조하세요.

  • INDICES - 배열 요소의 인덱스 값을 사용하여 배열을 인코딩합니다. 기본적으로 Step Functions 는 이 인코딩 옵션을 사용합니다.

  • REPEAT - 배열의 각 항목에서 키를 반복합니다.

  • COMMAS - 키의 모든 값을 쉼표로 구분된 값 목록으로 인코딩합니다.

  • BRACKETS - 배열의 각 항목에서 키를 반복하고 키에 대괄호([])를 추가하여 배열임을 나타냅니다.

다음 예제에서는 요청 본문 데이터에 대한 URL인코딩을 설정합니다. 또한 요청 본문의 배열에 COMMAS 인코딩 옵션을 사용하도록 지정합니다.

"Transform": { "RequestBodyEncoding": "URL_ENCODED", "RequestEncodingOptions": { "ArrayFormat": "COMMAS" } }
RequestBody(선택 사항)

상태 입력에 제공하는 JSON 데이터를 수락합니다. 에서 정적 JSON 및 JsonPath 구문의 조합을 지정할 RequestBody수 있습니다. 예를 들어 다음 상태 입력을 제공한다고 가정해 봅니다.

{ "CardNumber": "1234567890", "ExpiryDate": "09/25" }

런타임에 요청 본문ExpiryDate에서 CardNumber 및 의 이러한 값을 사용하려면 요청 본문에서 다음 JSON 데이터를 지정할 수 있습니다.

"RequestBody": { "Card": { "Number.$": "$.CardNumber", "Expiry.$": "$.ExpiryDate", "Name": "John Doe", "Address": "123 Any Street, Any Town, USA" } }

호출API하려는 타사에 form-urlencoded 요청 본문이 필요한 경우 요청 본문 데이터에 URL-인코딩을 지정해야 합니다. 자세한 내용은 요청 본문에 적용 URL- 인코딩 단원을 참조하십시오.

HTTP 태스크에 대한 인증

HTTP 태스크에는 API 공급자의 인증 자격 증명을 안전하게 관리하는 EventBridge 연결 이 필요합니다. 연결은 타사 에 권한을 부여하는 데 사용할 권한 부여 유형과 자격 증명을 지정합니다API. 연결을 사용하면 API 키와 같은 하드 코딩 보안 암호가 상태 시스템 정의에 포함되지 않도록 할 수 있습니다. EventBridge 연결은 기본, OAuth및 API 키 권한 부여 체계를 지원합니다.

EventBridge 연결을 생성할 때 인증 세부 정보를 제공합니다. 를 사용하여 권한 부여에 필요한 헤더, 본문 및 쿼리 파라미터를 포함할 수도 있습니다API. 타사 를 호출하는 모든 HTTP 태스크ARN에 연결을 포함해야 합니다API.

연결을 생성하고 권한 부여 파라미터를 추가하면 는 에서 보안 암호를 EventBridge 생성합니다 AWS Secrets Manager. 이 보안 암호에서 는 연결 및 권한 부여 파라미터를 암호화된 형식으로 EventBridge 저장합니다. 연결을 성공적으로 생성하거나 업데이트하려면 Secrets Manager를 사용할 권한이 AWS 계정 있는 를 사용해야 합니다. 에 대한 자세한 내용은 IAM 상태 시스템이 EventBridge 연결에 액세스하는 데 필요한 권한은 섹션을 참조하세요IAM HTTP 태스크를 실행할 수 있는 권한.

다음 이미지는 방법을 보여줍니다.Step Functions 를 사용하여 타사 API 호출에 대한 인증을 처리합니다.EventBridge 연결. 는 EventBridge 타사 API 공급자의 보안 인증을 관리하는 연결입니다.EventBridge 에서 보안 암호 생성 Secrets Manager 를 사용하여 연결 및 권한 부여 파라미터를 암호화된 형식으로 저장합니다.

Step Functions가 HTTP 엔드포인트에 대한 호출에 EventBridge 연결을 사용하는 방법을 보여주는 다이어그램입니다.

병합 EventBridge 연결 및 HTTP 태스크 정의 데이터

HTTP 태스크를 호출할 때 에서 데이터를 지정할 수 있습니다.EventBridge 연결 및 HTTP 작업 정의. 이 데이터에는Headers, QueryParameters, RequestBody 파라미터가 포함됩니다. 서드 파티 를 호출하기 전에 APIStep Functions는 요청 본문이 문자열이고 연결 본문 파라미터가 비어 있지 않은 경우를 제외하고 모든 경우에 요청 본문을 연결 본문 파라미터와 병합합니다. 이 경우 States.Runtime 오류가 발생하여 HTTP 작업이 실패합니다.

HTTP 작업 정의 및 에 중복 키가 지정된 경우 EventBridge 연결,Step Functions 는 HTTP 태스크의 값을 연결의 값으로 덮어씁니다.

다음 목록은 방법을 설명합니다.Step Functions 는 타사 를 호출하기 전에 데이터를 병합합니다API.

  • 헤더 - Step Functions 는 연결에서 지정한 모든 헤더를 HTTP 작업 Headers 필드의 헤더에 추가합니다. 헤더 키 간에 충돌이 있는 경우 Step Functions 는 해당 헤더에 대해 연결에 지정된 값을 사용합니다. 예를 들어, content-type HTTP 작업 정의와 EventBridge 연결,Step Functions 는 연결에 지정된 content-type 헤더 값을 사용합니다.

  • 쿼리 파라미터 - Step Functions 는 연결에서 지정한 모든 쿼리 파라미터를 HTTP 작업 QueryParameters 필드의 쿼리 파라미터에 추가합니다. 쿼리 파라미터 키 간에 충돌이 있는 경우 Step Functions 는 해당 쿼리 파라미터에 대해 연결에 지정된 값을 사용합니다. 예를 들어 maxItems HTTP 작업 정의와 EventBridge 연결,Step Functions 는 연결에 지정된 maxItems 쿼리 파라미터 값을 사용합니다.

  • 본문 파라미터

    • Step Functions 는 연결에 지정된 요청 본문 값을 HTTP 태스크 RequestBody 필드의 요청 본문에 추가합니다. 요청 본문 키 간에 충돌이 있는 경우 Step Functions 는 요청 본문의 연결에 지정된 값을 사용합니다. 예를 들어 HTTP 작업 정의와 RequestBody 의 에 Mode 필드를 지정했다고 가정해 보겠습니다.EventBridge 연결.Step Functions 는 연결에서 지정한 Mode 필드 값을 사용합니다.

    • 요청 본문을 JSON 객체 대신 문자열로 지정하고 EventBridge 연결에는 요청 본문도 포함되며,Step Functions 는 이 두 위치에 지정된 요청 본문을 병합할 수 없습니다. States.Runtime 오류가 있는 HTTP 태스크에 실패합니다.

    Step Functions 는 모든 변환을 적용하고 요청 본문의 병합을 완료한 후 요청 본문을 직렬화합니다.

다음 예제에서는 HTTP 작업 및 HeadersQueryParameters, 및 RequestBody 필드를 설정합니다.EventBridge 연결.

HTTP 태스크 정의

{ "Comment": "Data merging example for HTTP Task and EventBridge connection", "StartAt": "ListCustomers", "States": { "ListCustomers": { "Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": { "Authentication": { "ConnectionArn": "arn:aws:events:us-east-1:123456789012:connection/Example/81210c42-8af1-456b-9c4a-6ff02fc664ac" }, "ApiEndpoint": "https:/example.com/path", "Method": "GET", "Headers": { "Request-Id": "my_request_id", "Header-Param": "state_machine_header_param" }, "RequestBody": { "Job": "Software Engineer", "Company": "AnyCompany", "BodyParam": "state_machine_body_param" }, "QueryParameters": { "QueryParam": "state_machine_query_param" } } } } }

EventBridge 연결

{ "AuthorizationType": "API_KEY", "AuthParameters": { "ApiKeyAuthParameters": { "ApiKeyName": "ApiKey", "ApiKeyValue": "key_value" }, "InvocationHttpParameters": { "BodyParameters": [ { "Key": "BodyParam", "Value": "connection_body_param" } ], "HeaderParameters": [ { "Key": "Header-Param", "Value": "connection_header_param" } ], "QueryStringParameters": [ { "Key": "QueryParam", "Value": "connection_query_param" } ] } } }

이 예제에서는 중복 키가 HTTP 태스크 및 EventBridge 연결. 따라서 Step Functions 는 HTTP 태스크의 값을 연결의 값으로 덮어씁니다. 다음 코드 조각은 다음과 같은 HTTP 요청을 보여줍니다.Step Functions 는 타사 로 전송합니다API.

POST /path?QueryParam=connection_query_param HTTP/1.1 Apikey: key_value Content-Length: 79 Content-Type: application/json; charset=UTF-8 Header-Param: connection_header_param Host: example.com Range: bytes=0-262144 Request-Id: my_request_id User-Agent: Amazon|StepFunctions|HttpInvoke|us-east-1 {"Job":"Software Engineer","Company":"AnyCompany","BodyParam":"connection_body_param"}

요청 본문에 적용 URL- 인코딩

기본적으로 Step Functions 는 요청 본문을 API 엔드포인트에 JSON 데이터로 전송합니다. 타사 API 공급자에 form-urlencoded 요청 본문이 필요한 경우 요청 본문에 URL-인코딩을 지정해야 합니다.Step Functions 그런 다음 선택한 URL인코딩 옵션을 기반으로 요청 본문을 자동으로 URL인코딩합니다.

Transform 필드를 사용하여 URL-인코딩을 지정합니다. 이 필드에는 요청 본문에 URL인코딩을 적용할지 여부를 지정하는 RequestBodyEncoding 필드가 포함되어 있습니다. RequestBodyEncoding 필드를 지정하면 Step Functions 는 타사 를 호출하기 전에 JSON 요청 본문을 form-urlencoded 요청 본문으로 변환합니다API. URL인코딩된 데이터를 수락APIs하면 content-type 헤더가 예상application/x-www-form-urlencoded되므로 content-type 헤더를 로 지정해야 합니다.

요청 본문에서 배열을 인코딩하려면 Step Functions 는 다음 배열 인코딩 옵션을 제공합니다.

  • INDICES - 배열의 각 항목에서 키를 반복하고 키에 대괄호([])를 추가하여 배열임을 나타냅니다. 이 대괄호에는 배열 요소의 인덱스가 포함됩니다. 인덱스를 추가하면 배열 요소의 순서를 지정하는 데 도움이 됩니다. 기본적으로 Step Functions 는 이 인코딩 옵션을 사용합니다.

    예를 들어 요청 본문에 다음 배열이 포함된 경우를 알아봅니다.

    {"array": ["a","b","c","d"]}

    Step Functions 는 이 배열을 다음 문자열에 인코딩합니다.

    array[0]=a&array[1]=b&array[2]=c&array[3]=d
  • REPEAT - 배열의 각 항목에서 키를 반복합니다.

    예를 들어 요청 본문에 다음 배열이 포함된 경우를 알아봅니다.

    {"array": ["a","b","c","d"]}

    Step Functions 는 이 배열을 다음 문자열에 인코딩합니다.

    array=a&array=b&array=c&array=d
  • COMMAS - 키의 모든 값을 쉼표로 구분된 값 목록으로 인코딩합니다.

    예를 들어 요청 본문에 다음 배열이 포함된 경우를 알아봅니다.

    {"array": ["a","b","c","d"]}

    Step Functions 는 이 배열을 다음 문자열에 인코딩합니다.

    array=a,b,c,d
  • BRACKETS - 배열의 각 항목에서 키를 반복하고 키에 대괄호([])를 추가하여 배열임을 나타냅니다.

    예를 들어 요청 본문에 다음 배열이 포함된 경우를 알아봅니다.

    {"array": ["a","b","c","d"]}

    Step Functions 는 이 배열을 다음 문자열에 인코딩합니다.

    array[]=a&array[]=b&array[]=c&array[]=d

IAM HTTP 태스크를 실행할 수 있는 권한

HTTP 태스크가 타사 를 호출하려면 상태 시스템 실행 역할에 states:InvokeHTTPEndpoint, events:RetrieveConnectionCredentialssecretsmanager:GetSecretValue, 및 secretsmanager:DescribeSecret 권한이 있어야 합니다API. 다음 IAM 정책 예제에서는 Stripe를 호출하는 데 필요한 최소 권한을 상태 시스템 역할에 부여합니다APIs. 또한 이 IAM 정책은 Secrets Manager에 저장된 이 EventBridge 연결의 보안 암호를 포함하여 상태 시스템 역할에 특정 연결에 액세스할 수 있는 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": "states:InvokeHTTPEndpoint", "Resource": "arn:aws:states:us-east-2:123456789012:stateMachine:myStateMachine", "Condition": { "StringEquals": { "states:HTTPMethod": "GET" }, "StringLike": { "states:HTTPEndpoint": "https://api.stripe.com/*" } } }, { "Sid": "Statement2", "Effect": "Allow", "Action": [ "events:RetrieveConnectionCredentials", ], "Resource": "arn:aws:events:us-east-2:123456789012:connection/oauth_connection/aeabd89e-d39c-4181-9486-9fe03e6f286a" }, { "Sid": "Statement3", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": "arn:aws:secretsmanager:*:*:secret:events!connection/*" } ] }

HTTP 작업 예제

다음 상태 시스템 정의는 Headers, QueryParametersTransform, 및 RequestBody 파라미터를 포함하는 HTTP 태스크를 보여줍니다. HTTP 작업은 Stripe API, https://api.stripe.com/v1/invoices를 호출하여 송장을 생성합니다. HTTP 또한 작업은 URL인코딩 옵션을 사용하여 요청 본문에 대한 INDICES 인코딩을 지정합니다.

를 생성했는지 확인합니다.EventBridge 연결. 다음 예제는 BASIC 인증 유형을 사용하여 생성된 연결을 보여줍니다.

{ "Type": "BASIC", "AuthParameters": { "BasicAuthParameters": { "Password": "myPassword", "Username": "myUsername" }, } }

를 교체해야 합니다.italicized 리소스별 정보가 포함된 텍스트입니다.

{ "Comment": "A state machine that uses HTTP Task", "StartAt": "CreateInvoiceAPI", "States": { "CreateInvoiceAPI": { "Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": { "ApiEndpoint": "https://api.stripe.com/v1/invoices", "Method": "POST", "Authentication": { "ConnectionArn": ""arn:aws:events:us-east-2:123456789012:connection/Stripe/81210c42-8af1-456b-9c4a-6ff02fc664ac" }, "Headers": { "Content-Type": "application/x-www-form-urlencoded" }, "RequestBody": { "customer.$": "$.customer_id", "description": "Monthly subscription", "metadata": { "order_details": "monthly report data" } }, "Transform": { "RequestBodyEncoding": "URL_ENCODED", "RequestEncodingOptions": { "ArrayFormat": "INDICES" } } }, "Retry": [ { "ErrorEquals": [ "States.Http.StatusCode.429", "States.Http.StatusCode.503", "States.Http.StatusCode.504", "States.Http.StatusCode.502" ], "BackoffRate": 2, "IntervalSeconds": 1, "MaxAttempts": 3, "JitterStrategy": "FULL" } ], "Catch": [ { "ErrorEquals": [ "States.Http.StatusCode.404", "States.Http.StatusCode.400", "States.Http.StatusCode.401", "States.Http.StatusCode.409", "States.Http.StatusCode.500" ], "Comment": "Handle all non 200 ", "Next": "HandleInvoiceFailure" } ], "End": true } } }

이 상태 머신을 실행하려면 다음 예제와 같이 고객 ID를 입력합니다.

{ "customer_id": "1234567890" }

다음 예제는 다음과 같은 HTTP 요청을 보여줍니다.Step Functions 는 Stripe 로 전송합니다API.

POST /v1/invoices HTTP/1.1 Authorization: Basic <base64 of username and password> Content-Type: application/x-www-form-urlencoded Host: api.stripe.com Range: bytes=0-262144 Transfer-Encoding: chunked User-Agent: Amazon|StepFunctions|HttpInvoke|us-east-1 description=Monthly%20subscription&metadata%5Border_details%5D=monthly%20report%20data&customer=1234567890

HTTP 작업 테스트

콘솔, SDK또는 를 TestState API 통해 를 사용하여 HTTP 태스크를 테스트 AWS CLI 할 수 있습니다. 다음 절차에서는 에서 TestState API를 사용하는 방법을 설명합니다.Step Functions 콘솔. HTTP 태스크가 예상대로 작동할 때까지 API 요청, 응답 및 인증 세부 정보를 반복적으로 테스트할 수 있습니다.

에서 HTTP 태스크 상태 테스트 Step Functions 콘솔
  1. Step Functions 콘솔을 엽니다.

  2. 상태 시스템 생성을 선택하여 상태 시스템 생성을 시작하거나 HTTP 작업이 포함된 기존 상태 시스템을 선택합니다.

    기존 상태 머신에서 태스크를 테스트하는 경우 4단계를 참조하세요.

  3. Workflow Studio디자인 모드의 에서 HTTP 작업을 시각적으로 구성합니다. 또는 코드 모드를 선택하여 로컬 개발 환경에서 상태 머신 정의를 복사하여 붙여넣을 수 있습니다.

  4. 디자인 모드인 Workflow Studio의 검사기 패널 패널에서 테스트 상태를 선택합니다.

  5. 테스트 상태 대화 상자에서 다음을 수행합니다.

    1. 실행 역할에서 상태를 테스트할 실행 역할을 선택합니다. HTTP 작업에 대한 충분한 권한이 있는 역할이 없는 경우 Workflow Studio에서 HTTP 작업을 테스트하기 위한 역할을 참조하여 역할을 생성합니다.

    2. (선택 사항) 선택한 상태에 테스트에 필요한 JSON 입력을 제공합니다.

    3. 검사 수준 의 경우 의 기본 선택을 유지합니다INFO. 이 수준은 API 통화 상태와 상태 출력을 보여줍니다. 이는 API 응답을 빠르게 확인하는 데 유용합니다.

    4. 테스트 시작을 선택합니다.

    5. 테스트가 성공하면 상태 출력이 테스트 상태 대화 상자 오른쪽에 나타납니다. 테스트가 실패하면 오류가 나타납니다.

      대화 상자의 상태 세부 정보 탭에서 상태 정의와 EventBridge 연결 .

    6. 검사 수준을 로 변경합니다TRACE. 이 수준은 원시 HTTP 요청 및 응답을 보여주며 헤더, 쿼리 파라미터 및 기타 API특정 세부 정보를 확인하는 데 유용합니다.

    7. 비밀 공개 확인란을 선택합니다. 와 함께 TRACE이 설정을 사용하면 EventBridge API 키와 같은 연결 삽입. 는 IAM 콘솔에 액세스하는 데 사용하는 사용자 자격 증명에는 states:RevealSecrets 작업을 수행할 수 있는 권한이 있어야 합니다. 이 권한이 없으면 Step Functions 는 테스트를 시작할 때 액세스 거부 오류를 발생시킵니다. 의 예 IAM states:RevealSecrets 권한을 설정하는 정책은 섹션을 참조하세요IAM 사용 권한 TestState API.

      다음 이미지는 성공하는 HTTP 작업에 대한 테스트를 보여줍니다. 이 상태에 대한 검사 수준은 로 설정됩니다TRACE. 다음 이미지의 HTTP 요청 및 응답 탭은 서드 파티 API 호출의 결과를 보여줍니다.

      TRACE 수준에 대한 테스트에 성공하는 선택한 상태의 출력입니다.
    8. 테스트 시작을 선택합니다.

    9. 테스트가 성공하면 HTTP 요청 및 응답 탭에서 HTTP 세부 정보를 볼 수 있습니다.

지원되지 않는 HTTP 태스크 응답

반환된 응답에 대해 다음 조건 중 하나가 true인 경우 States.Runtime 오류와 함께 HTTP 작업이 실패합니다.

  • 응답에는 application/octet-stream, image/*, video/*, audio/*의 콘텐츠 유형 헤더가 포함되어 있습니다.

  • 응답은 유효한 문자열로 읽을 수 없습니다. 이진 데이터 또는 이미지 데이터를 예로 들 수 있습니다.