Standard 및 Express 워크플로를 사용하여 선택적 체크포인트 지정 수행 - AWS Step Functions

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

Standard 및 Express 워크플로를 사용하여 선택적 체크포인트 지정 수행

이 샘플 프로젝트는 선택적 체크포인트를 수행하는 모의 전자 상거래 워크플로를 실행하여 표준 및 Express 워크플로를 결합하는 방법을 보여줍니다. 이 샘플 프로젝트를 배포하면 표준 워크플로 상태 머신, 중첩된 Express Workflow 상태 머신, 그리고 AWS Lambda 함수, 아마존 심플 큐 서비스 (AmazonSQS) 큐, 아마존 심플 알림 서비스 (AmazonSNS) 주제.

Express 워크플로, 중첩된 워크플로 및 Step Functions 서비스 통합에 대한 자세한 내용은 다음을 참조하세요.

1단계: 상태 시스템 만들기 및 리소스 프로비저닝

  1. Step Functions 콘솔을 열고 상태 시스템 생성을 선택합니다.

  2. 검색 상자에 Selective checkpointing example을 입력한 다음 반환된 검색 결과에서 선택적 체크포인트 수행 예를 선택합니다.

  3. 다음을 선택하여 계속 진행합니다.

  4. 데모 실행을 선택하여 읽기 전용 및 ready-to-deploy 워크플로를 생성하거나 빌드 온을 선택하여 빌드하고 나중에 배포할 수 있는 편집 가능한 상태 시스템 정의를 생성합니다.

    이 샘플 프로젝트는 다음 리소스를 배포합니다.

    • 원래 요청 ping에 대한 AWS Lambda 함수

    • 아마존 SQS 대기열

    • 아마존 SNS 주제

    • 원래 요청 ping에 대한 AWS Step Functions 표준 유형의 스테이트 머신

    • Express 유형의 Step Functions 상태 시스템

    • 관련 AWS Identity and Access Management (IAM) 역할

    다음 이미지에서는 선택적 체크포인트 수행 예 샘플 프로젝트의 워크플로 그래프를 보여줍니다.

    선택적 체크포인트 수행 예 샘플 프로젝트의 워크플로 그래프입니다.
  5. 템플릿 사용을 선택하여 계속 선택합니다.

다음 단계는 이전 선택에 따라 달라집니다.

  1. 데모 실행 — 에서 배포한 리소스로 읽기 전용 프로젝트를 만들기 전에 상태 머신을 검토할 수 있습니다. AWS CloudFormation 다음 주소로 AWS 계정.

    상태 머신 정의를 볼 수 있으며 준비가 되면 Deploy and run을 선택하여 프로젝트를 배포하고 리소스를 생성할 수 있습니다.

    배포하는 데 리소스 및 권한을 생성하는 데 최대 10분이 걸릴 수 있습니다. Stack ID 링크를 사용하여 진행 상황을 모니터링할 수 있습니다. AWS CloudFormation.

    배포가 완료되면 콘솔에서 새 상태 머신을 확인할 수 있습니다.

  2. 기반 구축 — 워크플로 정의를 검토하고 편집할 수 있습니다. 사용자 지정 워크플로를 실행하기 전에 샘플 프로젝트에서 자리 표시자의 값을 설정해야 할 수도 있습니다.

참고

계정에 배포된 서비스에는 표준 요금이 적용될 수 있습니다.

샘플 프로젝트의 리소스를 배포한 후 다음을 수행합니다.

