AWS Step Functions 작업 참조 호출 - AWS CodePipeline

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

AWS Step Functions 작업 참조 호출

다음을 수행하는 AWS CodePipeline 작업입니다.

  • 파이프라인에서 AWS Step Functions 스테이트 머신 실행을 시작합니다.

  • 작업 구성의 속성이나 입력으로 전달할 파이프라인 아티팩트에 있는 파일을 통해 상태 시스템에 초기 상태를 제공합니다.

  • 선택적으로 작업에서 시작된 실행을 식별하기 위한 실행 ID 접두사를 설정합니다.

  • Standard 및 Express 상태 시스템을 지원합니다.

참고

Step Functions 작업은 Lambda에서 실행되므로 Lambda 함수의 아티팩트 크기 할당량과 동일한 아티팩트 크기 할당량이 있습니다. 자세한 내용은 Lambda 개발자 안내서의 Lambda 할당량을 참조하십시오.

작업 유형

  • 범주: Invoke

  • 소유자: AWS

  • 공급자: StepFunctions

  • 버전: 1

구성 파라미터

StateMachineArn

필수 여부: 예

호출할 상태 머신의 Amazon 리소스 이름 (ARN).

ExecutionNamePrefix

필수 여부: 아니요

기본적으로 작업 실행 ID는 상태 시스템 실행 이름으로 사용됩니다. 접두사가 제공되면 작업 실행 ID 앞에 하이픈이 추가되고 상태 시스템 실행 이름으로 함께 사용됩니다.

myPrefix-1624a1d1-3699-43f0-8e1e-6bafd7fde791

express 상태 시스템의 경우 이름에는 0-9, A-Z, a-z, - 및 _만 포함해야 합니다.

InputType

필수 여부: 아니요

  • 리터럴(기본값): 지정되면 입력 필드의 값이 상태 시스템 입력으로 직접 전달됩니다.

    리터럴을 선택한 경우의 입력 필드 예제 항목:

    {"action": "test"}
  • FilePath: Input 필드에 지정된 입력 아티팩트에 있는 파일의 내용은 스테이트 머신 실행을 위한 입력으로 사용됩니다. 로 설정된 경우 입력 InputType아티팩트가 필요합니다. FilePath

    선택한 FilePath경우의 입력 필드 입력 예제:

    assets/input.json
Input

필수 항목 여부: 조건부

  • 리터럴: InputType리터럴 (기본값) 으로 설정된 경우 이 필드는 선택사항입니다.

    제공되는 경우 입력 필드는 상태 시스템 실행의 입력으로 직접 사용됩니다. 그렇지 않으면 빈 개체와 함께 상태 머신이 호출됩니다. JSON {}

  • FilePath: 로 설정된 FilePath경우 이 필드는 필수입니다. InputType

    FilePath설정된 경우에도 입력 아티팩트가 필요합니다. InputType

    지정된 입력 아티팩트의 파일 내용은 상태 시스템 실행을 위한 입력으로 사용됩니다.

입력 아티팩트

  • 아티팩트 수: 0 to 1

  • 설명:FilePath설정된 경우 InputType이 아티팩트는 필수이며 스테이트 머신 실행을 위한 입력을 소싱하는 데 사용됩니다.

출력 아티팩트

  • 아티팩트 수: 0 to 1

  • 설명:

    • Standard 상태 시스템: 제공되는 경우 출력 아티팩트가 상태 시스템의 출력으로 채워집니다. 이는 스테이트 머신 실행이 성공적으로 완료된 후 Step Functions DescribeExecution API 응답의 output 속성에서 가져옵니다.

    • Express 상태 시스템: 지원되지 않습니다.

출력 변수

이 작업은 파이프라인에서 다운스트림 작업의 작업 구성에서 참조할 수 있는 출력 변수를 생성합니다.

자세한 내용은 변수 레퍼런스 단원을 참조하십시오.

StateMachineArn

스테이트 머신의. ARN

ExecutionArn

스테이트 ARN 머신의 실행. Standard 상태 시스템에만 해당됩니다.

예제 작업 구성

기본 입력의 예

YAML
Name: ActionName ActionTypeId: Category: Invoke Owner: AWS Version: 1 Provider: StepFunctions OutputArtifacts: - Name: myOutputArtifact Configuration: StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine ExecutionNamePrefix: my-prefix
JSON
{ "Name": "ActionName", "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Version": 1, "Provider": "StepFunctions" }, "OutputArtifacts": [ { "Name": "myOutputArtifact" } ], "Configuration": { "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine", "ExecutionNamePrefix": "my-prefix" } }

리터럴 입력의 예

