整合式服務的 IAM 政策 - AWS 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 會建立更具權限的原則,指定:"Resource": "*"

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

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

注意

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

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

輪詢需要 Get API Describe 動作的權限,例如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 用 for --endpoint-url 參數來建立狀態機器、開始執行,以及取得執行歷程記錄。如需詳細資訊,請參閱 在本地測試狀態機

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

用於建立 IAM 角色的政策範本

下列主題包括當您選擇讓 Step Functions 為您建立新角色時所使用的原則範本。

注意

檢閱這些範本以瞭解 Step Functions 如何建立您的 IAM 政策,以及在使用其他 AWS 服務時如何手動建立 Step Functions 的 IAM 政策範例。如需有關 Step Functions 服務整合的詳細資訊,請參閱AWS Step Functions 搭配其他服務使用