2단계: 상태 시스템 실행

  1. 상태 시스템 페이지에서 샘플 프로젝트를 선택합니다.

  2. 샘플 프로젝트 페이지에서 실행 시작을 선택합니다.

  3. 실행 시작 대화 상자에서 다음을 수행합니다.

    1. (선택 사항) 생성된 기본값을 재정의하려면 사용자 지정 실행 이름을 입력합니다.

      ASCII비이름 및 로깅

      Step Functions는 ASCII -자가 아닌 문자를 포함하는 상태 머신, 실행, 액티비티 및 레이블의 이름을 허용합니다. CloudWatchAmazon에서는 이러한 문자를 사용할 수 없으므로 지표를 추적할 수 있도록 ASCII 문자만 사용하는 것이 좋습니다 CloudWatch.

    2. (선택 사항) 입력 상자에 입력 값을 로 입력합니다JSON. 데모를 실행 중인 경우 이 단계를 건너뛸 수 있습니다.

    3. 실행 시작을 선택합니다.

    Step Functions 콘솔은 그래프 보기에서 상태를 선택하여 단계 세부 정보 창에서 관련 정보를 탐색할 수 있는 실행 세부 정보 페이지로 안내합니다.

  4. 로그 로그 그룹으로 이동하여 CloudWatch 로그를 살펴보세요. 로그 그룹 이름은 예시- ExpressLogGroup -와 같이 표시됩니다 wJalrXUtnFEMI.

상위 상태 머신 코드 예제(표준 워크플로)

이 샘플 프로젝트의 상태 머신은 Amazon SQSSNS, Amazon 및 Step Functions 익스프레스 워크플로우와 통합됩니다.

이 예제 상태 머신을 살펴보고 Step Functions가 Amazon SQS SNS 및 Amazon의 입력을 처리한 다음 중첩된 Express Workflow 상태 머신을 사용하여 백엔드 시스템을 업데이트하는 방법을 살펴보세요.

방법에 대한 자세한 내용은 AWS Step Functions 다른 사람을 제어할 수 있습니다. AWS 서비스, 참조Step Functions와 서비스 통합.

{ "Comment": "An example of combining standard and express workflows to run a mock e-commerce workflow that does selective checkpointing.", "StartAt": "Approve Order Request", "States": { "Approve Order Request": { "Type": "Task", "Resource": "arn:<PARTITION>:states:::sqs:sendMessage.waitForTaskToken", "Parameters": { "QueueUrl": "<SQS_QUEUE_URL>", "MessageBody": { "MessageTitle": "Order Request received. Pausing workflow to wait for manual approval. ", "TaskToken.$": "$$.Task.Token" } }, "Next": "Notify Order Success", "Catch": [ { "ErrorEquals": [ "States.ALL" ], "Next": "Notify Order Failure" } ] }, "Notify Order Success": { "Type": "Task", "Resource": "arn:<PARTITION>:states:::sns:publish", "Parameters": { "Message": "Order has been approved. Resuming workflow.", "TopicArn": "<SNS_ARN>" }, "Next": "Process Payment" }, "Notify Order Failure": { "Type": "Task", "Resource": "arn:<PARTITION>:states:::sns:publish", "Parameters": { "Message": "Order not approved. Order failed.", "TopicArn": "<SNS_ARN>" }, "End": true }, "Process Payment": { "Type": "Task", "Resource": "arn:<PARTITION>:states:::sqs:sendMessage.waitForTaskToken", "Parameters": { "QueueUrl": "<SQS_QUEUE_URL>", "MessageBody": { "MessageTitle": "Payment sent to third-party for processing. Pausing workflow to wait for response.", "TaskToken.$": "$$.Task.Token" } }, "Next": "Notify Payment Success", "Catch": [ { "ErrorEquals": [ "States.ALL" ], "Next": "Notify Payment Failure" } ] }, "Notify Payment Success": { "Type": "Task", "Resource": "arn:<PARTITION>:states:::sns:publish", "Parameters": { "Message": "Payment processing succeeded. Resuming workflow.", "TopicArn": "<SNS_ARN>" }, "Next": "Workflow to Update Backend Systems" }, "Notify Payment Failure": { "Type": "Task", "Resource": "arn:<PARTITION>:states:::sns:publish", "Parameters": { "Message": "Payment processing failed.", "TopicArn": "<SNS_ARN>" }, "End": true }, "Workflow to Update Backend Systems": { "Comment": "Starting an execution of an Express workflow to handle backend updates. Express workflows are fast and cost-effective for steps where checkpointing isn't required.", "Type": "Task", "Resource": "arn:<PARTITION>:states:::states:startExecution.sync", "Parameters": { "StateMachineArn": "<UPDATE_DATABASE_EXPRESS_STATE_MACHINE_ARN>", "Input": { "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" } }, "Next": "Ship the Package" }, "Ship the Package": { "Type": "Task", "Resource": "arn:<PARTITION>:states:::sns:publish", "Parameters": { "Message": "Order and payment received, database is updated and the package is ready to ship.", "TopicArn": "<SNS_ARN>" }, "End": true } } }

