기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Step Functions가 통합 서비스용 IAM 정책을 생성하는 방법
AWS Step Functions 콘솔에서 상태 시스템을 만들 때 Step Functions는 다음과 같이 상태 시스템 정의에 사용되는 리소스를 기반으로 AWS Identity and Access Management(IAM) 정책을 생성합니다.
-
상태 시스템에서 최적화된 통합 중 하나를 사용하면 Step Functions는 상태 시스템에 필요한 권한과 역할이 포함된 정책을 생성합니다. (예외: MediaConvert 통합을 사용하려면 권한을 수동으로 설정해야 합니다. IAM 호출 정책 AWS Elemental MediaConvert 섹션을 참조하세요.)
-
상태 시스템에서 AWS SDK 통합 중 하나를 사용하면 부분 권한이 포함된 IAM 역할이 생성됩니다. 이후 IAM 콘솔을 사용하여 누락된 역할 정책을 추가할 수 있습니다.
다음 예제에서는 Step Functions가 상태 시스템 정의를 기반으로 IAM 정책을 생성하는 방법을 보여줍니다.
등과 같은 예제 코드의 항목은 상태 머신 정의에 나열된 정적 리소스로 대체됩니다. 정적 리소스가 여러 개 있는 경우 각 IAM 역할에 대한 항목이 있습니다.[[resourceName]]
동적 리소스와 정적 리소스 비교
정적 리소스는 상태 머신의 작업 상태에서 직접 정의됩니다. 작업 상태에서 직접 호출할 리소스에 대한 정보를 포함하면 Step Functions에서 해당 리소스에 대한 IAM 역할만 만듭니다.
동적 리소스는 상태 입력으로 전달되고 Path를 사용하여 액세스되는 리소스입이다(JSONPath 경로 사용 참조). 동적 리소스를 작업으로 전달하면 Step Functions에서 "Resource": "*"
를 지정하는 더 많은 권한이 있는 정책을 만듭니다.
작업 실행 패턴을 사용하는 작업에 대한 추가 권한
작업 실행 패턴(.sync
로 끝남)을 사용하는 작업의 경우 연결된 서비스의 API 작업에서 응답을 수신하고 모니터링하려면 추가 권한이 필요합니다. 관련 정책에는 요청 응답 또는 콜백 대기 패턴을 사용하는 작업보다 더 많은 권한이 포함됩니다. 동기식 작업에 대한 자세한 내용은 Step Functions에서 서비스 통합 패턴 검색 섹션을 참조하세요.
참고
작업 실행(.sync) 패턴을 지원하는 서비스 통합에 추가 권한을 제공해야 합니다.
Step Functions는 연결된 서비스에서 작업이 실행될 때 폴링 및 이벤트 등 두 가지 방법을 사용하여 작업 상태를 모니터링합니다.
폴링에는 ecs:DescribeTasks
또는 glue:GetJobRun
과 같은 Describe
또는 Get
API 작업에 대한 권한이 필요합니다. 역할에서 이러한 권한이 누락되면 Step Functions에서 작업 상태를 확인하지 못할 수 있습니다. 이는 일부 작업 실행(.sync) 서비스 통합에서 EventBridge 이벤트를 지원하지 않고 일부 서비스는 최선의 노력으로만 이벤트를 전송하기 때문입니다.
AWS 서비스에서 Amazon EventBridge로 전송된 이벤트는 관리형 규칙을 통해 Step Functions로 전달되며 events:PutTargets
, events:PutRule
및 events:DescribeRule
에 대한 권한이 필요합니다. 역할에서 이러한 권한이 누락되면 Step Functions에서 작업 완료를 인식하기까지 지연이 발생할 수 있습니다. EventBridge 이벤트에 자세한 내용은 AWS 서비스의 이벤트를 참조하세요.
참고
폴링과 이벤트를 모두 지원하는 작업 실행(.sync) 작업의 경우에도 여전히 이벤트를 사용하여 작업을 제대로 완료할 수 있습니다. 이는 폴링에 필요한 권한이 역할에 없는 경우에도 발생할 수 있습니다. 이 경우 폴링 권한이 잘못되었거나 누락된 것을 즉시 알지 못할 수도 있습니다. 드문 경우이긴 하지만 Step Functions에서 이벤트를 전달하거나 처리할 수 없으면 실행이 중단될 수 있습니다. 폴링 권한이 올바르게 구성되었는지 확인하려면 다음과 같은 방법으로 EventBridge 이벤트가 없는 환경에서 실행을 실행하면 됩니다.
-
Step Functions에 이벤트를 전달하는 EventBridge에서 관리형 규칙을 삭제합니다. 이 관리형 규칙은 계정의 모든 상태 시스템에서 공유되므로 다른 상태 시스템에 의도치 않은 영향이 미치지 않도록 테스트 또는 개발 계정에서만 이 작업을 수행해야 합니다. 대상 서비스의 정책 템플릿에서
events:PutRule
에 사용되는Resource
필드를 검사하여 삭제할 특정 관리형 규칙을 식별할 수 있습니다. 관리형 규칙은 다음에 서비스 통합을 사용하는 상태 시스템을 만들거나 업데이트할 때 다시 생성됩니다. EventBridge 규칙을 삭제하는 방법에 대한 자세한 내용은 규칙 비활성화 또는 삭제를 참조하세요. -
작업 실행(.sync) 작업을 완료하기 위한 이벤트 사용을 지원하지 않는 Step Functions Local을 사용하여 테스트합니다. Step Functions Local을 사용하려면 상태 시스템에서 사용하는 IAM 역할을 위임해야 합니다. 신뢰 관계를 편집해야 할 수도 있습니다.
AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
및AWS_SESSION_TOKEN
환경 변수를 위임된 역할 값으로 설정한 다음 java -jar StepFunctionsLocal.jar를 사용하여 Step Functions Local을 시작합니다. 마지막으로 --endpoint-url 파라미터와 함께 AWS CLI를 사용하여 상태 시스템을 만들고 실행을 시작하며 실행 내역을 가져옵니다. 자세한 내용은 Step Functions Local을 사용하여 상태 시스템 테스트(지원되지 않음) 단원을 참조하십시오.
작업 실행(.sync) 패턴을 사용하는 작업이 중지되면 Step Functions는 최선을 다해 작업을 취소합니다. 이렇게 하려면 batch:TerminateJob
또는 eks:DeleteCluster
와 같은 Cancel
, Stop
, Terminate
또는 Delete
API 작업에 대한 권한이 필요합니다. 역할에 이러한 권한이 없으면 Step Functions에서 작업을 취소할 수 없으며 작업을 계속 실행하는 동안 추가 요금이 발생할 수 있습니다. 작업 중지 방법에 자세한 내용은 작업 실행을 참조하세요.