자습서: Step Functions에서 계정 간 AWS 리소스에 액세스하기 - AWS Step Functions

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

자습서: Step Functions에서 계정 간 AWS 리소스에 액세스하기

Step Functions의 크로스 계정 액세스 지원을 통해 다양한 AWS 계정에서 구성된 리소스를 공유할 수 있습니다. 이 자습서에서는 Production이라는 계정에 정의된 크로스 계정 Lambda 함수에 액세스하는 프로세스를 안내합니다. 이 함수는 Development라는 계정의 상태 시스템에서 간접적으로 호출됩니다. 이 자습서에서는 개발 계정을 소스 계정이라고 하고 프로덕션 계정을 대상 IAM 역할을 포함하는 대상 계정이라고 합니다.

먼저 주 정의에서 Task 계정 간 Lambda 함수를 호출하기 전에 상태 시스템이 맡아야 하는 대상 IAM 역할을 지정합니다. 그런 다음 소스 계정이 대상 역할을 일시적으로 수임할 수 있도록 대상 IAM 역할의 신뢰 정책을 수정하십시오. 또한 AWS 리소스를 호출하려면 대상 IAM 역할에서 적절한 권한을 정의해야 합니다. 마지막으로, 소스 계정 실행 역할을 업데이트하여 대상 역할을 위임하는 데 필요한 권한을 지정합니다.

여러 리소스에 액세스하는 IAM 역할을 맡도록 상태 시스템을 구성할 수 AWS 계정있습니다. 하지만 상태 정의에 따라 상태 머신은 주어진 시간에 한 가지 IAM 역할만 맡을 Task 수 있습니다.

참고

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

사전 조건

  • 이 자습서에서는 Lambda 함수의 예제를 사용하여 크로스 계정 액세스를 설정하는 방법을 보여줍니다. 다른 AWS 리소스도 사용할 수 있지만, 리소스를 다른 계정에 구성했는지 확인하세요.

    중요

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

  • 교차 계정 리소스의 Amazon 리소스 이름 (ARN) 을 텍스트 파일에 기록해 둡니다. 이 자습서의 후반부에서는 상태 머신의 Task 상태 ARN 정의에 이 정보를 제공할 것입니다. 다음은 Lambda ARN 함수의 예시입니다.

    arn:aws:lambda:us-east-2:123456789012:function:functionName
  • 스테이트 머신이 맡아야 하는 대상 IAM 역할을 생성했는지 확인하십시오.

1단계: Task 상태 정의를 업데이트하여 대상 역할 지정

워크플로의 Task 상태에서 크로스 계정 Lambda 함수를 간접적으로 호출하기 전에 상태 시스템에서 위임해야 하는 ID가 포함된 Credentials 필드를 추가합니다.

다음 절차에서는 Echo라는 크로스 계정 Lambda 함수에 액세스하는 방법을 보여줍니다. 다음 단계에 따라 모든 AWS 리소스를 호출할 수 있습니다.

  1. Step Functions 콘솔을 열고 상태 시스템 생성을 선택합니다.

  2. 작성 방법 선택 페이지에서 시각적으로 워크플로 설계를 선택하고 기본 선택 사항을 모두 유지합니다.

  3. Workflow Studio를 열려면 다음을 선택합니다.

  4. 작업 탭에서 Task 상태를 끌어 캔버스에 놓습니다. 그러면 이 Task 상태를 사용하는 크로스 계정 Lambda 함수가 간접적으로 호출됩니다.

  5. 구성 탭에서 다음을 수행합니다.

    1. 상태 이름을 Cross-account call로 변경합니다.

    2. [함수 이름] 에서 [함수 이름 입력] 을 선택한 다음 상자에 Lambda ARN 함수를 입력합니다. 예: arn:aws:lambda:us-east-2:111122223333:function:Echo.

    3. IAM역할 ARN 제공에 대상 IAM 역할을 지정합니다. ARN 예: arn:aws:iam::111122223333:role/LambdaRole.

      작은 정보

      또는 역할이 포함된 상태 JSON 입력의 기존 키-값 쌍에 대한 참조 경로를 지정할 수도 있습니다. IAM ARN 이렇게 하려면 상태 입력에서 런타임 ARN 시 IAM 역할 가져오기를 선택합니다. 참조 경로를 사용하여 값을 지정하는 예제는 역할로 지정 JSONPath IAM ARN 섹션을 참조하세요.

  6. Next(다음)를 선택합니다.

  7. 생성된 코드 검토 페이지에서 다음을 선택합니다.

  8. 상태 시스템 설정 지정 페이지에서 이름, 권한 및 로깅 수준과 같은 새 상태 시스템에 대한 세부 정보를 지정합니다.

  9. 상태 머신 생성을 선택합니다.

  10. 스테이트 머신의 IAM ARN 역할과 스테이트 머신을 ARN 텍스트 파일에 기록해 둡니다. 대상 계정의 신뢰 정책에 이러한 ARNs 정보를 제공해야 합니다.

