本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
授予批次操作的許可
建立和執行 S3 批次操作任務之前,您必須授予必要的權限。若要建立 Amazon S3 批次操作任務,則必須具備 s3:CreateJob 使用者許可。建立任務的相同實體也必須具有iam:PassRole許可,才能將為任務指定的 AWS Identity and Access Management (IAM) 角色傳遞至批次操作。
以下各區段提供有關建立 IAM 角色和連接政策的資訊。如需指定 IAM 資源的一般資訊,請參閱《IAM 使用者指南》中的 IAM JSON 政策元素:資源。
建立 S3 批次操作 IAM 角色
Amazon S3 必須擁有代表您執行 S3 批次操作的許可。您可以透過 AWS Identity and Access Management (IAM) 角色授予這些許可。當您建立 S3 批次操作任務時,您可以指定您希望任務使用的 IAM 角色。這可以是現有的 IAM 角色。或者,如果您使用 Amazon S3 主控台來建立任務,它可以是 Amazon S3 為您建立的 IAM 角色。
如果您選擇讓 Amazon S3 為您建立 IAM 角色,它會自動建立信任和許可政策並將其連接到角色。信任政策允許 S3 Batch Operations 服務主體 (batchoperations.s3.amazonaws.com) 擔任該角色。許可政策會根據您為任務指定的設定,允許執行任務的所有必要動作。例如,如果您設定任務將物件從一個儲存貯體複製到 中的另一個儲存貯體 AWS 帳戶,許可政策會允許 s3:GetObject和 等動作s3:PutObject。您可以在提交任務之前檢閱角色的信任和許可政策。只有在您使用 Amazon S3 主控台建立任務,且您將任務設定為使用使用篩選條件或基於複寫組態的 S3 產生的物件清單時,才能使用此選項。提交任務之後,IAM 角色會保留在您的帳戶中。然後,您可以再次將其用於執行相同操作的後續任務,或在任務完成執行時將其刪除。
如果您偏好手動建立 IAM 角色,本節中的政策範例可協助您建立角色。如需建立和設定角色的詳細資訊,請參閱《IAM 使用者指南》中的 IAM 角色。 如需依 S3 資源類型分類的 S3 API 操作許可資訊,請參閱 Amazon S3 API 操作所需的許可。如需其他範例,請參閱 使用作業標籤控制 Batch Operations 的許可和 使用 S3 批次操作複製物件。
在您的 IAM 政策中,您也可以使用條件金鑰來篩選 S3 批次操作任務的存取許可。如需詳細資訊以及 Amazon S3 特定條件索引鍵的完整清單,請參閱服務授權參考中的 Amazon S3 的動作、資源和條件索引鍵。
如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊,請參閱Amazon S3 API 操作所需的許可。
下列影片說明如何使用 Amazon S3 主控台設定批次操作任務的 IAM 許可。
信任政策
若要允許 S3 批次操作服務主體擔任 IAM 角色,請將下列信任政策連接到該角色。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"Service":"batchoperations.s3.amazonaws.com"
},
"Action":"sts:AssumeRole"
}
]
}
連接許可政策
根據操作類型,您可以附加下列其中一種政策。
在設定許可之前,請注意下列事項:
-
無論是哪一種操作,Amazon S3 都需要許可才能從 S3 儲存貯體中讀取資訊清單物件,並選擇性地將報告寫入儲存貯體。因此,所有下列政策都包含這些許可。
-
針對 Amazon S3 庫存報告資訊清單,S3 批次操作需要讀取 manifest.json 物件與所有相關聯 CSV 資料檔案的許可。
-
只有在指定物件的版本 ID 時才需要版本特定的許可 (如 s3:GetObjectVersion)。
-
如果您在加密的物件上執行 S3 批次操作,IAM 角色也必須能夠存取用來加密它們的 AWS KMS 金鑰。
-
如果您提交使用 加密的庫存報告資訊清單 AWS KMS,IAM 政策必須包含 manifest.json 物件"kms:Decrypt"和所有相關聯 CSV 資料檔案"kms:GenerateDataKey"的許可和 。
如果批次操作任務在已啟用存取控制清單 (ACLs) 且位於不同 的儲存貯體中產生資訊清單 AWS 帳戶,您必須在為批次任務設定的 IAM 角色的 IAM 政策中授予 s3:PutObjectAcl許可。如果您未包含此許可,批次作業會失敗並顯示錯誤 Error occurred when preparing manifest: Failed to write
manifest。
複製物件:PutObject
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Action": [
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectTagging"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
},
{
"Action": [
"s3:GetObject",
"s3:GetObjectAcl",
"s3:GetObjectTagging",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::amzn-s3-demo-source-bucket",
"arn:aws:s3:::amzn-s3-demo-source-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
]
}
]
}
取代物件標記:PutObjectTagging
- JSON
-
-
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:PutObjectTagging",
"s3:PutObjectVersionTagging"
],
"Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject"
],
"Resource":[
"arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
]
}
]
}
刪除物件標記:DeleteObjectTagging
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:DeleteObjectTagging",
"s3:DeleteObjectVersionTagging"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
]
}
]
}
取代存取控制清單:PutObjectAcl
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObjectAcl",
"s3:PutObjectVersionAcl"
],
"Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
]
}
]
}
還原物件:RestoreObject
- JSON
-
-
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:RestoreObject"
],
"Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject"
],
"Resource":[
"arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
]
}
]
}
套用物件鎖定保留:PutObjectRetention
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetBucketObjectLockConfiguration",
"Resource": [
"arn:aws:s3:::amzn-s3-demo-destination-bucket"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObjectRetention",
"s3:BypassGovernanceRetention"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
]
}
]
}
套用物件鎖定法務保存:PutObjectLegalHold
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetBucketObjectLockConfiguration",
"Resource": [
"arn:aws:s3:::amzn-s3-demo-destination-bucket"
]
},
{
"Effect": "Allow",
"Action": "s3:PutObjectLegalHold",
"Resource": [
"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
]
}
]
}
使用 S3 產生的資訊清單複寫現有物件:InitiateReplication
如果您使用並儲存 S3 產生的資訊清單,請使用此政策。如需使用 Batch Operations 來複寫現有物件的詳細資訊,請參閱使用批次複寫來複寫現有物件。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement":[
{
"Action":[
"s3:InitiateReplication"
],
"Effect":"Allow",
"Resource":[
"arn:aws:s3:::amzn-s3-demo-source-bucket/*"
]
},
{
"Action":[
"s3:GetReplicationConfiguration",
"s3:PutInventoryConfiguration"
],
"Effect":"Allow",
"Resource":[
"arn:aws:s3:::amzn-s3-demo-source-bucket"
]
},
{
"Action":[
"s3:GetObject",
"s3:GetObjectVersion"
],
"Effect":"Allow",
"Resource":[
"arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject"
],
"Resource":[
"arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*",
"arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
]
}
]
}
使用使用者資訊清單複寫現有物件:InitiateReplication
如果您使用使用者提供的資訊清單,請使用此政策。如需使用 Batch Operations 來複寫現有物件的詳細資訊,請參閱使用批次複寫來複寫現有物件。
- JSON
-
-
{
"Version":"2012-10-17",
"Statement":[
{
"Action":[
"s3:InitiateReplication"
],
"Effect":"Allow",
"Resource":[
"arn:aws:s3:::amzn-s3-demo-source-bucket/*"
]
},
{
"Action":[
"s3:GetObject",
"s3:GetObjectVersion"
],
"Effect":"Allow",
"Resource":[
"arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
]
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject"
],
"Resource":[
"arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"
]
}
]
}
運算檢查總和:允許 GetObject、RestoreObject、 GetObjectVersion和 PutObject
如果您嘗試搭配 S3 Batch Operations 使用運算檢查總和操作,請使用此政策。需要 GetObject、GetObjectVersion 和 RestoreObject 的許可權,才能取得和讀取已儲存資料的位元組。以您自己的資訊取代使用者輸入預留位置。如需運算檢查總和的詳細資訊,請參閱 檢查 Amazon S3 中靜態資料的物件完整性。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:RestoreObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket1/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket2/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket3/*"
]
}
]
}
更新物件加密
您必須連接下列許可政策,以允許 Batch Operations 讀取資訊清單、更新物件的加密類型,以及撰寫完成報告。若要使用此許可政策,請將 取代user input placeholders為您自己的資訊。如需使用此操作的詳細資訊,以及您必須連接至 IAM 主體所使用角色的許可,請參閱 更新物件加密。
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "S3BatchOperationsUpdateEncryption",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:UpdateObjectEncryption"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket-target"
"arn:aws:s3:::amzn-s3-demo-bucket-target/*"
]
},
{
"Sid": "S3BatchOperationsPolicyForManifestFile",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket-manifest/*"
]
},
{
"Sid": "S3BatchOperationsPolicyForCompletionReport",
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket-completion-report/*"
]
},
{
"Sid": "S3BatchOperationsPolicyManifestGeneration",
"Effect": "Allow",
"Action": [
"s3:PutInventoryConfiguration"
],
"Resource": [
"arn:aws:s3:::amzn-s3-demo-bucket-target"
]
}
{
"Sid": "AllowKMSOperationsForS3BatchOperations",
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey",
"kms:Encrypt",
"kms:ReEncrypt*"
],
"Resource": [
"arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
]
}
]
}