YAML
Name: ActionName ActionTypeId: Category: Invoke Owner: AWS Version: 1 Provider: StepFunctions OutputArtifacts: - Name: myOutputArtifact Configuration: StateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine ExecutionNamePrefix: my-prefix Input: '{"action": "test"}'
JSON
{ "Name": "ActionName", "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Version": 1, "Provider": "StepFunctions" }, "OutputArtifacts": [ { "Name": "myOutputArtifact" } ], "Configuration": { "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine", "ExecutionNamePrefix": "my-prefix", "Input": "{\"action\": \"test\"}" } }

입력 파일의 예

YAML
Name: ActionName InputArtifacts: - Name: myInputArtifact ActionTypeId: Category: Invoke Owner: AWS Version: 1 Provider: StepFunctions OutputArtifacts: - Name: myOutputArtifact Configuration: StateMachineArn: 'arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine' ExecutionNamePrefix: my-prefix InputType: FilePath Input: assets/input.json
JSON
{ "Name": "ActionName", "InputArtifacts": [ { "Name": "myInputArtifact" } ], "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Version": 1, "Provider": "StepFunctions" }, "OutputArtifacts": [ { "Name": "myOutputArtifact" } ], "Configuration": { "StateMachineArn": "arn:aws:states:us-east-1:111122223333:stateMachine:HelloWorld-StateMachine", "ExecutionNamePrefix": "my-prefix", "InputType": "FilePath", "Input": "assets/input.json" } }

동작

릴리스 중에는 작업 컨피그레이션에 지정된 입력을 사용하여 구성된 상태 머신을 CodePipeline 실행합니다.

Literal로 설정하면 입력 작업 구성 필드의 내용이 상태 머신의 입력으로 사용됩니다. InputType 리터럴 입력이 제공되지 않는 경우 스테이트 머신 실행은 빈 JSON 객체를 사용합니다. {} 입력 없이 스테이트 머신 실행을 실행하는 방법에 대한 자세한 내용은 Step Functions를 참조하십시오 StartExecutionAPI.

InputType가 로 FilePath설정된 경우 액션은 입력 아티팩트의 압축을 풀고 입력 작업 구성 필드에 지정된 파일의 내용을 상태 머신의 입력으로 사용합니다. 를 지정하는 경우 FilePath입력 필드가 필수이고 입력 아티팩트가 있어야 합니다. 그렇지 않으면 작업이 실패합니다.

성공적인 시작 실행 후, 동작은 두 가지 상태 시스템 유형인 standardexpress에 대해 분기됩니다.

Standard 상태 시스템

표준 스테이트 머신 실행이 성공적으로 시작된 경우 실행이 터미널 상태에 도달할 DescribeExecution API 때까지 를 CodePipeline 폴링합니다. 실행이 성공적으로 완료되면 작업이 성공하고 그렇지 않으면 실패합니다.

출력 아티팩트가 구성되면 아티팩트는 상태 시스템의 반환 값을 포함합니다. 이는 스테이트 머신 실행이 성공적으로 완료된 후 Step Functions DescribeExecution API 응답의 output 속성에서 가져옵니다. 여기에는 출력 길이 제약이 적용된다는 점에 유의하십시오. API

오류 처리

  • 작업이 상태 시스템 실행을 시작하지 못하면 작업 실행이 실패합니다.

  • CodePipeline Step Functions 작업이 제한 시간 (기본값 7일) 에 도달하기 전에 상태 시스템 실행이 터미널 상태에 도달하지 못하면 작업 실행이 실패합니다. 이렇게 실패해도 상태 시스템이 계속될 수 있습니다. Step Functions의 상태 시스템 실행 제한 시간에 대한 자세한 내용은 표준 워크플로와 Express 워크플로 비교를 참조하세요.

    참고

    작업이 있는 계정의 호출 작업 시간 제한에 대한 할당량 증가를 요청할 수 있습니다. 그러나 할당량 증가는 해당 계정의 모든 리전에서 이 유형의 모든 작업에 적용됩니다.

  • 스테이트 머신 실행이 터미널 상태 FAILEDOUT, TIMED _ 또는 ABORTED 에 도달하면 작업 실행이 실패합니다.

Express 상태 시스템

express 상태 시스템 실행이 성공적으로 시작되면 invoke 작업 실행이 성공적으로 완료됩니다.

express 상태 시스템에 대해 구성된 작업에 대한 고려 사항:

  • 출력 아티팩트를 지정할 수 없습니다.

  • 작업은 상태 시스템 실행이 완료될 때까지 기다리지 않습니다.

  • 에서 CodePipeline 작업 실행이 시작된 후에는 상태 시스템 실행이 실패하더라도 작업 실행은 성공합니다.

오류 처리

  • 스테이트 머신 실행을 시작하지 CodePipeline 못하면 액션 실행도 실패합니다. 그렇지 않으면 작업이 즉시 성공합니다. 상태 머신 실행이 완료되는 데 걸리는 시간이나 실행 결과에 CodePipeline 관계없이 작업이 성공합니다.

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.