Step Functions에서 다른의 리소스 AWS 계정 에 액세스 - AWS Step Functions

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

Step Functions에서 다른의 리소스 AWS 계정 에 액세스

Step Functions는 워크플로에서 서로 다른에 구성된 리소스 AWS 계정 에 대한 교차 계정 액세스를 제공합니다. Step Functions 서비스 통합을 사용하면 AWS 리소스 기반 정책 또는 교차 계정 호출을 지원하지 AWS 서비스 않더라도 교차 계정 리소스를 호출할 수 있습니다.

예를 들어 개발 및 테스트 AWS 계정라는 두 가지를 동일한에 소유하고 있다고 가정해 보겠습니다 AWS 리전. 크로스 계정 액세스를 사용하면 개발 계정의 워크플로에서 Amazon S3 버킷, Amazon DynamoDB 테이블, 테스트 계정에서 사용할 수 있는 Lambda 함수와 같은 리소스에 액세스할 수 있습니다.

중요

IAM 역할 및 리소스 기반 정책은 단일 파티션 내에서만 계정 간에 액세스 권한을 위임합니다. 예를 들어 표준 aws 파티션의 미국 서부(캘리포니아 북부)에 계정이 있다고 가정합니다. aws-cn 파티션의 중국(베이징)에도 계정이 있습니다. 중국(베이징)의 계정에서 Amazon S3 리소스 기반 정책을 사용하여 표준 aws 계정의 사용자에 대한 액세스를 허용할 수 없습니다.

크로스 계정 액세스에 대한 자세한 내용은 IAM 사용 설명서크로스 계정 정책 평가 로직을 참조하세요.

각는 자체 리소스에 대한 완전한 제어를 AWS 계정 유지하지만 Step Functions를 사용하면 코드를 사용자 지정할 필요 없이 워크플로에서 단계를 재구성, 교체, 추가 또는 제거할 수 있습니다. 프로세스가 변경되거나 애플리케이션이 발전하는 경우에도 이 작업을 수행할 수 있습니다.

또한 여러 계정에서 사용할 수 있도록 중첩된 상태 시스템 실행을 간접적으로 호출할 수 있습니다. 이렇게 하면 워크플로를 효율적으로 분리하고 격리할 수 있습니다. 다른 계정의 또 다른 Step Functions 워크플로에 액세스하는 워크플로에서 .sync 서비스 통합 패턴을 사용하면 Step Functions는 할당된 할당량을 소비하는 폴링을 사용합니다. 자세한 내용은 작업 실행(.sync) 단원을 참조하십시오.

참고

현재 Step Functions에서는 리전 간 AWS SDK 통합 및 리전 간 AWS 리소스 액세스를 사용할 수 없습니다.

주요 교차 계정 리소스 개념

실행 역할

Step Functions가 코드를 실행하고 AWS Lambda 함수의 호출 작업과 같은 AWS 리소스에 액세스하는 데 사용하는 IAM 역할입니다.

서비스 통합

워크플로의 Task 상태 내에서 호출할 수 있는 AWS SDK 통합 API 작업입니다.

소스 계정

상태 시스템을 AWS 계정 소유하고 실행을 시작한 .

대상 계정

교차 계정 호출 AWS 계정 을 수행하는 입니다.

대상 역할

상태 시스템이 대상 계정에서 소유하는 리소스를 직접적으로 호출할 수 있도록 위임하는 대상 계정의 IAM 역할입니다.

작업 실행(.sync)

와 같은 서비스를 호출하는 데 사용되는 서비스 통합 패턴입니다 AWS Batch. 또한 Step Functions 상태 시스템은 작업이 완료될 때까지 대기한 후 다음 상태로 진행합니다. Step Functions가 대기해야 함을 나타내려면 Task 상태 정의의 Resource 필드에 .sync 접미사를 추가합니다.

크로스 계정 리소스 간접 호출

