IAM使用分散式地圖狀態的原則 - AWS Step Functions

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

IAM使用分散式地圖狀態的原則

當您使用 Step Functions 主控台建立工作流程時,Step Functions 可以根據工作流程定義中的資源自動產生IAM原則。這些原則包括允許狀態機器角色呼叫分散式對應狀態StartExecutionAPI動作所需的最低權限。這些政策還包括存取 AWS 資源所需的最低權限 Step Functions,例如 Amazon S3 儲存貯體和物件以及 Lambda 函數。我們強烈建議您僅在IAM原則中加入必要的權限。例如,如果您的工作流程包含分散式模式的Map狀態,請將您的政策範圍縮減到包含資料集的特定 Amazon S3 儲存貯體和資料夾。

重要

如果您指定 Amazon S3 儲存貯體和物件或前綴,其中包含指向分散式地圖狀態輸入中現有鍵值組的參考路徑,請確定您已更新工作流程的IAM政策。將政策範圍縮小到值區和路徑在執行時期解析為的物件名稱。

執行分散式對應狀態的IAM原則範例

當您在工作流程中包含分散式對應狀態時,Step Functions 需要適當的權限,以允許狀態機器角色呼叫分散式對應狀態StartExecutionAPI動作。

下列IAM原則範例授與狀態機器角色執行分散式對應狀態所需的最少權限。

注意

請確定您以使stateMachineName分散式地圖狀態的狀態機器名稱取代。例如:arn:aws:states:us-east-2:123456789012:stateMachine:mystateMachine

{ "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:*" } ] }

分散式貼圖redriving的IAM原則範例

您可以在父工作流程的 Map Run 中重新啟動不成功redriving子工作流程執行。redriven父工作流程redrives所有不成功的狀態,包括分佈式地圖。請确保您的執行角色具有允許其在父工作流程上調用RedriveExecutionAPI操作所需的最低權限。

下列IAM原則範例會授與分散式對應狀態中狀態機器角色所需redriving的最少權限。

注意

請確定您以使stateMachineName分散式地圖狀態的狀態機器名稱取代。例如:arn:aws:states:us-east-2:123456789012:stateMachine:mystateMachine

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:RedriveExecution" ], "Resource": "arn:aws:states:us-east-2:123456789012:execution:myStateMachine/myMapRunLabel:*" } ] }

從 Amazon S3 資料集讀取資料的IAM政策範例

下列IAM政策範例授與使用 ListObjectsV2GetObjectAPI動作存取 Amazon S3 資料集所需的最低權限。

範例 IAM將 Amazon S3 物件做為資料集的政策

下列範例顯示一項IAM政策,該政策授與存取名為的 Amazon S3 儲存貯體processImages中組織的物件的最低權限myBucket

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::myBucket" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages" ] } } } ] }
範例 IAM將CSV檔案作為資料集的政策

下列範例顯示的IAM原則會授與存取名為之CSV檔案的最少權限ratings.csv

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::myBucket/csvDataset/ratings.csv" ] } ] }
範例 IAM將 Amazon S3 庫存作為資料集的政策

下列範例顯示授與存取 Amazon S3 庫存報告之最少權限的IAM政策。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::destination-prefix/source-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json", "arn:aws:s3:::destination-prefix/source-bucket/config-ID/data/*" ] } ] }

將資料寫入 Amazon S3 儲存貯體的IAM政策範例

下列IAM原則範例授與將子工作流程執行結果寫入名為的資料夾所需的最低權限 csvJobs 在 Amazon S3 存儲桶中使用該PutObjectAPI操作。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::resultBucket/csvJobs/*" ] } ] }

IAM AWS KMS key 加密 Amazon S3 儲存貯體的許可

分散式地圖狀態使用分段上傳將子工作流程執行結果寫入 Amazon S3 儲存貯體。如果儲存貯體是使用AWS Key Management Service(AWS KMS)金鑰加密的,您還必須在IAM原則中包含權限 kms:Decryptkms:Encrypt,才能對金鑰執行、和kms:GenerateDataKey動作。這些許可是必要的,因為在加密檔案完成分段上傳之前,Amazon S3 必須從部分加密檔案解密並讀取資料。

下列IAM政策範例授予對用於加密 Amazon S3 儲存貯體之金鑰kms:Encrypt、和kms:GenerateDataKey動作的權限。kms:Decrypt

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/111aa2bb-333c-4d44-5555-a111bb2c33dd" ] } }

如需詳細資訊,請參閱 AWS 知識中心中的使用 AWS KMS key透過加密以將大型檔案上傳至 Amazon S3

如果您的IAM使用者或角色與相 AWS 帳戶 同KMS key,則您必須擁有金鑰原則的這些權限。如果您的IAM使用者或角色屬於與不同的帳戶KMS key,則您必須同時擁有金鑰原則和IAM使用者或角色的權限。