

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

# Amazon S3
<a name="automation-ref-s3"></a>

 AWS Systems Manager 自動化為 Amazon Simple Storage Service 提供預先定義的 Runbook。如需有關執行手冊的詳細資訊，請參閱 [Working with runbooks](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-documents.html)。如需如何檢視 Runbook 內容的詳細資訊，請參閱 [檢視 Runbook 內容](automation-runbook-reference.md#view-automation-json)。

**Topics**
+ [`AWS-ArchiveS3BucketToIntelligentTiering`](automation-aws-archives3buckettointelligenttiering.md)
+ [`AWS-ConfigureS3BucketLogging`](automation-aws-configures3bucketlogging.md)
+ [`AWS-ConfigureS3BucketVersioning`](automation-aws-configures3bucketversioning.md)
+ [`AWSConfigRemediation-ConfigureS3BucketPublicAccessBlock`](automation-aws-block-public-s3-bucket.md)
+ [`AWSConfigRemediation-ConfigureS3PublicAccessBlock`](automation-aws-block-public-s3.md)
+ [`AWS-CreateS3PolicyToExpireMultipartUploads`](AWS-CreateS3PolicyToExpireMultipartUploads.md)
+ [`AWS-DisableS3BucketPublicReadWrite`](automation-aws-disables3bucketpublicreadwrite.md)
+ [`AWS-EnableS3BucketEncryption`](automation-aws-enableS3bucketencryption.md)
+ [`AWS-EnableS3BucketKeys`](automation-aws-enableS3bucketkeys.md)
+ [`AWSConfigRemediation-RemovePrincipalStarFromS3BucketPolicy`](automation-aws-remove-s3-wildcard.md)
+ [`AWSConfigRemediation-RestrictBucketSSLRequestsOnly`](automation-aws-s3-deny-http.md)
+ [`AWSSupport-TroubleshootS3PublicRead`](automation-awssupport-troubleshoots3publicread.md)
+ [`AWSSupport-ConfigureS3ReplicationSameAndCrossAccount`](automation-aws-configures3replicationsameandcrossaccount.md)
+ [`AWSSupport-EmptyS3Bucket`](automation-aws-empty-s3-bucket.md)
+ [`AWSSupport-TroubleshootS3EventNotifications`](awssupport-troubleshoot-s3-event-notifications.md)
+ [`AWSSupport-ContainS3Resource`](automation-awssupport-contains3resource.md)

# `AWS-ArchiveS3BucketToIntelligentTiering`
<a name="automation-aws-archives3buckettointelligenttiering"></a>

 **Description** 

`AWS-ArchiveS3BucketToIntelligentTiering` Runbook 會為您指定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體建立或取代智慧型分層組態。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-ArchiveS3BucketToIntelligentTiering) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ BucketName

  類型：字串

  描述：（必要） 您要為其建立智慧型分層組態的 S3 儲存貯體名稱。
+ ConfigurationId

  類型：字串

   描述：（必要） 智慧型分層組態的 ID。這可以是新的組態 ID，或現有組態的 ID。
+ NumberOfDaysToArchive

  類型：字串

  有效值：90-730

  描述：（必要） 儲存貯體中物件符合轉換為 Archive Access 層的資格後的連續天數。
+ NumberOfDaysToDeepArchive

  類型：字串

  有效值：180-730

  描述：（必要） 儲存貯體中物件符合轉換至 Deep Archive Access 層的資格後的連續天數。
+ S3Prefix

  類型：字串

  描述：（選用） 您要套用組態之物件的金鑰名稱字首。
+ Tags (標籤)

  類型：MapList

  描述：（選用） 指派給您要套用組態之物件的中繼資料。標籤由使用者定義的索引鍵和值組成。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+ `ssm:StartAutomationExecution`
+ `ssm:GetAutomationExecution`
+ `s3:GetIntelligentTieringConfiguration`
+ `s3:PutIntelligentTieringConfiguration`

 **文件步驟** 
+ PutsBucketIntelligentTieringConfiguration (aws：executeScript) - 建立或更新指定儲存貯體的 Amazon S3 Intelligent-Tiering 組態。
+ VerifyBucketIntelligentTieringConfiguration (aws：assertAwsResourceProperty) - 驗證 S3 儲存貯體智慧型組態已套用至指定的儲存貯體。

# `AWS-ConfigureS3BucketLogging`
<a name="automation-aws-configures3bucketlogging"></a>

 **Description** 

在 Amazon Simple Storage Service (Amazon S3) 儲存貯體上啟用記錄。

**重要**  
請注意下列有關此 Runbook 所使用的 Amazon S3 [PutBucketLogging](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html) API 的電子郵件承授者 ACL 的重要資訊：  
終止支援通知：自 2025 年 10 月 1 日起，Amazon S3 將停止支援建立新電子郵件承授者存取控制清單 (ACL)。在此日期之前建立的電子郵件承授者 ACLs 將繼續運作，並可透過 AWS 管理主控台、 AWS CLI (CLI)、 SDKs 和 REST API 存取。不過，您將無法再建立新的電子郵件承授者 ACL。在 2025 年 7 月 15 日至 2025 年 10 月 1 日期間，當嘗試建立新的電子郵件承授者 ACLs 時，您會開始看到 Amazon S3 請求的 HTTP 405 錯誤率增加。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-ConfigureS3BucketLogging) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ BucketName

  類型：字串

  描述：（必要） 您要為其設定記錄的 Amazon S3 儲存貯體名稱。
+ GrantedPermission

  類型：字串

  有效值：FULL\$1CONTROL \$1 READ \$1 WRITE

  描述：(選用) 指派給儲存貯體之被授予者的記錄許可。
+ GranteeEmailAddress

  類型：字串

  (選用) 被授予者的電子郵件地址。
+ GranteeId

  類型：字串

  描述：(選用) 被授予者的正式使用者 ID。
+ GranteeType

  類型：字串

  有效值：CanonicalUser \$1 AmazonCustomerByEmail \$1 群組

  描述：(必要) 被授予者的類型。
+ GranteeUri

  類型：字串

  描述：(選用) 被授予者群組的 URI。
+ TargetBucket

  類型：字串

  描述：（必要） 指定您希望 Amazon S3 存放伺服器存取日誌的儲存貯體。您可以將日誌傳送到您擁有的任何儲存貯體。您也可以設定多個儲存貯體，以將其日誌傳送至相同的目標儲存貯體。在此情況下，您應該針對各個來源儲存貯體選擇不同的 TargetPrefix，讓傳送的日誌檔案能夠以索引鍵區分。
+ TargetPrefix

  類型：字串

  預設：/

  描述：(選用) 為索引鍵指定字首，而日誌檔案將會存放於索引鍵之下。

# `AWS-ConfigureS3BucketVersioning`
<a name="automation-aws-configures3bucketversioning"></a>

 **Description** 

設定 Amazon Simple Storage Service (Amazon S3) 儲存貯體的版本控制。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-ConfigureS3BucketVersioning) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ BucketName

  類型：字串

  描述：（必要） 您要設定版本控制的 Amazon S3 儲存貯體名稱。
+ VersioningState

  類型：字串

  有效值：已啟用 \$1 已暫停

  預設：Enabled

   描述：(選用) 套用至 VersioningConfiguration.Status。設為「Enabled」(啟用) 時，此程序會啟用儲存貯體之物件的版本控制，而所有新增至儲存貯體的物件都會收到唯一的版本 ID。設為 `Suspended` 時，此程序會停用儲存貯體中物件的版本控制。新增至儲存貯體的所有物件都會收到版本 ID `null` 。

# `AWSConfigRemediation-ConfigureS3BucketPublicAccessBlock`
<a name="automation-aws-block-public-s3-bucket"></a>

 **Description** 

 Runbook 會根據您在 `AWSConfigRemediation-ConfigureS3BucketPublicAccessBlock` Runbook 參數中指定的值，設定 Amazon S3 儲存貯體的 Amazon Simple Storage Service (Amazon S3) 公有存取區塊設定。 Amazon S3 

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSConfigRemediation-ConfigureS3BucketPublicAccessBlock) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（必要） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。
+ BlockPublicAcls

  類型：布林值

  預設：true

   描述：（選用） 如果設為 `true` ，Amazon S3 會封鎖 S3 儲存貯體的公有存取控制清單 (ACLs)，以及存放在您在 `BucketName` 參數中指定的 S3 儲存貯體中的物件。
+ BlockPublicPolicy

  類型：布林值

  預設：true

   描述：（選用） 如果設定為 `true` ，Amazon S3 會針對您在 `BucketName` 參數中指定的 S3 儲存貯體封鎖公有儲存貯體政策。
+ BucketName

  類型：字串

  描述：（必要） 您要設定的 S3 儲存貯體名稱。
+ IgnorePublicAcls

  類型：布林值

  預設：true

   描述：（選用） 如果設定為 `true` ，Amazon S3 會忽略您在 `BucketName` 參數中指定之 S3 儲存貯體的所有公ACLs。
+ RestrictPublicBuckets

  類型：布林值

  預設：true

   描述：（選用） 如果設定為 `true` ，Amazon S3 會限制您在 `BucketName` 參數中指定的 S3 儲存貯體的公有儲存貯體政策。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `ssm:StartAutomationExecution` 
+  `ssm:GetAutomationExecution` 
+  `s3:GetAccountPublicAccessBlock` 
+  `s3:PutAccountPublicAccessBlock` 
+  `s3:GetBucketPublicAccessBlock` 
+  `s3:PutBucketPublicAccessBlock` 

 **文件步驟** 
+  `aws:executeAwsApi` - 建立或修改 `BucketName` 參數中指定之 S3 儲存貯體的`PublicAccessBlock`組態。
+  `aws:executeScript` - 傳回 `BucketName` 參數中指定之 S3 儲存貯體的`PublicAccessBlock`組態，並根據 Runbook 參數中指定的值驗證已成功進行變更。