워크플로에서 크로스 계정 리소스를 간접적으로 호출하려면 다음을 수행합니다.

  1. 리소스가 포함된 대상 계정에 IAM 역할을 만듭니다. 이 역할은 상태 시스템이 포함된 소스 계정에 대상 계정 리소스에 액세스할 수 있는 권한을 부여합니다.

  2. Task 상태 정의에서 크로스 계정 리소스를 간접적으로 호출하기 전에 상태 시스템에서 위임할 대상 IAM 역할을 지정합니다.

  3. 소스 계정에서 일시적으로 이 역할을 위임할 수 있도록 대상 IAM 역할의 신뢰 정책을 수정합니다. 신뢰 정책에는 소스 계정에 정의된 상태 시스템의 Amazon 리소스 이름(ARN)이 포함되어야 합니다. 또한 대상 IAM 역할에서 AWS 리소스를 호출할 적절한 권한을 정의합니다.

  4. 대상 IAM 역할을 위임하는 데 필요한 권한이 포함되도록 소스 계정 실행 역할을 업데이트합니다.

예제는 자습서의 Step Functions에서 교차 계정 AWS 리소스 액세스 섹션을 참조하세요.

참고

여러 AWS 계정의 리소스에 액세스하기 위해 IAM 역할을 위임하도록 상태 시스템을 구성할 수 있습니다. 하지만 상태 시스템은 한 번에 IAM 역할 하나만 위임할 수 있습니다.

크로스 계정 리소스에 액세스 개념

.sync 통합 패턴에 대한 크로스 계정 액세스

워크플로에서 .sync 서비스 통합 패턴을 사용하면 Step Functions에서 간접적으로 호출된 크로스 계정 리소스를 폴링하여 작업이 완료되었는지 확인합니다. 이로 인해 실제 작업 완료 시간과 Step Functions에서 작업 완료를 인식하는 시간 사이에서 약간의 지연이 발생합니다. 이 폴링 루프를 완료하려면 대상 IAM 역할에 .sync 간접 호출에 필요한 권한이 있어야 합니다. 이렇게 하려면 대상 IAM 역할에 소스 계정에서 권한을 위임할 수 있게 해주는 신뢰 정책이 있어야 합니다. 또한 대상 IAM 역할에는 폴링 루프를 완료하는 데 필요한 권한이 있어야 합니다.

참고

중첩된 Express 워크플로의 경우 현재 arn:aws:states:::states:startExecution.sync는 지원되지 않습니다. 대신 arn:aws:states:::aws-sdk:sfn:startSyncExecution을 사용하세요.

.sync 직접 호출에 대한 신뢰 정책 업데이트

다음 예제와 같이 대상 IAM 역할의 신뢰 정책을 업데이트합니다. sts:ExternalId 필드는 역할을 위임할 수 있는 사용자를 추가로 제어합니다. 상태 시스템의 이름에는 API가 AWS Security Token Service AssumeRole 지원하는 문자만 포함되어야 합니다. 자세한 내용은 AWS Security Token Service API 참조AssumeRole을 참조하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::sourceAccountID:role/InvokeRole", }, "Condition": { "StringEquals": { "sts:ExternalId": "arn:aws:states:us-east-2:sourceAccountID:stateMachine:stateMachineName" } } } ] }

.sync 직접 호출에 필요한 권한

상태 시스템에 필요한 권한을 부여하려면 대상 IAM 역할에 필요한 권한을 업데이트합니다. 자세한 내용은 Step Functions가 통합 서비스용 IAM 정책을 생성하는 방법 단원을 참조하십시오. 예제 정책의 Amazon EventBridge 권한은 필요하지 않습니다. 예를 들어 상태 시스템을 시작하려면 다음 권한을 추가합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:region:accountID:stateMachine:stateMachineName" ] }, { "Effect": "Allow", "Action": [ "states:DescribeExecution", "states:StopExecution" ], "Resource": [ "arn:aws:states:region:accountID:execution:stateMachineName:*" ] } ] }