부모 스테이트 머신의 IAM 역할 예제

다음 예시 AWS Identity and Access Management 샘플 프로젝트에서 생성된 (IAM) 정책에는 상태 머신 및 관련 리소스를 실행하는 데 필요한 최소 권한이 포함됩니다. IAM정책에 필요한 권한만 포함하는 것이 좋습니다.

아마존 SNS 정책:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sns:Publish" ], "Resource": "arn:aws:sns:us-east-1:123456789012:Checkpoint-SNSTopic-wJalrXUtnFEMI", "Effect": "Allow" } ] }

아마존 SQS 정책:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sqs:SendMessage" ], "Resource": "arn:aws:sqs:us-east-1:123456789012:Checkpoint-SQSQueue-je7MtGbClwBF", "Effect": "Allow" } ] }

상태 실행 정책:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "states:StartExecution", "states:DescribeExecution", "states:StopExecution" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule", "Effect": "Allow" } ] }

중첩 상태 머신의 상태 머신 코드 예제(Express 워크플로)

이 샘플 프로젝트의 상태 머신은 상위 상태 머신에서 호출할 때 백엔드 정보를 업데이트합니다.

이 예제 상태 시스템을 살펴보고 Step Functions에서 모의 전자 상거래 백엔드 시스템의 여러 구성 요소를 업데이트하는 방법을 확인합니다.

방법에 대한 자세한 내용은 AWS Step Functions 다른 사람을 제어할 수 있습니다. AWS 서비스, 참조Step Functions와 서비스 통합.

선택적 체크포인트 수행 워크플로
{ "StartAt": "Update Order History", "States": { "Update Order History": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "Checkpoint-UpdateDatabaseLambdaFunction-wJalrXUtnFEMI", "Payload": { "Message": "Update order history." } }, "Next": "Update Data Warehouse" }, "Update Data Warehouse": { "Type" : "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "Checkpoint-UpdateDatabaseLambdaFunction-wJalrXUtnFEMI", "Payload": { "Message": "Update data warehouse." } }, "Next": "Update Customer Profile" }, "Update Customer Profile": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "Checkpoint-UpdateDatabaseLambdaFunction-wJalrXUtnFEMI", "Payload": { "Message": "Update customer profile." } }, "Next": "Update Inventory" }, "Update Inventory": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "Checkpoint-UpdateDatabaseLambdaFunction-wJalrXUtnFEMI", "Payload": { "Message": "Update inventory." } }, "End": true } } }

차일드 스테이트 머신의 IAM 역할 예제

이 예에서는 AWS Identity and Access Management 샘플 프로젝트에서 생성된 (IAM) 정책에는 상태 머신 및 관련 리소스를 실행하는 데 필요한 최소 권한이 포함됩니다. IAM정책에 필요한 권한만 포함하는 것이 좋습니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:Example-UpdateDatabaseLambdaFunction-wJalrXUtnFEMI" ], "Effect": "Allow" } ] }

다음 정책은 CloudWatch 로그에 대한 충분한 권한이 있는지 확인합니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": [ "*" ], "Effect": "Allow" } ] }

Step Functions를 다른 기능과 함께 사용할 IAM 때 구성하는 방법에 대한 자세한 내용은 AWS 서비스는 을 참조하십시오Step Functions가 통합 서비스를 위한 IAM 정책을 생성하는 방법.