在 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 資源的 IAM 角色,例如 AWS Lambda 函數的叫用動作。

服務整合

可在Task工作流程狀態內呼叫的 AWS SDK 整合 API 動作。

來源帳戶

AWS 帳戶 擁有 狀態機器並已開始執行的 。

目標帳戶

您進行跨帳戶呼叫 AWS 帳戶 的 。

目標角色

狀態機器在目標帳戶中擔任的 IAM 角色,用於呼叫目標帳戶擁有的資源。

執行任務 (.sync)

用來呼叫 服務的服務整合模式,例如 AWS Batch。它也會讓 Step Functions 狀態機器在進入下一個狀態之前等待任務完成。若要指示 Step Functions .sync 應該等待,請在Task狀態定義的 Resource 欄位中附加尾碼。

叫用跨帳戶資源

若要在工作流程中叫用跨帳戶資源,請執行下列動作:

  1. 在包含 資源的目標帳戶中建立 IAM 角色。此角色會授予來源帳戶,其中包含狀態機器,以存取目標帳戶資源的許可。

  2. Task狀態定義中,指定要在叫用跨帳戶資源之前,由狀態機器擔任的目標 IAM 角色。

  3. 修改目標 IAM 角色中的信任政策,以允許來源帳戶暫時擔任此角色。信任政策必須包含來源帳戶中定義的狀態機器的 Amazon Resource Name (ARN)。此外,在目標 IAM 角色中定義適當的許可來呼叫 AWS 資源。

  4. 更新來源帳戶的執行角色,以包含擔任目標 IAM 角色所需的許可。

如需範例,請參閱 教學在 Step Functions 中存取跨帳戶 AWS 資源課程中的範例。

注意

您可以設定狀態機器擔任 IAM 角色,以從多個 存取資源 AWS 帳戶。不過,狀態機器在特定時間只能擔任一個 IAM 角色。

存取跨帳戶資源的概念

.sync 整合模式的跨帳戶存取

當您在工作流程中使用.sync服務整合模式時,Step Functions 會輪詢調用的跨帳戶資源,以確認任務完成。這會導致實際任務完成時間和 Step Functions 將任務識別為完成的時間之間稍有延遲。目標 IAM 角色需要.sync呼叫所需的許可,才能完成此輪詢迴圈。若要這樣做,目標 IAM 角色必須具有信任政策,允許來源帳戶擔任該角色。此外,目標 IAM 角色需要必要的許可才能完成輪詢迴圈。

注意

對於巢狀 Express Workflows,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:*" ] } ] }