# `AWSConfigRemediation-ConfigureS3PublicAccessBlock`
<a name="automation-aws-block-public-s3"></a>

 **Description** 

 Runbook 會根據您在 `AWSConfigRemediation-ConfigureS3PublicAccessBlock` Runbook 參數中指定的值，設定 AWS 帳戶的 Amazon Simple Storage Service (Amazon S3) 公有存取區塊設定。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSConfigRemediation-ConfigureS3PublicAccessBlock) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AccountId

  類型：字串

  描述：（必要） AWS 帳戶 擁有您正在設定的 S3 儲存貯體的 ID。
+ AutomationAssumeRole

  類型：字串

  描述：（必要） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。
+ BlockPublicAcls

  類型：布林值

  預設：true

   描述：（選用） 如果設定為 `true` ，Amazon S3 會針對 AWS 帳戶 您在 `AccountId` 參數中指定的 所擁有的 S3 儲存貯體，封鎖其公開存取控制清單 (ACLs)。
+ BlockPublicPolicy

  類型：布林值

  預設：true

   描述：（選用） 如果設定為 `true` ，Amazon S3 會針對 AWS 帳戶 您在 `AccountId` 參數中指定的 所擁有的 S3 儲存貯體，封鎖其公有儲存貯體政策。
+ IgnorePublicAcls

  類型：布林值

  預設：true

   描述：（選用） 如果設定為 `true` ，Amazon S3 會忽略 AWS 帳戶 您在 `AccountId` 參數中指定之 擁有的 S3 儲存貯體的所有公有 ACLs。
+ RestrictPublicBuckets

  類型：布林值

  預設：true

   描述：（選用） 如果設定為 `true` ，Amazon S3 會限制 AWS 帳戶 您在 `AccountId` 參數中指定之 擁有的 S3 儲存貯體的公有儲存貯體政策。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `ssm:StartAutomationExecution` 
+  `ssm:GetAutomationExecution` 
+  `s3:GetAccountPublicAccessBlock` 
+  `s3:PutAccountPublicAccessBlock` 

 **文件步驟** 
+  `aws:executeAwsApi` - 建立或修改 `AccountId` 參數中指定 AWS 帳戶 的`PublicAccessBlock`組態。
+  `aws:executeScript` - 傳回 `AccountId` 參數中 AWS 帳戶 指定 的`PublicAccessBlock`組態，並根據 Runbook 參數中指定的值驗證已成功進行變更。

# `AWS-CreateS3PolicyToExpireMultipartUploads`
<a name="AWS-CreateS3PolicyToExpireMultipartUploads"></a>

 **Description** 

`AWS-CreateS3PolicyToExpireMultipartUploads` Runbook 會為指定的儲存貯體建立生命週期政策，該政策會在定義的天數後過期未完成的分段上傳進行中。此 Runbook 會將新的生命週期政策與已存在的任何現有生命週期儲存貯體政策合併。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-CreateS3PolicyToExpireMultipartUploads) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ BucketName

  類型：字串

  描述：（必要） 您要設定的 S3 儲存貯體名稱。
+ DaysUntilExpire

  類型：整數

   描述：（必要） Amazon S3 在永久移除上傳的所有部分之前等待的天數。
+ RuleId

  類型：字串

   描述：（必要） 用於識別生命週期儲存貯體規則的 ID。這必須是唯一的值。
+ S3Prefix

  類型：字串

   描述：（選用） 您要套用組態之物件的金鑰名稱字首。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+ `ssm:GetAutomationExecution`
+ `ssm:StartAutomationExecution`
+ `s3:GetLifecycleConfiguration`
+ `s3:PutLifecycleConfiguration`

 **文件步驟** 
+ ConfigureExpireMultipartUploads (aws：executeScript) - 設定儲存貯體的生命週期政策。
+ VerifyExpireMultipartUploads (aws：executeScript) - 驗證已為儲存貯體設定生命週期政策。

 **輸出** 
+ `VerifyExpireMultipartUploads.VerifyExpireMultipartUploadsResponse`
+ `VerifyExpireMultipartUploads.LifecycleConfigurationRule`

# `AWS-DisableS3BucketPublicReadWrite`
<a name="automation-aws-disables3bucketpublicreadwrite"></a>

 **Description** 

 使用 Amazon Simple Storage Service (Amazon S3) `Block Public Access` 停用公有 S3 儲存貯體的讀取和寫入存取權。如需詳細資訊，請參閱[《Amazon Simple Storage Service 使用者指南》中的使用 Amazon S3 封鎖公開存取](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html)。 **

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-DisableS3BucketPublicReadWrite) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ S3BucketName

  類型：字串

  描述：(必要) 您想要限制存取的 S3 儲存貯體。

# `AWS-EnableS3BucketEncryption`
<a name="automation-aws-enableS3bucketencryption"></a>

 **Description** 

設定 Amazon Simple Storage Service (Amazon S3) 儲存貯體的預設加密。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-EnableS3BucketEncryption) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ BucketName

  類型：字串

  描述：(必要) 您想要加密內容的 S3 儲存貯體之名稱。
+ SSEAlgorithm

  類型：字串

  預設：AES256

  描述：(選用) 用於預設加密的伺服器端加密演算法。

# `AWS-EnableS3BucketKeys`
<a name="automation-aws-enableS3bucketkeys"></a>

 **Description** 

`AWS-EnableS3BucketKeys` Runbook 會在您指定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體上啟用儲存貯體金鑰。此儲存貯體層級金鑰會在其生命週期期間為新物件建立資料金鑰。如果您未指定 `KmsKeyId` 參數的值，則使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密會用於預設加密組態。

**注意**  
使用 AWS Key Management Service (AWS KMS) 金鑰 (DSSE-KMS) 的雙層伺服器端加密不支援 Amazon S3 儲存貯體金鑰。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWS-EnableS3BucketKeys) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ BucketName

  類型：字串

  描述：（必要） 您要為其啟用儲存貯體金鑰的 S3 儲存貯體名稱。
+ KMSKeyId

  類型：字串

   描述：（選用） 要用於伺服器端加密的 Amazon Resource Name (ARN)、金鑰 ID 或 AWS Key Management Service (AWS KMS) 客戶受管金鑰的金鑰別名。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+ `ssm:StartAutomationExecution`
+ `ssm:GetAutomationExecution`
+ `s3:GetEncryptionConfiguration`
+ `s3:PutEncryptionConfiguration`

 **文件步驟** 
+ ChooseEncryptionType (aws：branch) - 評估為 `KmsKeyId` 參數提供的值，以判斷是否將使用 SSE-S3 (AES256) 或 SSE-KMS。
+ PutBucketKeysKMS (aws：executeAwsApi) - 使用指定的 ，將指定 S3 儲存貯`true`體的 `BucketKeyEnabled` 屬性設定為 `KmsKeyId`。
+ PutBucketKeysAES256 (aws：executeAwsApi) - 使用 AES256 加密將指定 S3 儲存貯`true`體的 `BucketKeyEnabled` 屬性設定為 。
+ VerifyS3BucketKeysEnabled (aws：assertAwsResourceProperty) - 驗證已在目標 S3 儲存貯體上啟用儲存貯體金鑰。

# `AWSConfigRemediation-RemovePrincipalStarFromS3BucketPolicy`
<a name="automation-aws-remove-s3-wildcard"></a>

 **Description** 

 `AWSConfigRemediation-RemovePrincipalStarFromS3BucketPolicy` Runbook 會從 Amazon Simple Storage Service (Amazon S3) 儲存貯體政策中移除具有萬用字元 ( `Principal: *`或 `Principal: "AWS": *` ) `Allow`動作的主體政策陳述式。具有條件的政策陳述式也會移除。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSConfigRemediation-RemovePrincipalStarFromS3BucketPolicy) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（必要） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。
+ BucketName

  類型：字串

  描述：（必要） 您要修改其政策的 Amazon S3 儲存貯體名稱。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `ssm:StartAutomationExecution` 
+  `ssm:GetAutomationExecution` 
+  `s3:DeleteBucketPolicy` 
+  `s3:GetBucketPolicy` 
+  `s3:PutBucketPolicy` 

 **文件步驟** 
+  `aws:executeScript` - 修改儲存貯體政策，並驗證使用萬用字元的主體政策陳述式已從您在 `BucketName` 參數中指定的 Amazon S3 儲存貯體中移除。

# `AWSConfigRemediation-RestrictBucketSSLRequestsOnly`
<a name="automation-aws-s3-deny-http"></a>

 **Description** 

 `AWSConfigRemediation-RestrictBucketSSLRequestsOnly` Runbook 會建立 Amazon Simple Storage Service (Amazon S3) 儲存貯體政策陳述式，明確拒絕對您所指定 Amazon S3 儲存貯體的 HTTP 請求。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSConfigRemediation-RestrictBucketSSLRequestsOnly) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（必要） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。
+ BucketName

  類型：字串

  描述：（必要） 您要拒絕 HTTP 請求的 S3 儲存貯體名稱。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+  `ssm:StartAutomationExecution` 
+  `ssm:GetAutomationExecution` 
+  `s3:DeleteBucketPolicy` 
+  `s3:GetBucketPolicy` 
+  `s3:PutEncryptionConfiguration` 
+  `s3:PutBucketPolicy` 

 **文件步驟** 
+  `aws:executeScript` - 為 `BucketName` 參數中指定的 S3 儲存貯體建立儲存貯體政策，以明確拒絕 HTTP 請求。

# `AWSSupport-TroubleshootS3PublicRead`
<a name="automation-awssupport-troubleshoots3publicread"></a>

 **Description** 

 `AWSSupport-TroubleshootS3PublicRead` Runbook 會診斷從您在 `S3BucketName` 參數中指定的公有 Amazon Simple Storage Service (Amazon S3) 儲存貯體讀取物件的問題。也會分析 S3 儲存貯體中物件的設定子集。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootS3PublicRead) 

 **限制** 
+ 此自動化不會檢查允許公開存取物件的存取點。
+ 此自動化不會評估 S3 儲存貯體政策中的條件索引鍵。
+ 如果您使用的是 AWS Organizations，則此自動化不會評估服務控制政策，以確認允許存取 Amazon S3。

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ CloudWatchLogGroupName

  類型：字串

  描述：（選用） 您要傳送自動化輸出的 Amazon CloudWatch Logs 日誌群組。如果找不到符合您指定值的日誌群組，自動化將會使用此參數值建立日誌群組。此自動化所建立之日誌群組的保留期間為 14 天。
