기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Standard 및 Express 워크플로를 사용하여 선택적 체크포인트 지정 수행
이 샘플 프로젝트는 선택적 체크포인트를 수행하는 모의 전자 상거래 워크플로를 실행하여 표준 및 Express 워크플로를 결합하는 방법을 보여줍니다. 이 샘플 프로젝트를 배포하면 표준 워크플로 상태 머신, 중첩된 Express Workflow 상태 머신, 그리고 AWS Lambda 함수, 아마존 심플 큐 서비스 (AmazonSQS) 큐, 아마존 심플 알림 서비스 (AmazonSNS) 주제.
Express 워크플로, 중첩된 워크플로 및 Step Functions 서비스 통합에 대한 자세한 내용은 다음을 참조하세요.
1단계: 상태 시스템 만들기 및 리소스 프로비저닝
-
Step Functions 콘솔
을 열고 상태 시스템 생성을 선택합니다. -
검색 상자에
Selective checkpointing example
을 입력한 다음 반환된 검색 결과에서 선택적 체크포인트 수행 예를 선택합니다. -
다음을 선택하여 계속 진행합니다.
-
데모 실행을 선택하여 읽기 전용 및 ready-to-deploy 워크플로를 생성하거나 빌드 온을 선택하여 빌드하고 나중에 배포할 수 있는 편집 가능한 상태 시스템 정의를 생성합니다.
이 샘플 프로젝트는 다음 리소스를 배포합니다.
-
원래 요청 ping에 대한 AWS Lambda 함수
-
아마존 SQS 대기열
-
아마존 SNS 주제
-
원래 요청 ping에 대한 AWS Step Functions 표준 유형의 스테이트 머신
-
Express 유형의 Step Functions 상태 시스템
-
관련 AWS Identity and Access Management (IAM) 역할
다음 이미지에서는 선택적 체크포인트 수행 예 샘플 프로젝트의 워크플로 그래프를 보여줍니다.
-
-
템플릿 사용을 선택하여 계속 선택합니다.
다음 단계는 이전 선택에 따라 달라집니다.
-
데모 실행 — 에서 배포한 리소스로 읽기 전용 프로젝트를 만들기 전에 상태 머신을 검토할 수 있습니다. AWS CloudFormation 다음 주소로 AWS 계정.
상태 머신 정의를 볼 수 있으며 준비가 되면 Deploy and run을 선택하여 프로젝트를 배포하고 리소스를 생성할 수 있습니다.
배포하는 데 리소스 및 권한을 생성하는 데 최대 10분이 걸릴 수 있습니다. Stack ID 링크를 사용하여 진행 상황을 모니터링할 수 있습니다. AWS CloudFormation.
배포가 완료되면 콘솔에서 새 상태 머신을 확인할 수 있습니다.
-
기반 구축 — 워크플로 정의를 검토하고 편집할 수 있습니다. 사용자 지정 워크플로를 실행하기 전에 샘플 프로젝트에서 자리 표시자의 값을 설정해야 할 수도 있습니다.
참고
계정에 배포된 서비스에는 표준 요금이 적용될 수 있습니다.
샘플 프로젝트의 리소스를 배포한 후 다음을 수행합니다.
2단계: 상태 시스템 실행
-
상태 시스템 페이지에서 샘플 프로젝트를 선택합니다.
-
샘플 프로젝트 페이지에서 실행 시작을 선택합니다.
-
실행 시작 대화 상자에서 다음을 수행합니다.
-
(선택 사항) 생성된 기본값을 재정의하려면 사용자 지정 실행 이름을 입력합니다.
ASCII비이름 및 로깅
Step Functions는 ASCII -자가 아닌 문자를 포함하는 상태 머신, 실행, 액티비티 및 레이블의 이름을 허용합니다. CloudWatchAmazon에서는 이러한 문자를 사용할 수 없으므로 지표를 추적할 수 있도록 ASCII 문자만 사용하는 것이 좋습니다 CloudWatch.
-
(선택 사항) 입력 상자에 입력 값을 로 입력합니다JSON. 데모를 실행 중인 경우 이 단계를 건너뛸 수 있습니다.
-
실행 시작을 선택합니다.
Step Functions 콘솔은 그래프 보기에서 상태를 선택하여 단계 세부 정보 창에서 관련 정보를 탐색할 수 있는 실행 세부 정보 페이지로 안내합니다.
-
-
로그 로그 그룹으로 이동하여 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 정책을 생성하는 방법.