통합 서비스용 IAM 정책 - AWS Step Functions

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

통합 서비스용 IAM 정책

AWS Step Functions 콘솔에서 스테이트 머신을 생성할 때 Step Functions는 다음과 같이 스테이트 머신 정의에 사용된 리소스를 기반으로 AWS Identity and Access Management (IAM) 정책을 생성합니다.

  • 스테이트 머신이 Optimized 통합 중 하나를 사용하는 경우 Step Functions는 스테이트 머신에 필요한 권한 및 역할을 포함하는 정책을 생성합니다. (예외: MediaConvert 통합을 위해서는 권한을 수동으로 설정해야 IAM 정책은 다음과 같습니다. AWS Elemental MediaConvert 합니다. 참조)

  • 상태 머신이 AWS SDK 통합 중 하나를 사용하는 경우 부분 권한이 있는 IAM 역할이 생성됩니다. 이후 IAM 콘솔을 사용하여 누락된 역할 정책을 추가할 수 있습니다.

다음 예제에서는 Step Functions가 상태 시스템 정의를 기반으로 IAM 정책을 생성하는 방법을 보여줍니다. [[resourceName]] 등과 같은 예제 코드의 항목은 상태 머신 정의에 나열된 정적 리소스로 대체됩니다. 정적 리소스가 여러 개 있는 경우 각 IAM 역할에 대한 항목이 있습니다.

동적 리소스와 정적 리소스 비교

정적 리소스는 상태 머신의 작업 상태에서 직접 정의됩니다. 작업 상태에서 직접 호출할 리소스에 대한 정보를 포함하면 Step Functions에서 해당 리소스에 대한 IAM 역할만 만듭니다.

동적 리소스는 상태 입력으로 전달되고 Path를 사용하여 액세스되는 리소스입이다(경로 참조). 동적 리소스를 작업으로 전달하면 Step Functions에서 "Resource": "*"를 지정하는 더 많은 권한이 있는 정책을 만듭니다.

작업 실행 패턴을 사용하는 작업에 대한 추가 권한

작업 실행 패턴(.sync로 끝남)을 사용하는 작업의 경우 연결된 서비스의 API 작업에서 응답을 수신하고 모니터링하려면 추가 권한이 필요합니다. 관련 정책에는 요청 응답 또는 콜백 대기 패턴을 사용하는 작업보다 더 많은 권한이 포함됩니다. 동기식 작업에 대한 자세한 내용은 서비스 통합 패턴 섹션을 참조하세요.

참고

Run a Job (.sync) 패턴을 지원하는 서비스 통합에 대한 추가 권한을 제공해야 합니다.

Step Functions는 연결된 서비스에서 작업이 실행될 때 폴링 및 이벤트 등 두 가지 방법을 사용하여 작업 상태를 모니터링합니다.

폴링에는 ecs:DescribeTasks 또는 glue:GetJobRun과 같은 Describe 또는 Get API 작업에 대한 권한이 필요합니다. 역할에서 이러한 권한이 누락되면 Step Functions에서 작업 상태를 확인하지 못할 수 있습니다. 이는 일부 Run a Job (.sync) 서비스 통합이 EventBridge 이벤트를 지원하지 않고 일부 서비스는 최선을 다해 이벤트를 전송하기만 하기 때문입니다.

AWS 서비스에서 EventBridge Amazon으로 전송된 이벤트는 관리형 규칙을 사용하여 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_KEYAWS_SESSION_TOKEN 환경 변수를 위임된 역할 값으로 설정한 다음 java -jar StepFunctionsLocal.jar를 사용하여 Step Functions Local을 시작합니다. 마지막으로 --endpoint-url 매개 변수와 AWS CLI 함께 를 사용하여 상태 머신을 만들고, 실행을 시작하고, 실행 기록을 가져옵니다. 자세한 정보는 상태 시스템을 로컬로 테스트을 참조하세요.

작업 실행(.sync) 패턴을 사용하는 작업이 중지되면 Step Functions는 최선을 다해 작업을 취소합니다. 이렇게 하려면 batch:TerminateJob 또는 eks:DeleteCluster와 같은 Cancel, Stop, Terminate 또는 Delete API 작업에 대한 권한이 필요합니다. 역할에 이러한 권한이 없으면 Step Functions에서 작업을 취소할 수 없으며 작업을 계속 실행하는 동안 추가 요금이 발생할 수 있습니다. 작업 중지 방법에 자세한 내용은 작업 실행을 참조하세요.

IAM 역할을 만드는 데 사용되는 정책 템플릿

다음 주제에는 Step Functions에서 자동으로 새 역할을 만들 때 사용되는 정책 템플릿이 포함되어 있습니다.

참고

이 템플릿을 검토하여 Step Functions가 IAM 정책을 생성하는 방법을 이해하고 다른 AWS 서비스를 사용할 때 Step Functions에 대한 IAM 정책을 수동으로 생성하는 방법의 예로 들어 보십시오. Step Functions 서비스 통합에 대한 자세한 내용은 다른 서비스와 AWS Step Functions 함께 사용 섹션을 참조하세요.