+ CloudWatchLogStreamName

  類型：字串

   描述：（選用） 您要傳送自動化輸出的 CloudWatch Logs 日誌串流。如果找不到符合您指定值的日誌串流，自動化將會使用此參數值建立日誌串流。如果您未指定此參數的值，自動化將使用 `ExecutionId`做為日誌串流的名稱。
+ HttpGet

  類型：布林值

  有效值：true \$1 false

  預設：true

   描述：（選用） 如果此參數設定為 `true` ，自動化會對`S3BucketName`您指定的 中的物件提出部分 HTTP 請求。使用 Range HTTP 標頭只會傳回物件的第一個位元組。
+ IgnoreBlockPublicAccess

  類型：布林值

  有效值：true \$1 false

  預設：false

   描述：（選用） 如果此參數設為 `true` ，自動化會忽略您在 `S3BucketName` 參數中指定的 S3 儲存貯體的公有存取區塊設定。不建議從預設值變更此參數。
+ MaxObjects

  類型：整數

  有效值：1-25

  預設：5

   描述：（選用） 您在 `S3BucketName` 參數中指定的 S3 儲存貯體中要分析的物件數量。
+ S3BucketName

  類型：字串

  描述：（必要） 要故障診斷的 S3 儲存貯體名稱。
+ S3PrefixName

  類型：字串

   描述：（選用） 您要在 S3 儲存貯體中分析之物件的金鑰名稱字首。如需詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[物件金鑰](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html#object-keys)。
+ StartAfter

  類型：字串

  描述：（選用） 您希望自動化開始分析 S3 儲存貯體中物件的物件金鑰名稱。
+ ResourcePartition

  類型：字串

   有效值：`aws` \$1 `aws-us-gov` \$1 `aws-cn` 

   預設：`aws`

  描述：（必要） S3 儲存貯體所在的分割區。
+ 詳細資訊

  類型：布林值

  有效值：true \$1 false

  預設：false

   描述：（選用） 若要在自動化期間傳回更多詳細資訊，請將此參數設定為 `true` 。如果 參數設定為 `false` ，則只會傳回警告和錯誤訊息。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。

 只有在您希望自動化將日誌資料傳送至 CloudWatch Logs 時，才需要 `logs:CreateLogGroup` `logs:CreateLogStream` 、 和 `logs:PutLogEvents`許可。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "iam:SimulateCustomPolicy",
                "iam:GetContextKeysForCustomPolicy",
                "s3:ListAllMyBuckets",
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:PutRetentionPolicy",
                "s3:GetAccountPublicAccessBlock"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:GetBucketPublicAccessBlock",
                "s3:GetBucketRequestPayment",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketPolicy",
                "s3:GetBucketAcl"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1",
            "Effect": "Allow"
        }
    ]
}
```

------

 **文件步驟** 
+  `aws:assertAwsResourceProperty` - 確認 S3 儲存貯體存在且可存取。
+  `aws:executeScript` - 傳回 S3 儲存貯體位置和正式使用者 ID。
+  `aws:executeScript` - 傳回您帳戶的公有存取區塊設定和 S3 儲存貯體。
+  `aws:assertAwsResourceProperty` - 確認 S3 儲存貯體付款人設定為 `BucketOwner` 。如果在 S3 儲存貯體上啟用 `Requester Pays` ，則自動化會結束。
+  `aws:executeScript` - 傳回 S3 儲存貯體政策狀態，並判斷其是否被視為公有。如需公有 S3 儲存貯體的詳細資訊，請參閱[《Amazon Simple Storage Service 使用者指南》中的「公」意義](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html#access-control-block-public-access-policy-status)。 **
+  `aws:executeAwsApi` - 傳回 S3 儲存貯體政策。
+  `aws:executeAwsApi` - 傳回 S3 儲存貯體政策中找到的所有內容索引鍵。
+  `aws:assertAwsResourceProperty` - 確認 `GetObject` API 動作的 S3 儲存貯體政策中是否有明確拒絕。
+  `aws:executeAwsApi` - 傳回 S3 儲存貯體的存取控制清單 (ACL)。
+  `aws:executeScript` - 如果您指定 `CloudWatchLogGroupName` 參數的值，則建立 CloudWatch Logs 日誌群組和日誌串流。
+  `aws:executeScript` - 根據您在 Runbook 輸入參數中指定的值， 會評估自動化期間收集的任何 S3 儲存貯體設定是否阻止公有存取物件。此指令碼會執行下列函數：
  + 評估公有存取區塊設定
  +  根據您在 、 `S3PrefixName` 和 `StartAfter` 參數中指定的值，從 S3 `MaxObjects` 儲存貯體傳回物件。
  + 傳回 S3 儲存貯體政策，以模擬從 S3 儲存貯體傳回之物件的自訂 IAM S3政策。
  +  如果 `HttpGet` 參數設定為 ，則對傳回的物件執行部分 HTTP `true` 請求。使用 Range HTTP 標頭只會傳回物件的第一個位元組。
  + 檢查傳回物件的金鑰名稱，以確認其結尾是一或兩個句點。無法從 Amazon S3 主控台下載以句點結尾的物件金鑰名稱。
  + 檢查傳回物件的擁有者是否與 S3 儲存貯體的擁有者相符。
  +  檢查物件的 ACL 是否授予匿名使用者`READ`或`FULL_CONTROL`許可。
  + 傳回與物件相關聯的標籤。
  +  使用模擬 IAM 政策來確認 `GetObject` API 動作的 S3 儲存貯體政策中是否明確拒絕此物件。
  + 傳回物件的中繼資料，以確認支援儲存體方案。
  + 檢查物件的伺服器端加密設定，以確認是否使用 a AWS Key Management Service (AWS KMS) 客戶受管金鑰來加密物件。

 **輸出** 

AnalyzeObjects.bucket

AnalyzeObjects.object

# `AWSSupport-ConfigureS3ReplicationSameAndCrossAccount`
<a name="automation-aws-configures3replicationsameandcrossaccount"></a>

 **Description** 

`AWSSupport-ConfigureS3ReplicationSameAndCrossAccount` 自動化 Runbook 會為相同或跨帳戶設定來源與目的地儲存貯體之間的 Amazon Simple Storage Service (Amazon S3) 儲存貯體複寫。此自動化支援複寫使用 Amazon S3-Managed管金鑰 (SSE-S3) 進行伺服器端加密和使用 AWS Key Management Service (SSE-KMS) 進行伺服器端加密的儲存貯體。它還支援字首和標籤型選擇性複寫篩選、具有 15 分鐘 SLA 的 Amazon S3 複寫時間控制 (Amazon S3 RTC)，以及刪除標記複寫。自動化會執行下列動作：
+ 驗證輸入參數和儲存貯體組態的相容性。
+ 檢查來源和目的地儲存貯體上的加密設定。
+ 如果未提供 作為輸入，則建立具有適當複寫許可的新 AWS Identity and Access Management (IAM) 角色。
+ 根據指定的參數 （字首、標籤或整個儲存貯體） 設定複寫規則。
+ 如果尚未啟用，請啟用儲存貯體版本控制。
+ 使用複寫時間控制 (RTC) 和刪除標記複寫等選用功能來設定複寫組態。

**重要**  
**此自動化不支援具有現有複寫規則的儲存貯體。**來源儲存貯體不得有任何現有的複寫組態。
如果未提供 S3ReplicationRole 輸入，則**此自動化會建立具有適當複寫許可的新 IAM 角色**。
**此自動化不會複寫現有的物件。**Amazon S3 複寫僅適用於啟用複寫組態後上傳/建立的物件。
對於跨帳戶複寫，您必須為目的地帳戶中的 IAM 角色提供適當的 Amazon S3 操作和 AWS KMS 操作許可 （如果儲存貯體使用 AWS KMS 加密）。
此自動化使用 `aws:approve`動作，這會暫時暫停執行，直到指定的委託人核准組態變更為止。如需詳細資訊[，請參閱使用核准者執行自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/running-automations-require-approvals.html)。

 **如何運作？** 

Runbook 會執行下列步驟：
+ **ValidateInputParameters**：驗證所有輸入參數的正確性和相容性，以確保適當的複寫組態。
+ **PrepareApprovalMessage**：準備包含所有複寫組態參數的核准訊息以供使用者檢閱。
+ **RequestApproval**：在來源儲存貯體上新增 Amazon S3 複寫組態之前，請求授權使用者的核准。
+ **CheckBucketEncryption**：檢查來源和目的地 Amazon S3 儲存貯體的加密組態，以判斷相容的複寫設定。
+ **BranchOnEncryptionType**：根據 Amazon S3 儲存貯體加密類型分支執行，以套用 SSE-S3 或 SSE-KMS 加密儲存貯體的適當複寫組態。
+ **ConfigureSSES3Replication**：為使用伺服器端加密搭配 Amazon S3 S3-Managed3 複寫，包括 IAM 角色和複寫規則。
+ **ConfigureSSEKMSReplication**：為使用伺服器端加密 AWS KMS (SSE-KMS) 加密的儲存貯體設定 Amazon S3 複寫，包括 IAM 角色、KMS 金鑰許可和複寫規則。
+ **CleanupResources**：當未提供 S3ReplicationRole 做為輸入時，清除在複寫組態失敗期間建立的 IAM 角色。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-ConfigureS3ReplicationSameAndCrossAccount) 

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+ s3:ListBucket
+ s3:GetBucketVersioning
+ s3:GetEncryptionConfiguration
+ s3:GetBucketLocation
+ s3:GetReplicationConfiguration
+ s3:PutBucketVersioning
+ s3:PutReplicationConfiguration
+ iam:ListRoles
+ iam:GetRole
+ iam:GetRolePolicy
+ iam：ListRoleTags
+ iam:ListAttachedRolePolicies
+ iam:ListRolePolicies
+ iam:SimulatePrincipalPolicy
+ iam:CreateRole
+ iam：TagRole
+ iam:PassRole
+ iam:DeleteRole
+ iam:DeleteRolePolicy
+ iam:DetachRolePolicy
+ iam：PutRolePolicy
+ sts:GetCallerIdentity
+ sns:Publish
+ kms:GetKeyPolicy （當儲存貯體使用 SSE-KMS 時，相同帳戶複寫）
+ kms:DescribeKey （當儲存貯體使用 SSE-KMS 時，相同帳戶複寫）
+ kms:PutKeyPolicy （當儲存貯體使用 SSE-KMS 時，相同帳戶複寫）
+ sts：AssumeRole （用於跨帳戶複寫）

**CrossAccountReplicationRole （適用於跨帳戶案例）：**

對於跨帳戶複寫，您必須在目的地帳戶中提供具有下列許可的 CrossAccountReplicationRole：
+ s3:ListBucket
+ s3:GetBucketVersioning
+ s3:GetBucketLocation
+ s3:GetBucketPolicy
+ s3:GetEncryptionConfiguration
+ s3:PutBucketVersioning
+ s3:PutBucketPolicy
+ kms:GetKeyPolicy （跨帳戶目的地儲存貯體使用 SSE-KMS 時）
+ kms:DescribeKey （跨帳戶目的地儲存貯體使用 SSE-KMS 時）
+ kms:PutKeyPolicy （跨帳戶目的地儲存貯體使用 SSE-KMS 時）

**S3ReplicationRole （客戶提供的角色）：**

如果您提供現有的 S3ReplicationRole，則必須具有下列許可：
+ s3:ListBucket
+ s3:GetBucketLocation
+ s3:GetReplicationConfiguration
+ s3：GetObjectVersionAcl
+ s3：GetObjectVersionTagging
+ s3：GetObjectVersionForReplication
+ s3：GetObjectTagging
+ s3：ReplicateObject
+ s3：ReplicateDelete
+ s3：ReplicateTags
+ s3：ObjectOwnerOverrideToBucketOwner
+ kms:Decrypt （對於 SSE-KMS 案例，來源 KMS 金鑰）
+ kms:Encrypt （適用於 SSE-KMS 案例、目的地 KMS 金鑰）
+ kms:GenerateDataKey （適用於 SSE-KMS 案例、目的地 KMS 金鑰）
+ kms:ReEncrypt\$1 （適用於 SSE-KMS 案例、目的地 KMS 金鑰）

**相同帳戶複寫**的範例 **AutomationAssumeRole** 政策：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3Permissions",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketVersioning",
                "s3:GetEncryptionConfiguration",
                "s3:GetBucketLocation",
                "s3:GetReplicationConfiguration",
                "s3:ListBucket",
                "s3:PutBucketVersioning",
                "s3:PutReplicationConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::SOURCE_BUCKET",
                "arn:aws:s3:::DESTINATION_BUCKET"
            ]
        },
        {
            "Sid": "IAMReadOperations",
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:ListRoleTags",
                "iam:ListAttachedRolePolicies",
                "iam:ListRolePolicies",
                "iam:SimulatePrincipalPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "IAMListRolesForCleanup",
            "Effect": "Allow",
            "Action": "iam:ListRoles",
            "Resource": "*"
        },
        {
            "Sid": "IAMCreateAndTagRole",
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:TagRole"
            ],
            "Resource": "arn:aws:iam::ACCOUNT_ID:role/S3RepRole-*",
            "Condition": {
                "StringLike": {
                    "aws:RequestTag/AWSSupport-ConfigureS3ReplicationSameAndCrossAccount": "*"
                }
            }
        },
        {
            "Sid": "IAMPassRole",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::ACCOUNT_ID:role/S3RepRole-*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "s3.amazonaws.com"
                }
            }
        },
        {
            "Sid": "TaggedIAMRoleModifyAndDeleteOperations",
            "Effect": "Allow",
            "Action": [
                "iam:DeleteRole",
                "iam:DeleteRolePolicy",
                "iam:DetachRolePolicy",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::ACCOUNT_ID:role/S3RepRole-*",
            "Condition": {
                "StringLike": {
                    "aws:ResourceTag/AWSSupport-ConfigureS3ReplicationSameAndCrossAccount": "*"
                }
            }
        },
        {
            "Sid": "STSGetCallerIdentity",
            "Effect": "Allow",
            "Action": "sts:GetCallerIdentity",
            "Resource": "*"
        },
        {
            "Sid": "SNSPublish",
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "SNS_TOPIC_ARN"
        },
        {
            "Sid": "KMSKeyReadOperations",
            "Effect": "Allow",
            "Action": [
                "kms:GetKeyPolicy",
                "kms:DescribeKey"
            ],
            "Resource": [
                "arn:aws:kms:REGION:ACCOUNT_ID:key/SOURCE_KMS_KEY_ID",
                "arn:aws:kms:REGION:ACCOUNT_ID:key/DESTINATION_KMS_KEY_ID"
            ]
        },
        {
            "Sid": "KMSKeyMutatingOperations",
            "Effect": "Allow",
            "Action": "kms:PutKeyPolicy",
            "Resource": [
                "arn:aws:kms:REGION:ACCOUNT_ID:key/SOURCE_KMS_KEY_ID",
                "arn:aws:kms:REGION:ACCOUNT_ID:key/DESTINATION_KMS_KEY_ID"
            ],
            "Condition": {
                "StringEquals": {
                    "kms:CallerAccount": "ACCOUNT_ID"
                }
            }
        }
    ]
}
```

