本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 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
欄位中附加尾碼。
叫用跨帳戶資源
若要在工作流程中叫用跨帳戶資源,請執行下列動作:
在包含 資源的目標帳戶中建立 IAM 角色。此角色會授予來源帳戶存取目標帳戶資源的許可,其中包含狀態機器。
在
Task
狀態的定義中,指定要由狀態機器擔任的目標 IAM 角色,然後再叫用跨帳戶資源。修改目標 IAM 角色中的信任政策,以允許來源帳戶暫時擔任此角色。信任政策必須包含來源帳戶中定義之狀態機器的 Amazon Resource Name (ARN)。此外,在目標 IAM 角色中定義適當的許可來呼叫 AWS 資源。
更新來源帳戶的執行角色,以包含擔任目標 IAM 角色所需的許可。
如需範例,請參閱教學在 Step Functions 中存取跨帳戶 AWS 資源課程中的 。
注意
您可以將狀態機器設定為擔任 IAM 角色,以從多個 存取資源 AWS 帳戶。不過,狀態機器在指定時間只能擔任一個 IAM 角色。

.sync 整合模式的跨帳戶存取
當您在工作流程中使用.sync
服務整合模式時,Step Functions 會輪詢調用的跨帳戶資源,以確認任務完成。這會在實際任務完成時間和 Step Functions 將任務辨識為完成的時間之間造成些微延遲。目標 IAM 角色需要.sync
呼叫所需的許可,才能完成此輪詢迴圈。若要這樣做,目標 IAM 角色必須具有允許來源帳戶採用的信任政策。此外,目標 IAM 角色需要必要的許可才能完成輪詢迴圈。
注意
對於巢狀快速工作流程,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
:account-id
:stateMachine:stateMachineName
" ] }, { "Effect": "Allow", "Action": [ "states:DescribeExecution", "states:StopExecution" ], "Resource": [ "arn:aws:states:region
:account-id
:execution:stateMachineName
:*" ] } ] }