本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
訪問其他資源 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 可以完全控制自己的資源,您可以重新組織、交換、新增或移除工作流程中的步驟,而不需要自訂任何程式碼。即使流程發生變化或應用程序的發展,您也可以執行此操作。
您還可以調用嵌套狀態機器的執行,以便在不同的帳戶中使用它們。這樣做可以有效地分離和隔離您的工作流程。當您在工作流程中使用.sync服務整合模式來存取其他帳戶中的其他 Step Functions 工作流程時,Step Functions 會使用耗用您指派配額的輪詢。如需詳細資訊,請參閱執行任務 (.sync)。
注意
目前,跨地區 AWS SDK整合與跨區域 AWS 資源訪問在 Step Functions 中不可用。
重要的跨帳戶資源概念
- 執行角色
-
Step Functions 用來執行程式碼和存取的IAM角色 AWS 資源,例如 AWS Lambda 函數的調用操作。
- 服務整合
-
所以此 AWS SDK可從工API作流程中某個
Task
狀態中呼叫的整合動作。 - 來源帳戶
同時 AWS 帳戶 擁有狀態機並已開始執行。
- 目標帳戶
同時 AWS 帳戶 您進行跨帳戶通話的對象。
- 目標角色
狀態機器假設目標帳戶中的IAM角色,用於呼叫目標帳戶所擁有的資源。
- 執行 Job (.sync)
用於呼叫服務的服務整合模式,例如 AWS Batch。 它還使得 Step Functions 狀態機等待作業完成,然後再進行到下一個狀態。若要指出 Step Functions 應該等待,請在
Task
狀態定義的Resource
欄位中附加.sync
尾碼。
呼叫跨帳戶資源
若要在工作流程中叫用跨帳號資源,請執行下列動作:
在包含資源的目標帳號中建立IAM角色。此角色會授與包含狀態機器的來源帳戶存取目標帳戶資源的權限。
在
Task
狀態的定義中,指定狀態機器在呼叫跨帳號資源之前要採用的目標IAM角色。修改目標IAM角色中的信任原則,以允許來源帳戶暫時擔任此角色。信任政策必須包含來源帳戶中定義之狀態機器的 Amazon 資源名稱 (ARN)。此外,請在目標IAM角色中定義適當的權限,以呼叫 AWS 資源。
更新來源帳戶的執行角色,以包含假設目標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 AssumeRole
API支持。若要取得更多資訊,請參閱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
:*" ] } ] }