Step Functions 式如何為整合式服務產生IAM原則 - AWS Step Functions

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Step Functions 式如何為整合式服務產生IAM原則

當您在 AWS Step Functions 控制台,Step Functions 產生 AWS Identity and Access Management (IAM)策略基於您的狀態機定義中使用的資源,如下所示:

  • 如果您的狀態機使用其中一個最佳化整合,Step Functions 會建立具有狀態機器必要權限和角色的政策。(例外: MediaConvert 整合需要您手動設定權限 — 請參閱IAM呼叫的原則 AWS Elemental MediaConvert。)

  • 如果您的狀態機使用 AWS SDK整合,將建立具有部分權限的IAM角色。之後,您可以使用主IAM控台新增任何遺失的角色原則。

下列範例顯示 Step Functions 如何根據您的狀態機器定義產生IAM原則。範例程式碼中的項目,例如 [[resourceName]] 將替換為狀態機定義中列出的靜態資源。如果您有多個靜態資源,則IAM角色中的每個資源都會有一個項目。

動態與靜態資源

靜態資源直接定義於狀態機器的任務狀態中。當您在任務狀態中包含要直接呼叫之資源的相關資訊時,Step Functions 只會為這些資源建立IAM角色。

動態資源是傳入您的狀態中並使用路徑存取的資源 (請參閱 使用路徑存取 Step Functions 工作流程的輸入)。如果您要將動態資源傳遞給工作,Step Functions 會建立更具權限的原則,指定:"Resource": "*"

使用執行作業模式的 Job 的其他權限

對於使用「執行 Job 模式」(結尾為.sync) 的工作,需要額外的權限才能監視和接收來自連線服務API動作的回應。相關原則所包含的權限比使用要求回應或等待回呼模式的工作更多。如需同步工作探索 Step Functions 中的服務整合模式的資訊,請參閱。

注意

您需要為支援執行 Job (.sync) 模式的服務整合提供其他權限。

Step Functions 會使用兩種方法來監視工作的狀態時,在連線的服務、輪詢和事件上執行工作。

輪詢需要權限DescribeGetAPI動作,例如ecs:DescribeTasksglue:GetJobRun。如果您的角色遺失這些權限,則 Step Functions 可能無法判斷您的工作狀態。這是因為某些執行 Job (.sync) 服務整合不支援 EventBridge事件,而某些服務只會盡力傳送事件。

事件傳送來源 AWS Amazon 的服務 EventBridge 會使用受管規則導向至 Step Functions,且需要events:PutTargetsevents:PutRule、和的許可events:DescribeRule。如果您的角色遺失這些權限,則可能會有一段延遲,Step Functions 才會意識到您的工作完成。如需 EventBridge 事件的詳細資訊,請參閱事件來源 AWS 服務

注意

對於執行同時支援輪詢和事件的 Job (.sync) 工作,您的工作仍可使用事件正確完成。即使您的角色缺少輪詢所需的權限,也可能發生這種情況。在這種情況下,您可能不會立即注意到輪詢權限不正確或遺失。在極少數情況下,事件無法傳遞給 Step Functions 或無法處理,您的執行可能會卡住。若要確認您的輪詢權限設定正確,您可以透過下列方式在沒有 EventBridge 事件的環境中執行執行:

  • 從中刪除受管理的規則 EventBridge,該規則負責將事件轉寄至 Step Functions。您帳戶中的所有狀態機器都會共用此受管規則,因此您應該只在測試或開發帳戶中執行此動作,以避免對其他狀態機器造成任何意外影響。您可以檢查目標服務之策略範本events:PutRule中用於的Resource欄位,來識別要刪除的特定受管理規則。下次您建立或更新使用該服務整合的狀態機器時,將重新建立受管理規則。如需刪除 EventBridge 規則的詳細資訊,請參閱停用或刪除規則

  • 使用本機 Step Functions 進行測試,不支援使用事件來完成執行 Job (.sync) 工作。若要使用 Step Functions 區域,請假設您的狀態機器所使用的IAM角色。您可能需要編輯「信任關係」。將AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY、和AWS_SESSION_TOKEN環境變數設定為假定角色的值,然後使用啟動 Step Functions 數本機java -jar StepFunctionsLocal.jar。最後,使用 AWS CLI 使用--endpoint-url參數創建狀態機,啟動執行並獲取執行歷史記錄。如需詳細資訊,請參閱在 Step Functions 中本地測試狀態機

如果停止使用「執行作業 (.sync)」模式的 Job,「Step Functions」會盡最大努力取消工作。這需要CancelStopTerminate、或DeleteAPI動作的權限,例如batch:TerminateJobeks:DeleteCluster。如果您的角色遺失這些權限,Step Functions 將無法取消您的作業,您可能會在繼續執行時產生額外費用。如需停止 Job 的詳細資訊,請參閱執行工作