**注意**  
只有在儲存貯體使用 SSE-KMS 加密時，才需要政策陳述式 (KMSKeyReadOperations 和 KMSKeyMutatingOperations)。

**跨帳戶複寫**的範例 **AutomationAssumeRole** 政策：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3SourceBucketOperations",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketVersioning",
                "s3:GetEncryptionConfiguration",
                "s3:GetBucketLocation",
                "s3:GetReplicationConfiguration",
                "s3:ListBucket",
                "s3:PutBucketVersioning",
                "s3:PutReplicationConfiguration"
            ],
            "Resource": "arn:aws:s3:::SOURCE_BUCKET"
        },
        {
            "Sid": "IAMReadOperations",
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:ListRoleTags",
                "iam:ListAttachedRolePolicies",
                "iam:ListRolePolicies",
                "iam:SimulatePrincipalPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "IAMListRolesForCleanup",
            "Effect": "Allow",
            "Action": "iam:ListRoles",
            "Resource": "*"
        },
        {
            "Sid": "IAMCreateAndTagRole",
            "Effect": "Allow",
            "Action": [
                "iam:CreateRole",
                "iam:TagRole"
            ],
            "Resource": "arn:aws:iam::SOURCE_ACCOUNT_ID:role/S3RepRole-*",
            "Condition": {
                "StringLike": {
                    "aws:RequestTag/AWSSupport-ConfigureS3ReplicationSameAndCrossAccount": "*"
                }
            }
        },
        {
            "Sid": "IAMPassRole",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::SOURCE_ACCOUNT_ID:role/S3RepRole-*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "s3.amazonaws.com"
                }
            }
        },
        {
            "Sid": "TaggedIAMRoleModifyAndDeleteOperations",
            "Effect": "Allow",
            "Action": [
                "iam:DeleteRole",
                "iam:DeleteRolePolicy",
                "iam:DetachRolePolicy",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::SOURCE_ACCOUNT_ID:role/S3RepRole-*",
            "Condition": {
                "StringLike": {
                    "aws:ResourceTag/AWSSupport-ConfigureS3ReplicationSameAndCrossAccount": "*"
                }
            }
        },
        {
            "Sid": "CrossAccountRoleAssumption",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "CROSS_ACCOUNT_REPLICATION_ROLE_ARN"
        },
        {
            "Sid": "STSGetCallerIdentity",
            "Effect": "Allow",
            "Action": "sts:GetCallerIdentity",
            "Resource": "*"
        },
        {
            "Sid": "SNSPublish",
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "SNS_TOPIC_ARN"
        },
        {
            "Sid": "KMSSourceKeyReadOperations",
            "Effect": "Allow",
            "Action": [
                "kms:GetKeyPolicy",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:SOURCE_REGION:SOURCE_ACCOUNT_ID:key/SOURCE_KMS_KEY_ID"
        },
        {
            "Sid": "KMSSourceKeyMutatingOperations",
            "Effect": "Allow",
            "Action": "kms:PutKeyPolicy",
            "Resource": "arn:aws:kms:SOURCE_REGION:SOURCE_ACCOUNT_ID:key/SOURCE_KMS_KEY_ID",
            "Condition": {
                "StringEquals": {
                    "kms:CallerAccount": "SOURCE_ACCOUNT_ID"
                }
            }
        }
    ]
}
```

**注意**  
只有在來源儲存貯體使用 SSE-KMS 加密時，才需要政策陳述式 (KMSSourceKeyReadOperations 和 KMSSourceKeyMutatingOperations)。
將 CROSS\$1ACCOUNT\$1REPLICATION\$1ROLE\$1ARN 取代為您提供給自動化的實際 CrossAccountReplicationRole 參數值。

**CrossAccountReplicationRole** 政策範例：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3DestinationBucketReadOperations",
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketVersioning",
                "s3:GetBucketLocation",
                "s3:GetBucketPolicy",
                "s3:GetEncryptionConfiguration",
                "s3:ListBucket",
                "s3:PutBucketVersioning",
                "s3:PutBucketPolicy"
            ],
            "Resource": "arn:aws:s3:::DESTINATION_BUCKET"
        },
        {
            "Sid": "KMSDestinationKeyReadOperations",
            "Effect": "Allow",
            "Action": [
                "kms:GetKeyPolicy",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:DESTINATION_REGION:DESTINATION_ACCOUNT_ID:key/DESTINATION_KMS_KEY_ID"
        },
        {
            "Sid": "KMSDestinationKeyMutatingOperations",
            "Effect": "Allow",
            "Action": "kms:PutKeyPolicy",
            "Resource": "arn:aws:kms:DESTINATION_REGION:DESTINATION_ACCOUNT_ID:key/DESTINATION_KMS_KEY_ID",
            "Condition": {
                "StringEquals": {
                    "kms:CallerAccount": "DESTINATION_ACCOUNT_ID"
                }
            }
        }
    ]
}
```