이제 Task 상태 정의가 다음 정의와 비슷하게 표시되어야 합니다.

{ "StartAt": "Cross-account call", "States": { "Cross-account call": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Credentials": { "RoleArn": "arn:aws:iam::111122223333:role/LambdaRole" }, "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:Echo", }, "End": true } } }

2단계: 대상 역할의 신뢰 정책 업데이트

IAM역할은 대상 계정에 있어야 하며 원본 계정이 이 역할을 일시적으로 수임할 수 있도록 해당 신뢰 정책을 수정해야 합니다. 또한 대상 IAM 역할을 맡을 수 있는 사람을 제어할 수 있습니다.

신뢰 관계를 만든 후에는 소스 계정의 사용자가 AWS Security Token Service (AWS STS) AssumeRoleAPI작업을 사용할 수 있습니다. 이 작업은 대상 계정의 AWS 리소스에 액세스할 수 있는 임시 보안 자격 증명을 제공합니다.

  1. 에서 IAM 콘솔을 엽니다 https://console.aws.amazon.com/iam/.

  2. 콘솔의 탐색 창에서 역할을 선택한 다음 검색 상자를 사용하여 대상 IAM 역할을 검색합니다. 예: LambdaRole.

  3. 신뢰 관계 탭을 선택합니다.

  4. 신뢰 정책 편집을 선택하고 다음 신뢰 정책을 붙여넣습니다. AWS 계정 번호와 IAM 역할을 바꿔야 ARN 합니다. sts:ExternalId 필드는 역할을 위임할 수 있는 사용자를 추가로 제어합니다. 상태 머신의 이름에는 에서 AWS Security Token Service AssumeRole API 지원하는 문자만 포함되어야 합니다. 자세한 내용은 AssumeRole AWS Security Token ServiceAPI참조를 참조하십시오.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::123456789012:role/ExecutionRole" // The source account's state machine execution role ARN }, "Condition": { // Control which account and state machine can assume the target IAM role "StringEquals": { "sts:ExternalId": "arn:aws:states:us-east-1:123456789012:stateMachine:testCrossAccount" //// ARN of the state machine that will assume the role. } } } ] }
  5. 이 창을 열어 두고 다음 단계로 진행하여 추가 작업을 수행합니다.

3단계: 대상 역할에 필요한 권한 추가

IAM정책의 권한에 따라 특정 요청의 허용 또는 거부 여부가 결정됩니다. 대상 IAM 역할에는 Lambda 함수를 호출할 수 있는 올바른 권한이 있어야 합니다.

  1. 권한 탭을 선택합니다.

  2. 권한 추가를 선택하고 인라인 정책 생성을 선택합니다.

  3. JSON탭을 선택하고 기존 콘텐츠를 다음 권한으로 대체하십시오. Lambda ARN 함수를 반드시 교체하십시오.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:Echo" // The cross-account AWS resource being accessed } ] }
  4. 정책 검토를 선택합니다.

  5. 정책 검토 페이지에 권한 이름을 입력한 다음 정책 생성을 선택합니다.

4단계: 대상 역할을 위임할 수 있는 권한을 실행 역할에 추가

Step Functions는 모든 계정 간 서비스 통합에 대한 AssumeRole정책을 자동으로 생성하지 않습니다. 하나 이상의 상태 시스템에서 대상 역할을 맡을 수 있도록 하려면 상태 머신의 실행 IAM 역할에 필요한 권한을 추가해야 합니다. AWS 계정

  1. 의 IAM 콘솔에서 상태 머신의 실행 역할을 엽니다 https://console.aws.amazon.com/iam/. 방법:

    1. 1단계에서 만든 상태 시스템을 소스 계정에서 엽니다.

    2. 스테이트 머신 세부 정보 페이지에서 IAM역할을 선택합니다ARN.

  2. 권한 탭에서 권한 추가를 선택한 다음 인라인 정책 생성을 선택합니다.

  3. JSON탭을 선택하고 기존 콘텐츠를 다음 권한으로 대체합니다. Lambda ARN 함수를 반드시 교체하십시오.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/LambdaRole" // The target role to be assumed } ] }
  4. 정책 검토를 선택합니다.

  5. 정책 검토 페이지에 권한 이름을 입력한 다음 정책 생성을 선택합니다.