本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Step Functions 主控台建立工作流程時,Step Functions 可以根據工作流程定義中的資源自動產生IAM原則。這些原則包括允許狀態機器角色呼叫分散式對應狀態StartExecution
API動作所需的最低權限。這些原則也包含存取所需的最低權限 Step Functions AWS 資源,例如 Amazon S3 存儲桶和對象以及 Lambda 函數。我們強烈建議您僅在IAM原則中加入必要的權限。例如,如果您的工作流程包含分散式模式的Map
狀態,請將您的政策範圍縮減到包含資料集的特定 Amazon S3 儲存貯體和資料夾。
重要
如果您指定 Amazon S3 儲存貯體和物件或前綴,其中包含指向分散式地圖狀態輸入中現有鍵值組的參考路徑,請確定您已更新工作流程的IAM政策。將政策範圍縮小到值區和路徑在執行時期解析為的物件名稱。
執行分散式對應狀態的IAM原則範例
當您在工作流程中包含分散式對應狀態時,Step Functions 需要適當的權限,以允許狀態機器角色呼叫分散式對應狀態的StartExecution
API動作。
下列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
:*"
}
]
}
IAM政策範例 redriving 分佈式地圖
您可以在 Map 執行者中重新啟動不成功的子工作流程執行 redriving您的父工作流程。A redriven 父工作流程 redrives 所有不成功的狀態,包括分佈式地圖。請确保您的執行角色具有允許其在父工作流程上調用RedriveExecution
API操作所需的最低權限。
下列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政策範例授與使用 ListObjectsV2 和GetObjectAPI動作存取 Amazon S3 資料集所需的最低權限。
範例 IAM將 Amazon S3 物件做為資料集的政策
下列範例顯示一項IAM政策,該政策授與存取名為的 Amazon S3 儲存貯體
中組織的物件的最低權限processImages
。amzn-s3-demo-bucket
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket
"
],
"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:::amzn-s3-demo-bucket
/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
/amzn-s3-demo-bucket
/config-ID
/YYYY-MM-DDTHH-MMZ
/manifest.json",
"arn:aws:s3:::destination-prefix
/amzn-s3-demo-bucket
/config-ID
/data/*"
]
}
]
}
將資料寫入 Amazon S3 儲存貯體的IAM政策範例
下列IAM原則範例授與將子工作流程執行結果寫入名為的資料夾所需的最低權限 csvJobs
在 Amazon S3 存儲桶中使用該PutObject
API操作。
{
"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
/*"
]
}
]
}
IAM權限 AWS KMS key 加密 Amazon S3 存儲桶
分散式地圖狀態使用分段上傳將子工作流程執行結果寫入 Amazon S3 儲存貯體。如果儲存貯體使用 AWS Key Management Service (AWS KMS) 密鑰,您還必須在您的 IAM 針對金鑰執行kms:Decrypt
kms: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
"
]
}
}
如需詳細資訊,請參閱使用加密將大型檔案上傳到 Amazon S3 AWS KMS key
如果您的IAM使用者或角色是相同的 AWS 帳戶 作為 KMS key,則您必須擁有金鑰原則的這些權限。如果您的IAM使用者或角色屬於與 KMS key,則您必須同時擁有金鑰原則和IAM使用者或角色的權限。