**注意**  
只有在目的地儲存貯體使用 SSE-KMS 加密時，才需要 KMS 陳述式 (KMSDestinationKeyReadOperations 和 KMSDestinationKeyMutatingOperations)。針對 SSE-S3 案例移除這些陳述式。

CrossAccountReplicationRole 信任政策範例：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "AUTOMATION_ASSUME_ROLE_ARN"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

**注意**  
以您提供給自動化的實際 AutomationAssumeRole 參數值取代 AUTOMATION\$1ASSUME\$1ROLE\$1ARN。

**S3ReplicationRole** 政策範例：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3SourceBucketPermissions",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:GetReplicationConfiguration",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectVersionTagging",
                "s3:GetObjectVersionForReplication",
                "s3:GetObjectTagging"
            ],
            "Resource": [
                "arn:aws:s3:::SOURCE_BUCKET",
                "arn:aws:s3:::SOURCE_BUCKET/*"
            ]
        },
        {
            "Sid": "S3DestinationBucketPermissions",
            "Effect": "Allow",
            "Action": [
                "s3:ReplicateObject",
                "s3:ReplicateDelete",
                "s3:ReplicateTags"
            ],
            "Resource": "arn:aws:s3:::DESTINATION_BUCKET/*"
        },
        {
            "Sid": "S3CrossAccountPermissions",
            "Effect": "Allow",
            "Action": "s3:ObjectOwnerOverrideToBucketOwner",
            "Resource": "arn:aws:s3:::DESTINATION_BUCKET/*"
        },
        {
            "Sid": "KMSSourceKeyPermissions",
            "Effect": "Allow",
            "Action": "kms:Decrypt",
            "Resource": "arn:aws:kms:SOURCE_REGION:SOURCE_ACCOUNT_ID:key/SOURCE_KMS_KEY_ID"
        },
        {
            "Sid": "KMSDestinationKeyPermissions",
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt",
                "kms:GenerateDataKey",
                "kms:ReEncrypt*"
            ],
            "Resource": "arn:aws:kms:DESTINATION_REGION:DESTINATION_ACCOUNT_ID:key/DESTINATION_KMS_KEY_ID"
        }
    ]
}
```

**注意**  
只有在儲存貯體使用 SSE-KMS 加密時，才需要 KMS 陳述式 (KMSSourceKeyPermissions 和 KMSDestinationKeyPermissions)。
只有跨帳戶儲存貯體複寫需要 S3CrossAccountPermissions 陳述式。

S3ReplicationRole 信任政策範例：

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

 **指示** 

請依照下列步驟設定自動化：

1. 在文件下的 Systems Manager [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ConfigureS3ReplicationSameAndCrossAccount/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ConfigureS3ReplicationSameAndCrossAccount/description)中導覽至 。

1. 選擇 **Execute automation** (執行自動化)。

1. 針對輸入參數，輸入下列內容：
   + **AutomationAssumeRole （必要）：**
     + 描述：（必要） (IAM) 角色的 Amazon Resource Name AWS Identity and Access Management (ARN)，允許 Systems Manager Automation 代表您執行動作。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
     + 類型：`AWS::IAM::Role::Arn`
   + **SourceBucket （必要）：**
     + 描述：（必要） 建立或更新複寫規則的來源 Amazon S3 儲存貯體名稱。
     + 類型：`AWS::S3::Bucket::Name`
   + **DestinationBucket （必要）：**
     + 描述：（必要） 將複寫物件的目標 Amazon S3 儲存貯體名稱。
     + 類型：`String`
     + 允許模式： `^[0-9a-z][a-z0-9\\-\\.]{3,63}$`
   + **SourceAccountId （必要）：**
     + 描述：（必要） 來源儲存貯體所在的 AWS 帳戶 ID。
     + 類型：`String`
     + 允許模式： `^[0-9]{12,13}$`
   + **DestinationAccountId （必要）：**
     + 描述：（必要） 目的地儲存貯體所在的 AWS 帳戶 ID。
     + 類型：`String`
     + 允許模式： `^[0-9]{12,13}$`
   + **SnsNotificationArn （必要）：**
     + 描述：（必要） 自動化核准的 Amazon Simple Notification Service (Amazon SNS) 主題 ARN。
     + 類型：`String`
     + 允許模式： `^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):sns:[a-z]{2}(-gov)?(-iso[a-z]?)?-[a-z]{2,10}-[0-9]{1,2}:\\d{12}:[0-9a-zA-Z-_]{1,256}(.fifo)?$`
   + **核准者 （必要）：**
     + 描述：（必要） 授權核准自動化執行的 IAM 使用者/角色 ARNs 清單。
     + 類型：`StringList`
     + 允許模式： `^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::\\d{12}:(user|role)/[\\w+=,.@\\-/]+$`
   + **S3ReplicationRole （選用）：**
     + 描述：（選用） 用於 Amazon S3 複寫操作的現有 IAM 角色的 ARN。如果儲存貯體使用 SSE-KMS 加密，此角色必須具有從來源儲存貯體讀取和寫入目的地儲存貯體的許可，包括 KMS 許可。如果未提供，自動化將建立具有適當許可的新角色。
     + 類型：`String`
     + 允許模式： `^$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::\\d{12}:role/[\\w+=,.@\\-/]+$`
     + 預設：`""`
   + **CrossAccountReplicationRole （選用）：**
     + 描述：（選用） 自動化可擔任之目的地帳戶中 IAM 角色的 ARN。這是跨帳戶複寫的必要項目。對於相同帳戶複寫，請將此保留空白。
     + 類型：`String`
     + 允許模式： `^$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::\\d{12}:role/[\\w+=,.@\\-/]+$`
     + 預設：`""`
   + **ReplicateEntireBucket （選用）：**
     + 描述：（選用） 如果設定為 `true`，則會複寫整個儲存貯體，且字首和標籤都必須空白。如果為 false，複寫將以指定的字首或標籤為基礎。
     + 類型：`Boolean`
     + 允許的值： `[true, false]`
     + 預設：`true`
   + **ReplicationRuleStatus （選用）：**
     + 描述：（選用） 如果設定為 `true`，則會啟用建立的複寫規則。如果設為 `false`，則建立的複寫規則將設為**已停用**。
     + 類型：`Boolean`
     + 允許的值： `[true, false]`
     + 預設：`true`
   + **DeleteMarkerReplicationStatus （選用）：**
     + 描述：（選用） 如果設定為 `true`，自動化會啟用刪除標記複寫。
     + 類型：`Boolean`
     + 允許的值： `[true, false]`
     + 預設：`false`
   + **ReplicationTimeControl （選用）：**
     + 描述：（選用） 如果設定為 `true`， 會使用 15 分鐘的 SLA 啟用 Amazon S3 複寫時間控制 (Amazon S3 RTC)，以取得可預測的複寫時間。
     + 類型：`Boolean`
     + 允許的值： `[true, false]`
     + 預設：`false`
   + **ReplicaModifications （選用）：**
     + 描述：（選用） 如果設定為 `true`，則啟用複寫對複本物件所做的中繼資料變更，允許對複寫物件的修改同步回來源。
     + 類型：`Boolean`
     + 允許的值： `[true, false]`
     + 預設：`false`
   + **字首 （選用）：**
     + 描述：（選用） 用於選擇性複寫具有特定金鑰字首之物件的字首篩選條件。字首必須以斜線 (/) 結尾，才能正確篩選 Amazon S3 字首。
     + 類型：`String`
     + 允許模式： `^$|^[a-zA-Z0-9!_'()\\-]*/+$`
     + 預設：`""`
   + **標籤 （選用）：**
     + 描述：（選用） 用於篩選要複寫之物件的標籤 JSON 陣列。單一標籤的格式：【\$1"Key"："TagKey"，"Value"："TagValue"\$1】 和多個標籤的格式：【\$1"Key"："TagKey1"，"Value"："TagValue1"\$1，\$1"Key"："TagKey2"，"Value"："TagValue2"\$1】。
     + 類型：`String`
     + 允許模式： `^\\[((\\{\"Key\":\"[a-zA-Z0-9+\\-=.:/ @\\s]{1,128}\",\"Value\":\"[a-zA-Z0-9+\\-=.:/@\\s]{0,256}\"\\})(,\\{\"Key\":\"[a-zA-Z0-9+\\-=.:/ @\\s]{1,128}\",\"Value\":\"[a-zA-Z0-9+\\-=.:/@\\s]{0,256}\"\\})*)?\\]$`
     + 預設：`[]`

1. 選取**執行**。

1. 自動化會啟動。

1. 文件會執行下列步驟：
   + **ValidateInputParameters**：

     驗證所有輸入參數的正確性和相容性，以確保適當的複寫組態。
   + **PrepareApprovalMessage**：

     使用所有複寫組態參數準備核准訊息以供使用者檢閱。
   + **RequestApproval**：

     在繼續進行 Amazon S3 複寫組態變更之前，請求授權使用者的核准。
   + **CheckBucketEncryption**：

     檢查來源和目的地 Amazon S3 儲存貯體的加密組態，以判斷相容的複寫設定。
   + **BranchOnEncryptionType**：

     根據 Amazon S3 儲存貯體加密類型分支執行，以套用 SSE-S3 或 SSE-KMS 加密儲存貯體的適當複寫組態。
   + **ConfigureSSES3Replication**：

     為使用伺服器端加密搭配 Amazon S3 S3-Managed 複寫，包括 IAM 角色和複寫規則。
   + **ConfigureSSEKMSReplication**：

     針對使用伺服器端加密 AWS KMS (SSE-KMS) 加密的儲存貯體設定 Amazon S3 複寫，包括 IAM 角色、KMS 金鑰許可和複寫規則。
   + **CleanupResources**：

     當客戶未提供 S3ReplicationRole 時，清除在複寫組態失敗期間建立的 IAM 角色。

1. 完成後，請檢閱 **ConfigureSSES3Replication** 步驟 （適用於 SSE-S3 加密儲存貯體） 或 **ConfigureSSEKMSReplication** 步驟 （適用於 SSE-KMS 加密儲存貯體） 的輸出以取得執行結果，包括複寫組態狀態以及用於複寫的 IAM 角色。

**參考**

Systems Manager Automation
+ [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ConfigureS3ReplicationSameAndCrossAccount/description)
+ [執行自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [設定 自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [支援自動化工作流程](https://aws.amazon.com/premiumsupport/technology/saw/)

# `AWSSupport-EmptyS3Bucket`
<a name="automation-aws-empty-s3-bucket"></a>

 **Description** 

 `AWSSupport-EmptyS3Bucket` 自動化 Runbook 會使用生命週期過期組態規則來清空現有的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。

**重要**  
不支援啟用多重要素驗證 (MFA) 的 Amazon S3 儲存貯體。
 此 Runbook 修改的生命週期規則會永久刪除指定 Amazon S3 儲存貯體中的所有物件及其版本。您無法復原永久刪除的物件。如需詳細資訊，請參閱[即將過期的物件](https://docs.aws.amazon.com//AmazonS3/latest/userguide/lifecycle-expire-general-considerations.html)。

 **如何運作？** 

 Runbook 會`AWSSupport-EmptyS3Bucket`執行下列高階步驟：
+ 如果啟用，暫停儲存貯體版本控制。
+ 更新儲存貯體政策以拒絕任何 `s3:PutObject` API 呼叫 （以防止在清空時新上傳）。
+ 更新生命週期規則，根據輸入參數中指定的過期日期刪除所有物件。

**注意**  
生命週期組態不會刪除或覆寫受 Amazon S3 物件鎖定保護的物件版本。
刪除程序是非同步的，在執行手冊執行完成後可能需要一些時間才能完成。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-EmptyS3Bucket) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

/

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。

 AutomationAssumeRole 參數需要下列動作，才能成功使用 Runbook：
+ ssm:DescribeAutomationExecutions
+ ssm:GetAutomationExecution
+ s3:GetBucketVersioning
+ s3:PutBucketVersioning
+ s3:GetBucketPolicy
+ s3:GetBucketLifecycleConfiguration
+ s3:GetLifecycleConfiguration
+ s3:PutBucketPolicy
+ s3：PutBucketLifecycleConfiguration
+ s3:PutLifecycleConfiguration
+ s3:DeleteBucketPolicy
+ s3：DeleteBucketLifecycle

 **指示** 

請依照下列步驟設定自動化：

1. 在文件下的 Systems Manager [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-EmptyS3Bucket/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-EmptyS3Bucket/description)中導覽至 。

1. 選擇 Execute automation (執行自動化)。

1. 針對輸入參數，輸入下列內容：
   + **AutomationAssumeRole （選用）：**

     (IAM) 角色的 Amazon Resource Name AWS AWS Identity and Access Management (ARN)，允許 Systems Manager Automation 代表您執行動作。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
   + **S3BucketName：**

     您要清空的 Amazon S3 儲存貯體名稱。
   + **SNSTopicArn：**

     提供 Amazon SNS 主題的 ARN 以進行核准通知。此 Amazon SNS 主題用於在自動化執行期間所需的期間傳送核准通知。
   + **ApproverIAM：**

     提供能夠核准或拒絕動作的已 AWS 驗證主體清單。核准者數目上限為 `10`。您可以使用任何這些格式、 AWS Identity and Access Management (IAM) 使用者名稱、IAM 使用者 ARN、IAM 角色 ARN 或 IAM 擔任角色使用者 ARN 來指定主體。
   + **MinimumRequiredApprovals （選用）：**

     繼續自動化所需的核准數量下限。如果您未指定值，系統會預設為 `1`。此參數的值必須為正數。此參數的值不能超過 ApproverIAM 參數定義的核准者數目。
   + **NoncurrentVersionExpirationDays （選用）：**

     指定非目前物件版本過期的天數。過期時，Amazon S3 會永久刪除非目前的物件版本。
     + 預設：`1`
     + 最大值： `365`
   + **ExpirationDays （選用）：**

     以天數形式指定物件生命週期的過期時間。
     + 預設：`1`
     + 最大值： `365`
   + **AbortIncompleteMultipartUpload （選用）：**

     指定自啟動未完成分段上傳以來，Amazon S3 將等待的天數，然後再永久移除上傳的所有部分。
     + 預設：`1`
     + 最大值： `365`
   + **確認：**

     請閱讀此自動化 Runbook 所執行動作的完整詳細資訊，並在您確認步驟`Yes, I understand and acknowledge`時提供同意。  
![\[包含 AWSSupport-EmptyS3Bucket 文件範例輸入參數的影像。\]](http://docs.aws.amazon.com/zh_tw/systems-manager-automation-runbooks/latest/userguide/images/awssupport-empty-s3-bucket_input_parameters.png)

1. 選取執行。

1. 自動化會啟動。

1. 文件會執行下列步驟：
   + **`checkConcurrency`**:

     確保只有一個針對指定 Amazon S3 儲存貯體的 Runbook 執行。如果 Runbook 找到另一個以相同儲存貯體名稱為目標的進行中執行，則會傳回錯誤並結束。
   + **`getBucketVersioningConfiguration`**:

     擷取指定 Amazon S3 儲存貯體的版本控制狀態。
   + **`branchOnStoppingIfMFADeleteEnabled`** （條件式）：

     如果在指定的 Amazon S3 儲存貯體上啟用多重要素驗證 (MFA)，則停止自動化。
   + **`approvalToMakeChangesToTheProvidedS3Bucket`**:

     等待指定的委託人核准，以停用儲存貯體版本控制，並更新指定 Amazon S3 儲存貯體的儲存貯體政策和生命週期規則組態。
   + **`branchOnBucketVersioningStatus`** （條件式）：

     如果在指定的 Amazon S3 儲存貯體上啟用版本控制，請將其停用，否則請繼續更新儲存貯體政策和生命週期組態。
   + **`suspendBucketVersioning`**:

     暫停指定 Amazon S3 儲存貯體的版本控制狀態。
   + **`updateBucketPolicyAndLifeCycleConfiguration`**:

     新增或更新儲存貯體政策以拒絕所有`s3:PutObject`請求，並更新生命週期組態以根據使用者提供的輸入參數使物件過期。
   + **`branchOnFailingIfBucketPropertiesNotUpdated`** （條件式）：

     檢查`updateBucketPolicyAndLifeCycleConfiguration`步驟的狀態，並嘗試在自動化變更時還原原始儲存貯體版本控制狀態。
   + **`branchOnFailureOriginalVersioningStatus`** （有條件）：

     失敗時， 分支會判斷原始版本控制狀態。如果 已由此自動化啟用和暫停， 會嘗試再次啟用它。
   + **`onFailureRestoreBucketVersioning`**

     還原指定 Amazon S3 儲存貯體的已啟用版本控制狀態。

1. 完成後，請檢閱輸出區段以取得執行的詳細結果：  
![\[包含 AWSSupport-EmptyS3Bucket 文件執行輸出的影像，顯示成功的執行和設定的生命週期政策。\]](http://docs.aws.amazon.com/zh_tw/systems-manager-automation-runbooks/latest/userguide/images/awssupport-empty-s3-bucket_outputs.png)
   + **成功執行**

     此工作流程會更新儲存貯體的生命週期規則。物件將根據`Delete-All-AWSSupport-EmptyS3-Bucket`生命週期政策刪除。  
![\[包含已設定 Delete-All-AWSSupport-EmptyS3-Bucket 生命週期政策的影像。\]](http://docs.aws.amazon.com/zh_tw/systems-manager-automation-runbooks/latest/userguide/images/awssupport-empty-s3-bucket_outputs_lifecycle_policy.png)
   + **失敗執行**

     不會執行部分刪除。如果執行失敗，生命週期和其他儲存貯體設定會復原。

**參考**

Systems Manager Automation
+ [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-EmptyS3Bucket/description)
+ [執行自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [設定 自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [支援自動化工作流程](https://aws.amazon.com/premiumsupport/technology/saw/)

如需管理 Amazon S3 儲存貯體和物件的詳細資訊，請參閱[清空儲存貯體](https://docs.aws.amazon.com//AmazonS3/latest/userguide/empty-bucket.html)。

# `AWSSupport-TroubleshootS3EventNotifications`
<a name="awssupport-troubleshoot-s3-event-notifications"></a>

 **Description** 

 `AWSSupport-TroubleshootS3EventNotifications` AWS Systems Manager 自動化 Runbook 可協助疑難排解使用 AWS Lambda 函數、Amazon Simple Notification Service (Amazon S3) 儲存貯體事件通知。 Amazon SNS Amazon SQS 它提供使用 Amazon S3 儲存貯體設定為目的地事件通知之不同資源的組態設定報告。

 **如何運作？** 

 Runbook 會執行下列步驟：
+ 檢查 Amazon S3 儲存貯體是否存在於`AWSSupport-TroubleshootS3EventNotifications`執行 的相同帳戶中。
+ 使用 [GetBucketNotificationConfiguration](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html) API 擷取設定為 Amazon S3 儲存貯體事件通知的目的地資源 (AWS Lambda 函數或 Amazon SNS 主題或 Amazon SQS 佇列）。
+ 驗證目的地資源是否存在，然後檢閱目的地資源的資源型政策，以判斷是否允許 Amazon S3 發佈至目的地。
+ 如果您使用 AWS Key Management Service (AWS KMS) 金鑰加密目的地，則會檢查金鑰政策，以判斷是否允許 Amazon S3 存取。
+ 產生所有目的地資源檢查的報告。

**重要**  
只有在 Amazon S3 儲存貯體擁有者與執行自動化 Runbook 的 AWS 帳戶 擁有者相同時，此 Runbook 才能評估事件通知組態。
此外，此 Runbook 無法評估在另一個 中託管之目的地資源的政策 AWS 帳戶。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootS3EventNotifications) 

**文件類型**

 自動化

**擁有者**

Amazon

**平台**

Linux、macOS、 Windows

**參數**
+ AutomationAssumeRole

  類型：字串

  描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 (IAM) 角色的 AWS Identity and Access Management Amazon Resource Name (ARN)。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
+ S3BucketName

  類型：`AWS::S3::Bucket::Name`

  描述：（必要） 使用事件通知設定的 Amazon S3 儲存貯體名稱 （含）。

**必要的 IAM 許可**

`AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+ `s3:GetBucketLocation`
+ `s3:ListAllMyBuckets`
+ `s3:GetBucketNotification`
+ `sqs:GetQueueAttributes`
+ `sqs:GetQueueUrl`
+ `sns:GetTopicAttributes `
+ `kms:GetKeyPolicy`
+ `kms:DescribeKey`
+ `kms:ListAliases`
+ `lambda:GetPolicy`
+ `lambda:GetFunction`
+ `iam:GetContextKeysForCustomPolicy`
+ `iam:SimulateCustomPolicy`
+ `iam:ListRoles`
+ `ssm:DescribeAutomationStepExecutions`

 **自動化擔任角色的 IAM 政策範例** 

------
#### [ JSON ]

****  

```
                    {
                        "Version":"2012-10-17",		 	 	 
                        "Statement": [
                            {   
                                "Sid": "S3Permission",
                                "Effect": "Allow",
                                "Action": [
                                    "s3:GetBucketLocation",
                                    "s3:ListAllMyBuckets"
                                ],
                                "Resource": "*"
                            },
                            {   
                                "Sid": "S3PermissionGetBucketNotification",
                                "Effect": "Allow",
                                "Action": [
                                    "s3:GetBucketNotification"
                                ],
                                "Resource": "arn:aws:s3:::amzn-s3-demo-bucket"
                            },
                            {
                                "Sid": "SQSPermission",
                                "Effect": "Allow",
                                "Action": [
                                    "sqs:GetQueueAttributes",
                                    "sqs:GetQueueUrl"
                                ],
                                "Resource": "arn:aws:sqs:us-east-1:111122223333:*"
                            },
                            {
                                "Sid": "SNSPermission",
                                "Effect": "Allow",
                                "Action": [
                                    "sns:GetTopicAttributes"
                                ],
                                "Resource": "arn:aws:sns:us-east-1:111122223333:*"
                            },
                            {   
                            "Sid": "KMSPermission",
                                "Effect": "Allow",
                                "Action": [
                                    "kms:GetKeyPolicy",
                                    "kms:DescribeKey",
                                    "kms:ListAliases"
                                ],
                                "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id"
                            },
                            {
                                "Sid": "LambdaPermission",
                                "Effect": "Allow",
                                "Action": [
                                    "lambda:GetPolicy",
                                    "lambda:GetFunction"
                                ],
                                "Resource": "arn:aws:lambda:us-east-1:111122223333:function:*"
                            },
                            {
                                "Sid": "IAMPermission",
                                "Effect": "Allow",
                                "Action": [
                                    "iam:GetContextKeysForCustomPolicy",
                                    "iam:SimulateCustomPolicy",
                                    "iam:ListRoles"
                                ],
                                "Resource": "*"
                            },
                            {
                                "Sid": "SSMPermission",
                                "Effect": "Allow",
                                "Action": [
                                    "ssm:DescribeAutomationStepExecutions"
                                ],
                                "Resource": "*"
                            }
                        ]
                    }
```

------

 **指示** 

請依照下列步驟設定自動化：

1. 在文件下的 Systems Manager [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootS3EventNotifications/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootS3EventNotifications/description)中導覽至 。

1. 選擇 Execute automation (執行自動化)。

1. 針對輸入參數，輸入下列內容：
   + **AutomationAssumeRole （選用）：**

     (IAM) 角色的 Amazon Resource Name AWS AWS Identity and Access Management (ARN)，允許 Systems Manager Automation 代表您執行動作。如果未指定角色，Systems Manager Automation 會使用啟動此 Runbook 之使用者的許可。
   + **S3BucketName （必要）：**

     使用事件通知 (Amazon S3) 設定的 Amazon S3 儲存貯體名稱。  
![\[AWSSupport-TroubleshootS3EventNotification Runbook 執行輸入參數。\]](http://docs.aws.amazon.com/zh_tw/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-s3-event-notifications_input_parameters.png)

1. 選取執行。

1. 自動化會啟動。

1. 文件會執行下列步驟：
   + **ValidateInputs**

     驗證提供的 Amazon S3 儲存貯體屬於執行自動化的相同帳戶，並擷取儲存貯體託管的區域。
   + **GetBucketNotificationConfiguration**

     呼叫 `GetBucketNotificationConfiguration` API 來檢閱使用 Amazon S3 儲存貯體設定的事件通知，並格式化輸出。
   + **BranchOnSQSResourcePolicy**

     有關事件通知中是否有 Amazon SQS 資源的分支。
   + **ValidateSQSResourcePolicy**

     驗證 Amazon SQS 佇列屬性上的資源政策具有 Amazon S3 的`sqs:SendMessage`許可。如果 Amazon SQS 資源已加密， 會檢查加密是否未使用預設 AWS KMS 金鑰，即 ，`aws/sqs`並檢查 AWS KMS 金鑰政策是否具有 Amazon S3 的許可。
   + **BranchOnSNSResourcePolicy**

     有關事件通知中是否有 Amazon SNS 資源的分支。
   + **ValidateSNSResourcePolicy**

     驗證 Amazon SNS 主題屬性上的資源政策具有 Amazon S3 的`sns:Publish`許可。如果 Amazon SNS 資源已加密， 會檢查加密是否未使用預設 AWS KMS 金鑰，即 ，`aws/sns`並檢查 AWS KMS 金鑰政策是否具有 Amazon S3 的許可。
   + **BranchOnLambdaFunctionResourcePolicy**

     有關事件通知中是否有 AWS Lambda 函數的分支。
   + **ValidateLambdaFunctionResourcePolicy**

     驗證 AWS Lambda 函數上的資源政策具有 Amazon S3 的`lambda:InvokeFunction`許可。
   + **GenerateReport**

     傳回 Runbook 步驟輸出的詳細資訊，以及解決使用 Amazon S3 儲存貯體設定之事件通知的任何問題的建議。

1. 完成後，請檢閱輸出區段以取得執行的詳細結果：
   + **Amazon SQS 事件通知**

     如果使用 Amazon SQSAmazon S3 目的地通知，Amazon SQS 佇列的清單會與檢查結果一起顯示。報告包括 Amazon SQS 資源檢查、Amazon SQS 存取政策檢查、 AWS KMS 金鑰檢查、 AWS KMS 金鑰狀態檢查和 AWS KMS 金鑰政策檢查。
   + **Amazon SNS 事件通知**

     如果有使用 Amazon S3 儲存貯體設定的 Amazon SNS 目的地通知，Amazon SNS 主題清單會與檢查結果一起顯示。 Amazon S3 報告包含 Amazon SNS 資源檢查、Amazon SNS 存取政策檢查、 AWS KMS 金鑰檢查、 AWS KMS 金鑰狀態檢查和 AWS KMS 金鑰政策檢查。
   + **AWS Lambda 事件通知**

     如果有使用 Amazon S3 儲存貯體設定的 AWS Lambda 目的地通知，則 Lambda 函數清單會與檢查結果一起顯示。報告包含 Lambda 資源檢查和 Lambda 存取政策檢查。  
![\[AWSSupport-TroubleshootS3EventNotification Runbook 範例執行輸出。\]](http://docs.aws.amazon.com/zh_tw/systems-manager-automation-runbooks/latest/userguide/images/awssupport-troubleshoot-s3-event-notifications_outputs.png)

 **參考** 

Systems Manager Automation
+ [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-TroubleshootS3EventNotifications/description)
+ [執行自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [設定自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [支援自動化工作流程登陸頁面](https://aws.amazon.com/premiumsupport/technology/saw/)

# `AWSSupport-ContainS3Resource`
<a name="automation-awssupport-contains3resource"></a>

 **Description** 

 `AWSSupport-ContainS3Resource` Runbook 為[支援自動化工作流程 (SAW) Runbook：包含遭入侵的 AWS Amazon S3 儲存貯體](https://repost.aws/articles/ARhGc0hDqKRIKAVCbmF1GmuQ)中所述的程序提供自動化解決方案 

**重要**  
此 Runbook 會執行需要提高權限的各種操作，例如修改 Amazon S3 儲存貯體政策、標籤和公有存取組態。這些動作可能會導致權限提升，或影響依賴目標 Amazon S3 儲存貯體的其他工作負載。您應該檢閱授予 `AutomationAssumeRole` 參數所指定角色的許可，並確保這些許可適用於預期的使用案例。如需 IAM 許可的詳細資訊，請參閱下列 AWS 文件：[https://docs.aws.amazon.com//IAM/latest/UserGuide/access_controlling.html](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_controlling.html)[https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup-iam.html](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup-iam.html)。
此 Runbook 會執行可能導致工作負載無法使用或中斷的變動動作。具體而言， `Contain`動作會封鎖對指定 Amazon S3 儲存貯體的所有存取， `SecureRoles` 參數中指定的角色除外。這可能會影響依賴目標 Amazon S3 儲存貯體的任何應用程式或服務。
在`Contain`動作期間，如果原始儲存貯體的組態尚未存在，此 Runbook 可能會建立額外的 Amazon S3 儲存貯體 （由 `BackupS3BucketName` 參數指定） 來存放其備份。
如果 `Action` 參數設定為 `Restore`，此 Runbook 會嘗試根據存放在儲存貯體中的備份，將 Amazon S3 儲存`BackupS3BucketName`貯體的組態還原為其原始狀態。不過，還原程序可能會失敗，使 Amazon S3 儲存貯體處於不一致狀態。Runbook 提供在發生此類失敗時手動還原的說明，但您應該準備好在還原過程中處理潛在問題。
建議您徹底檢閱 Runbook、了解其潛在影響，並在非生產環境中進行測試，然後再在您的生產環境中執行。

 **如何運作？** 

此 Runbook 的運作方式會根據資源類型和動作而有所不同：
+ 對於 Amazon S3 一般用途儲存貯體 `Containment`：自動化會封鎖對儲存貯體的公開存取、停用 ACL 組態、強制執行儲存貯體擁有者物件擁有權，並將拒絕所有 Amazon S3 動作的限制儲存貯體政策放入儲存貯體，但允許列出的 IAM 角色除外。
+ 對於 Amazon S3 一般用途物件 `Containment`：自動化會封鎖對儲存貯體的公開存取、停用 ACL 組態、強制執行儲存貯體擁有者物件擁有權，並將限制性儲存貯體政策放在物件上拒絕所有 Amazon S3 動作，但允許列出的 IAM 角色除外。
+ 對於 Amazon S3 Directory Bucket `Containment`：自動化會將拒絕所有 Amazon S3 動作的限制儲存貯體政策放入儲存貯體，但允許列出的 IAM 角色除外。
+ 對於 Amazon S3 一般用途儲存貯體 `Restore`：自動化會在遏制之前將封鎖公開存取組態、儲存貯體 ACL 組態、儲存貯體擁有者物件擁有權和儲存貯體政策還原至初始組態。
+ 對於 Amazon S3 一般用途物件 `Restore`：自動化會在遏制之前，將封鎖公開存取組態、儲存貯體 ACL 組態、物件 ACL 組態、儲存貯體擁有者物件擁有權和儲存貯體政策還原至初始組態。
+ 對於 Amazon S3 Directory Bucket `Restore`：自動化會在遏制之前將儲存貯體政策還原至初始組態。

 [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-ContainS3Resource) 

 **文件類型** 

  自動化 

 **擁有者** 

 Amazon 

 **平台** 

 / 

 **所需的 IAM 許可** 

 `AutomationAssumeRole` 參數需要下列動作才能成功使用 Runbook。
+ s3:CreateBucket
+ s3:DeleteBucketPolicy
+ s3：DeleteObjectTagging
+ s3:GetAccountPublicAccessBlock
+ s3:GetBucketAcl
+ s3:GetBucketLocation
+ s3:GetBucketOwnershipControls
+ s3:GetBucketPolicy
+ s3:GetBucketPolicyStatus
+ s3：GetBucketTagging
+ s3:GetEncryptionConfiguration
+ s3:GetObject
+ s3：GetObjectAcl
+ s3：GetObjectTagging
+ s3:GetReplicationConfiguration
+ s3:ListBucket
+ s3:PutAccountPublicAccessBlock
+ s3：PutBucketACL
+ s3:PutBucketOwnershipControls
+ s3:PutBucketPolicy
+ s3:PutBucketPublicAccessBlock
+ s3：PutBucketTagging
+ s3:PutBucketVersioning
+ s3:PutObject
+ s3：PutObjectAcl
+ s3express：CreateSession
+ s3express：DeleteBucketPolicy
+ s3express：GetBucketPolicy
+ s3express：PutBucketPolicy
+ ssm:DescribeAutomationExecutions

 以下是授予 必要許可的 IAM 政策範例`AutomationAssumeRole`：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3Permissions",
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucketPolicy",
                "s3:DeleteObjectTagging",
                "s3:GetAccountPublicAccessBlock",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:GetBucketOwnershipControls",
                "s3:GetBucketPolicy",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketTagging",
                "s3:GetEncryptionConfiguration",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:GetObjectTagging",
                "s3:GetReplicationConfiguration",
                "s3:ListBucket",
                "s3:PutAccountPublicAccessBlock",
                "s3:PutBucketACL",
                "s3:PutBucketOwnershipControls",
                "s3:PutBucketPolicy",
                "s3:PutBucketPublicAccessBlock",
                "s3:PutBucketTagging",
                "s3:PutBucketVersioning",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": "*"
        },
        {
            "Sid": "S3ExpressPermissions",
            "Effect": "Allow",
            "Action": [
                "s3express:CreateSession",
                "s3express:DeleteBucketPolicy",
                "s3express:GetBucketPolicy",
                "s3express:PutBucketPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SSMPermissions",
            "Effect": "Allow",
            "Action": [
                "ssm:DescribeAutomationExecutions"
            ],
            "Resource": "*"
        }
    ]
}
```

------

 **指示** 

請依照下列步驟設定自動化：

1. 在文件下的 Systems Manager [https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ContainS3Resource/description](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ContainS3Resource/description)中導覽至 。

1. 選擇 Execute automation (執行自動化)。

1. 針對輸入參數，輸入下列內容：
   + **BucketName （必要）：**
     + 描述：（必要） Amazon S3 儲存貯體的名稱。
     + 類型：`AWS::S3::Bucket::Name`
   + **動作 （必要）：**
     + 描述：（必要） 選取 `Contain` 以隔離 Amazon S3 資源`Restore`，或嘗試從先前的備份將資源組態還原為其原始狀態。
     + 類型：字串
     + 允許的值： `Contain|Restore`
   + **DryRun （選用）：**
     + 描述：（選用） 當設定為 true 時，自動化不會對目標 Amazon S3 資源進行任何變更，而是輸出嘗試變更的內容。預設值： true。
     + 類型：布林值
     + 允許的值： `true|false`
   + **BucketKeyName （選用）：**
     + 描述：（選用） 您要包含或還原之 Amazon S3 物件的金鑰。在物件層級遏制期間使用。
     + 類型：字串
     + 允許模式： `^[a-zA-Z0-9\\.\\-_\\\\!*'()/]{0,1024}$`
   + **BucketRestrictAccess （條件式）：**
     + 描述：（條件式） 在執行遏制動作後，允許存取目標 Amazon S3 資源的 IAM 使用者或角色 ARN。當 設為 時`Action`，此參數為必要`Contain`。
     + 類型：StringList
     + 允許模式： `^$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::[0-9]{12}:(role|user)\\/[\\w+\\/=,.@-]+$`
   + **TagIdentifier （選用）：**
     + 描述：（選用） Key=BatchId，Value=78925 格式的標籤，將在遏制工作流程期間新增至此 Runbook 建立或修改的資源。
     + 類型：字串
     + 允許模式： `^$|^[Kk][Ee][Yy]=[\\+\\-\\=\\.\\_\\:\\/@a-zA-Z0-9]{1,128},[Vv][Aa][Ll][Uu][Ee]=[\\+\\-\\=\\.\\_\\:\\/@a-zA-Z0-9]{0,128}$`
   + **BackupS3BucketName （條件式）：**
     + 描述：（條件式） `Action`將 設定為 時要備份目標資源組態的 Amazon S3 儲存貯體，`Contain`或將 `Action`設定為 時要從 還原組態`Restore`。
     + 類型：`AWS::S3::Bucket::Name`
   + **BackupS3KeyName （條件式）：**
     + 描述：（條件式） 如果 `Action` 設定為 `Restore`，這會指定自動化用來嘗試還原目標資源組態的 Amazon S3 金鑰。
     + 類型：字串
     + 允許模式： `^[a-zA-Z0-9\\.\\-_\\\\!*'()/]{0,1024}$`

     
   + **BackupS3BucketAccess （條件式）：**
     + 描述：（條件式） 在執行遏制動作後，允許存取備份 Amazon S3 儲存貯體的 IAM 使用者或角色 ARN。當 `Action`為 時，此參數為必要`Contain`。
     + 類型：StringList
     + 允許模式： `^$|^arn:(aws|aws-cn|aws-us-gov|aws-iso(-[a-z])?):iam::[0-9]{12}:(role|user)\\/[\\w+\\/=,.@-]+$`
   + **AutomationAssumeRole （選用）：**
     + 描述：（選用） 允許 Systems Manager Automation 代表您執行動作的 IAM 角色的 Amazon Resource Name (ARN)。
     + 類型：`AWS::IAM::Role::Arn`

1. 選取執行。

1. 自動化會啟動。

1. 文件會執行下列步驟：
   + **validateRequiredInputs**

     根據指定的動作驗證所需的自動化輸入參數。
   + **assertBucketExists**

     檢查目標 Amazon S3 儲存貯體是否存在並可存取。
   + **backupBucketPreChecks**

     檢查備份 Amazon S3 儲存貯體是否可能授予對其物件的公開讀取或寫入存取權。
   + **backupTargetBucketMetadata**

     描述目標 Amazon S3 儲存貯體的目前組態，並將備份上傳至指定的備份 Amazon S3 儲存貯體。
   + **containBucket**

     執行儲存貯體層級操作，以包含目標 Amazon S3 儲存貯體。
   + **BranchOnActionAndMode**

     根據輸入參數 Action 和 DryRun 分支自動化。
   + **RestoreInstanceConfiguration**

     從備份還原 Amazon S3 儲存貯體組態。
   + **containFinalOutput**

     以可讀取的格式整合遏制活動。
   + **ReportContain**

     輸出遏制動作的試轉詳細資訊。
   + **ReportRestore**

     輸出還原動作的試轉詳細資訊。
   + **ReportRestoreFailure**

     提供在還原工作流程失敗案例期間還原 Amazon S3 儲存貯體原始組態的說明。
   + **ReportContainmentFailure**

     提供在遏制工作流程失敗情況下還原 Amazon S3 儲存貯體原始組態的說明。
   + **FinalOutput**

     輸出遏制動作的詳細資訊。

1. 執行完成後，請檢閱輸出區段以取得執行的詳細結果：
   + **ContainFinalOutput.Output**

     當 `DryRun` 設定為 False 時，輸出此 Runbook 所執行之遏制動作的詳細資訊。
   + **RestoreFinalOutput.Output**

     當 `DryRun` 設定為 False 時，輸出此 Runbook 所執行還原動作的詳細資訊。
   + **ContainS3ResourceDryRun.Output**

     將 `DryRun` 設定為 True 時，輸出此 Runbook 所執行之遏制動作的詳細資訊。
   + **RestoreS3ResourceDryRun.Output**

     將 `DryRun` 設定為 True 時，輸出此 Runbook 所執行還原動作的詳細資訊。
   + **ReportContainmentFailure.Output**

     提供在遏制工作流程失敗案例期間還原目標 Amazon S3 資源原始組態的指示。
   + **ReportRestoreFailure.Output**

     提供在還原工作流程失敗案例期間還原目標 Amazon S3 資源原始組態的說明。

**參考**

Systems Manager Automation
+ [執行此自動化 （主控台）](https://console.aws.amazon.com/systems-manager/documents/AWSSupport-ContainS3Resource/description)
+ [執行自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-working-executing.html)
+ [設定自動化](https://docs.aws.amazon.com//systems-manager/latest/userguide/automation-setup.html)
+ [支援自動化工作流程](https://aws.amazon.com/premiumsupport/technology/saw/)