本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用分散式地圖狀態的 IAM 政策
當您使用 Step Functions 主控台建立工作流程時,Step Functions 可以根據您工作流程定義中的資源自動產生 IAM 政策。產生的政策包含允許狀態機器角色叫用分散式映射狀態的 StartExecution API 動作和存取 AWS 資源所需的最低權限,例如 Amazon S3 儲存貯體和物件,以及 Lambda 函數。
我們建議您在 IAM 政策中只包含必要的許可。例如,如果您的工作流程包含分散式模式中Map的狀態,請將政策範圍縮小到包含資料的特定 Amazon S3 儲存貯體和資料夾。
重要
如果您指定 Amazon S3 儲存貯體和物件或字首,以及分散式映射狀態輸入中現有鍵值對的參考路徑,請確定您更新工作流程的 IAM 政策。將政策範圍縮小至路徑在執行時間解析的儲存貯體和物件名稱。
執行分散式映射狀態的 IAM 政策範例
當您在工作流程中包含分散式地圖狀態時,Step Functions 需要適當的許可,以允許狀態機器角色叫用分散式地圖狀態的 StartExecution API 動作。
下列 IAM 政策範例會將執行分散式映射狀態所需的最低權限授予狀態機器角色。
注意
請務必將 取代為您使用分散式地圖狀態的狀態機器名稱。例如 stateMachineNamearn:aws:states:。region:account-id:stateMachine:mystateMachine
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachineName" ] }, { "Effect": "Allow", "Action": [ "states:DescribeExecution" ], "Resource": "arn:aws:states:us-east-1:123456789012:execution:myStateMachineName:*" } ] }
分散式地圖的 IAM redriving 政策範例
您可以由redriving父工作流程在 Map Run 中重新啟動失敗的子工作流程執行。redriven 父工作流程redrives所有失敗狀態,包括分散式地圖。請確定您的執行角色具有允許其在父工作流程上叫用 RedriveExecution API 動作所需的最低權限。
下列 IAM 政策範例會為您的狀態機器角色授予redriving分散式映射狀態所需的最低權限。
注意
請務必將 取代為您使用分散式地圖狀態的狀態機器名稱。例如 stateMachineNamearn:aws:states:。region:account-id:stateMachine:mystateMachine
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:RedriveExecution" ], "Resource": "arn:aws:states:us-east-2:123456789012:execution:myStateMachineName/myMapRunLabel:*" } ] }
從 Amazon S3 資料集讀取資料的 IAM 政策範例
下列範例顯示使用 ListObjectsV2 和 GetObject API 動作授予存取 Amazon S3 資料集所需最低權限的技術。
範例 使用 Amazon S3 物件做為資料集的條件
下列條件授予存取 Amazon S3 儲存貯體資料夾中物件的最低權限。processImages
"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages" ] } }
範例 使用 CSV 檔案做為資料集
下列範例顯示存取名為 的 CSV 檔案所需的動作。ratings.csv
"Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/csvDataset/ratings.csv" ]
範例 使用 Amazon S3 清查做為資料集
以下顯示 Amazon S3 清查清單檔案和資料檔案的範例資源。
"Resource": [ "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/YYYY-MM-DDTHH-MMZ/manifest.json", "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/data/*" ]
範例 使用 ListObjectsV2 限制為資料夾字首
使用 ListObjectsV2 時,會產生兩個政策。需要一個允許列出儲存貯體 (ListBucket) 的內容,另一個政策將允許擷取儲存貯體 () 中的物件GetObject。
以下顯示動作、資源和條件的範例:
"Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "/path/to/your/json/" ] } }
"Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/path/to/your/json/*" ]
請注意, GetObject不會限定範圍,而您將針對物件使用萬用字元 (*)。
將資料寫入 Amazon S3 儲存貯體的 IAM 政策範例
下列 IAM 政策範例會使用 PutObject API 動作,授予將子工作流程執行結果寫入 Amazon S3 儲存貯體中名為 csvJobs 的資料夾所需的最低權限。
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/csvJobs/*" ] } ] }
AWS KMS key 加密 Amazon S3 儲存貯體的 IAM 許可
分散式映射狀態使用分段上傳,將子工作流程執行結果寫入 Amazon S3 儲存貯體。如果使用 AWS Key Management Service(AWS KMS)金鑰加密儲存貯體,您還必須在IAM政策中包含許可,才能對金鑰執行 kms:Decrypt、 kms:Encrypt和 kms:GenerateDataKey動作。這些許可是必要的,因為在加密檔案完成分段上傳之前,Amazon S3 必須從部分加密檔案解密並讀取資料。
下列 IAM 政策範例會針對用來加密 Amazon S3 儲存貯體的金鑰kms:Encrypt授予 kms:Decrypt、 和 kms:GenerateDataKey動作的許可。
-
{ "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 使用者或角色的許可。