기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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하려는 타사에 대한 정보를 제공하는
ApiEndpoint
Method
, 및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
,Range
및Host
헤더를 설정합니다.Step Functions 는 호출API하려는 를 기반으로Host
헤더의 값을 설정합니다. 다음은 이러한 헤더 값의 예제입니다.User-Agent: Amazon|StepFunctions|HttpInvoke|
us-east-1
, Range: bytes=0-262144, Host: api.stripe.comHTTP 작업 정의에는 다음 헤더를 사용할 수 없습니다. 이러한 헤더를 사용하는 경우 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
(선택 사항)-
RequestBodyEncoding
및RequestEncodingOptions
필드를 포함합니다. 기본적으로 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
-
RequestBodyEncoding
을URL_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 를 사용하여 연결 및 권한 부여 파라미터를 암호화된 형식으로 저장합니다.
병합 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 작업 및 Headers
의 QueryParameters
, 및 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:RetrieveConnectionCredentials
secretsmanager: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
, QueryParameters
Transform
, 및 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 콘솔
-
Step Functions 콘솔
을 엽니다. -
상태 시스템 생성을 선택하여 상태 시스템 생성을 시작하거나 HTTP 작업이 포함된 기존 상태 시스템을 선택합니다.
기존 상태 머신에서 태스크를 테스트하는 경우 4단계를 참조하세요.
-
Workflow Studio디자인 모드의 에서 HTTP 작업을 시각적으로 구성합니다. 또는 코드 모드를 선택하여 로컬 개발 환경에서 상태 머신 정의를 복사하여 붙여넣을 수 있습니다.
-
디자인 모드인 Workflow Studio의 검사기 패널 패널에서 테스트 상태를 선택합니다.
-
테스트 상태 대화 상자에서 다음을 수행합니다.
-
실행 역할에서 상태를 테스트할 실행 역할을 선택합니다. HTTP 작업에 대한 충분한 권한이 있는 역할이 없는 경우 Workflow Studio에서 HTTP 작업을 테스트하기 위한 역할을 참조하여 역할을 생성합니다.
-
(선택 사항) 선택한 상태에 테스트에 필요한 JSON 입력을 제공합니다.
-
검사 수준 의 경우 의 기본 선택을 유지합니다INFO. 이 수준은 API 통화 상태와 상태 출력을 보여줍니다. 이는 API 응답을 빠르게 확인하는 데 유용합니다.
-
테스트 시작을 선택합니다.
-
테스트가 성공하면 상태 출력이 테스트 상태 대화 상자 오른쪽에 나타납니다. 테스트가 실패하면 오류가 나타납니다.
대화 상자의 상태 세부 정보 탭에서 상태 정의와 EventBridge 연결 .
-
검사 수준을 로 변경합니다TRACE. 이 수준은 원시 HTTP 요청 및 응답을 보여주며 헤더, 쿼리 파라미터 및 기타 API특정 세부 정보를 확인하는 데 유용합니다.
-
비밀 공개 확인란을 선택합니다. 와 함께 TRACE이 설정을 사용하면 EventBridge API 키와 같은 연결 삽입. 는 IAM 콘솔에 액세스하는 데 사용하는 사용자 자격 증명에는
states:RevealSecrets
작업을 수행할 수 있는 권한이 있어야 합니다. 이 권한이 없으면 Step Functions 는 테스트를 시작할 때 액세스 거부 오류를 발생시킵니다. 의 예 IAMstates:RevealSecrets
권한을 설정하는 정책은 섹션을 참조하세요IAM 사용 권한 TestState API.다음 이미지는 성공하는 HTTP 작업에 대한 테스트를 보여줍니다. 이 상태에 대한 검사 수준은 로 설정됩니다TRACE. 다음 이미지의 HTTP 요청 및 응답 탭은 서드 파티 API 호출의 결과를 보여줍니다.
-
테스트 시작을 선택합니다.
-
테스트가 성공하면 HTTP 요청 및 응답 탭에서 HTTP 세부 정보를 볼 수 있습니다.
-
지원되지 않는 HTTP 태스크 응답
반환된 응답에 대해 다음 조건 중 하나가 true인 경우 States.Runtime
오류와 함께 HTTP 작업이 실패합니다.
-
응답에는
application/octet-stream
,image/*
,video/*
,audio/*
의 콘텐츠 유형 헤더가 포함되어 있습니다. -
응답은 유효한 문자열로 읽을 수 없습니다. 이진 데이터 또는 이미지 데이터를 예로 들 수 있습니다.