기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Step Functions에서 AWS Systems Manager 자동화 작업을 동기적으로 실행 AWS Step Functions
작성자: Elie El khoury(AWS)
요약
이 패턴은 AWS Step Functions 와를 통합하는 방법을 설명합니다 AWS Systems Manager. AWS SDK 서비스 통합을 사용하여 상태 시스템 워크플로의 작업 토큰으로 Systems Manager startAutomationExecution API를 호출하고 토큰이 성공 또는 실패 호출로 반환될 때까지 일시 중지합니다. 통합을 보여주기 위해이 패턴은 AWS-RunShellScript
또는 문서 주위에 자동화 AWS-RunPowerShellScript
문서(런북) 래퍼를 구현하고를 사용하여 AWS-RunShellScript
또는 .waitForTaskToken
를 동기식으로 호출합니다AWS-RunPowerShellScript
. Step Functions의 AWS SDK 서비스 통합에 대한 자세한 내용은 AWS Step Functions 개발자 안내서를 참조하세요.
Step Functions는 분산 애플리케이션을 구축하고, IT 및 비즈니스 프로세스를 자동화하고, 서비스를 사용하여 데이터 및 기계 학습 파이프라인을 구축하는 데 사용할 수 있는 로우코드 시각적 워크플로 AWS 서비스입니다. 워크플로는 장애, 재시도, 병렬화, 서비스 통합 및 관찰성을 관리하므로 더 중요한 비즈니스 로직에 집중할 수 있습니다.
의 기능인 Automation은 Amazon Elastic Compute Cloud(Amazon EC2), Amazon Relational Database Service(Amazon RDS), Amazon Redshift 및 Amazon Simple Storage Service(Amazon S3) AWS 서비스 와 같은에 대한 일반적인 유지 관리, 배포 및 문제 해결 작업을 AWS Systems Manager간소화합니다. Automation을 사용하면 자동화의 동시성을 세부적으로 제어할 수 있습니다. 예를 들어 동시에 대상으로 지정할 리소스 수와 자동화가 중지되기 전에 발생할 수 있는 오류 수를 지정할 수 있습니다.
런북 단계, 파라미터 및 예제를 포함한 구현 세부 정보는 추가 정보 섹션을 참조하십시오.
사전 조건 및 제한 사항
사전 조건
활성 AWS 계정
AWS Identity and Access Management Step Functions 및 Systems Manager에 액세스할 수 있는 (IAM) 권한
인스턴스에 Systems Manager Agent(SSM Agent)가 설치된 EC2 인스턴스
런북을 실행하려는 인스턴스에 연결된 Systems Manager용 IAM 인스턴스 프로파일
다음 IAM 권한(최소 권한 원칙 준수)이 있는 Step Functions 역할:
{ "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": "*" }
제품 버전
SSM 문서 스키마 버전 0.3 이상
SSM Agent 버전 2.3.672.0 이상
아키텍처
대상 기술 스택
AWS Step Functions
AWS Systems Manager 자동화
대상 아키텍처

