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

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

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

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) 단원을 참조하십시오.

참고

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

주요 교차 계정 리소스 개념

실행 역할

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

서비스 통합

The AWS SDK워크플로의 특정 Task 상태 내에서 호출할 수 있는 통합 API 작업

소스 계정

원래 요청 ping에 대한 AWS 계정 상태 머신을 소유하고 실행을 시작한 사용자입니다.

대상 계정

원래 요청 ping에 대한 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 역할을 업데이트하십시오.

예를 보려면 자습서를 참조하십시오크로스 계정 액세스 AWS Step Functions의 리소스.

참고

여러 리소스에 액세스하는 IAM 역할을 담당하도록 상태 시스템을 구성할 수 있습니다. AWS 계정. 하지만 스테이트 머신은 한 번에 한 가지 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 필드는 역할을 위임할 수 있는 사용자를 추가로 제어합니다. 상태 머신의 이름에는 다음과 같은 문자만 포함되어야 합니다. AWS Security Token Service AssumeRoleAPI지원합니다. 자세한 내용은 AssumeRole을 참조하십시오. AWS Security Token Service API참조.

{ "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:*" ] } ] }