자동화 및 규모 조정
이 패턴은 여러 인스턴스에 실행서를 배포하는 데 사용할 수 있는 AWS CloudFormation 템플릿을 제공합니다. (GitHub Step Functions 및 Systems Manager 구현
리포지토리를 참조하십시오.)
도구
AWS 서비스
AWS CloudFormation를 사용하면 AWS 리소스를 설정하고, 빠르고 일관되게 프로비저닝하고, AWS 계정 및 리전의 수명 주기 동안 리소스를 관리할 수 있습니다.
AWS Identity and Access Management (IAM)는 AWS 리소스에 대한 액세스를 인증하고 사용할 수 있는 권한을 부여받은 사용자를 제어하여 리소스에 대한 액세스를 안전하게 관리하는 데 도움이 됩니다.
AWS Step Functions는 AWS Lambda 함수 및 기타를 결합하여 비즈니스 크리티컬 애플리케이션을 구축하는 AWS 서비스 데 도움이 되는 서버리스 오케스트레이션 서비스입니다.
AWS Systems Manager은 AWS 클라우드에서 실행되는 애플리케이션 및 인프라를 관리하는 데 도움을 줍니다. 애플리케이션 및 리소스 관리를 간소화하고, 운영 문제를 감지 및 해결하는 시간을 단축하며, AWS 리소스를 대규모로 안전하게 관리하는 데 도움이 됩니다.
코드
이 패턴의 코드는 GitHub Step Functions 및 Systems Manager 구현
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
CloudFormation 템플릿 파일을 다운로드하십시오. | GitHub 리포지토리의 | AWS DevOps |
런북을 생성하십시오. | 에 로그인하고 AWS CloudFormation 콘솔 CloudFormation 템플릿은 세 가지 리소스를 배포합니다.
| DevOps |
작업 | 설명 | 필요한 기술 |
---|---|---|
테스트 상태 머신을 생성하십시오. | AWS Step Functions 개발자 안내서의 지침에 따라 상태 시스템을 생성하고 실행합니다. 정의의 경우 다음 코드를 사용합니다. 계정에 있는 유효한 Systems Manager 활성화 인스턴스의 ID로
이 코드는 런북을 직접 호출하여 Systems Manager Automation에 대한
작업은 대신
| AWS DevOps |
상태 머신의 IAM 역할을 업데이트합니다. | 이전 단계에서는 상태 머신을 위한 전용 IAM 역할을 자동으로 생성합니다. 하지만 런북 직접 호출 권한은 부여하지 않습니다. 다음 권한을 추가하여 역할을 업데이트합니다.
| AWS DevOps |
동기 직접 호출을 검증합니다. | 상태 머신을 실행하여 Step Functions와 Systems Manager Automation 간의 동기 직접 호출을 검증합니다. 샘플 출력은 추가 정보 섹션을 참조하십시오. | AWS DevOps |
관련 리소스
시작하기 AWS Step Functions(AWS Step Functions 개발자 안내서)
작업 토큰을 사용하여 콜백을 기다립니다(AWS Step Functions 개발자 안내서, 서비스 통합 패턴).
send_task_success
및 send_task_failure API 직접 호출(Boto3 설명서) AWS Systems Manager 자동화(AWS Systems Manager 사용 설명서)
추가 정보
구현 세부 정보
이 패턴은 두 개의 Systems Manager 런북을 배포하는 CloudFormation 템플릿을 제공합니다.
SfnRunCommandByInstanceIds
는 인스턴스 IDs를 사용하여AWS-RunShellScript
또는AWS-RunPowerShellScript
명령을 실행합니다.SfnRunCommandByTargets
는 대상을 사용하여AWS-RunShellScript
또는AWS-RunPowerShellScript
명령을 실행합니다.
각 실행서는 Step Functions의 .waitForTaskToken
옵션을 사용할 때 동기식 호출을 달성하기 위해 4단계를 구현합니다.
단계 | 작업 | 설명 |
1 |
|
|
2 |
| 여러 입력을 가져와 |
3 |
| 2단계가 중단되거나 취소될 때 실행됩니다. Step Functions send_task_failure |
4 |
| 2단계가 성공하면 실행됩니다. 상태 머신이 전달한 토큰을 입력으로 받아들이는 Step Functions send_task_success |
런북 파라미터
SfnRunCommandByInstanceIds
실행서:
파라미터 이름 | 유형 | 선택 또는 필수 | 설명 |
| String | 필수 | Linux용 또는 Windows |
| Integer | 선택 사항 | 인스턴스의 SSM 에이전트에 명령이 전달될 때까지 기다리는 초 단위 시간입니다. 이 파라미터의 최소값은 30(0.5분)이고 최대값은 2592000(720시간)입니다. |
| String | 선택 사항 | 명령이 실패로 간주되기 전에 완료해야 할 시간(초). 기본값은 3600(1시간)입니다. 최댓값은 172,800(48시간)입니다. |
| String | 선택 사항 | 인스턴스 상의 작업 디렉터리에 대한 경로. |
| StringList | 필수 | 실행할 쉘 스크립트 또는 명령. |
| StringList | 필수 | 명령을 실행하려고 하는 인스턴스의 ID. |
| String | 필수 | 콜백 응답에 사용할 작업 토토큰. |
SfnRunCommandByTargets
실행서:
이름 | 유형 | 선택 또는 필수 | 설명 |
| String | 필수 | Linux용 또는 Windows |
| Integer | 선택 사항 | 인스턴스의 SSM 에이전트에 명령이 전달될 때까지 기다리는 초 단위 시간입니다. 이 파라미터의 최소값은 30(0.5분)이고 최대값은 2592000(720시간)입니다. |
| Integer | 선택 사항 | 명령이 실패로 간주되기 전에 완료해야 할 시간(초). 기본값은 3600(1시간)입니다. 최댓값은 172,800(48시간)입니다. |
| String | 선택 사항 | 인스턴스 상의 작업 디렉터리에 대한 경로. |
| StringList | 필수 | 실행할 쉘 스크립트 또는 명령. |
| MapList | 필수 | 지정한 키,값 쌍을 사용하여 인스턴스를 식별하는 검색 기준 배열. 예: |
| String | 필수 | 콜백 응답에 사용할 작업 토토큰. |
샘플 출력
다음 테이블에는 step 함수의 샘플 출력이 나와 있습니다. 이는 5단계(TaskSubmitted
)와 6단계(TaskSucceeded
) 사이의 총 실행 시간이 100초 이상임을 보여줍니다. 이는 워크플로의 다음 작업으로 이동하기 전에 단계 함수가 sleep 100
명령이 완료될 때까지 기다렸다는 것을 보여줍니다.
ID | 유형 | 단계 | 리소스 | 경과 시간(밀리 초) | 타임스탬프 |
1 |
| - | 0 | 2022년 3월 11일 오후 02:50:34. 303 | |
2 |
|
| - | 40 | 2022년 3월 11일 오후 02:50:34. 343 |
3 |
|
| - | 40 | 2022년 3월 11일 오후 02:50:34. 343 |
4 |
|
| - | 154 | 2022년 3월 11일 오후 02:50:34. 457 |
5 |
|
| - | 657 | 2022년 3월 11일 오후 02:50:34. 960 |
6 |
|
| - | 103835 | 2022년 3월 11일 오후 02:52:18. 138 |
7 |
|
| - | 103860 | 2022년 3월 11일 오후 02:52:18. 163 |
8 |
| - | 103897 | 2022년 3월 11일 오후 02:52:18. 200 |