

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 指定将建议导出到的现有 S3 存储桶
<a name="create-s3-bucket-policy-for-compute-optimizer"></a>

可以将 Compute Optimizer 建议导出到 Amazon Simple Storage Service (Amazon S3) 存储桶。您的建议将导出为 CSV 文件，元数据将导出为 JSON 文件。本节将说明如何通过向 Amazon S3 存储桶添加策略，指定将建议导出到的存储桶。根据您添加的策略，Compute Optimizer 可以将建议导出文件写入 Amazon S3 存储桶。

## 先决条件
<a name="s3-export-prerequisites"></a>

确保创建将建议导出到的目标 S3 存储桶。为导出建议而指定的 S3 存储桶无法公开访问，也无法配置为[申请方付款](https://docs.amazonaws.cn/AmazonS3/latest/userguide/RequesterPaysBuckets.html)存储桶。最佳安全实践是对 Compute Optimizer 导出文件创建专用的 S3 存储桶。有关更多信息，请参阅《Amazon S3 控制台用户指南》**中的[如何创建 S3 存储桶？](https://docs.amazonaws.cn/AmazonS3/latest/userguide/create-bucket.html)。

## 过程
<a name="specify-an-existing-bucket-for-cloudtrail-log-delivery"></a>

创建 S3 存储桶后，请按照以下步骤向 S3 存储桶添加策略，以指定 Compute Optimizer 将建议导出文件写入存储桶。

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 选择您希望 Compute Optimizer 将导出文件传送到的存储桶。

1. 选择**权限**。

1. 请选择**存储桶策略**。

1. 复制以下一项策略并粘贴到**存储桶策略编辑器**文本框中。

1. 替换策略中的以下占位符文本：
   + 将 {{amzn-s3-demo-bucket}} 替换为您的存储桶的名称。
   + {{optionalPrefix}}替换为可选的对象前缀。
   + {{myRegion}}用源代码替换 Amazon Web Services 区域。
   + {{myAccountID}}替换为导出任务请求者的账号。

     

1. 在策略中包括以下所有三条语句：

   1. 第一条语句（针对 `GetBucketAcl` 操作）指定 Compute Optimizer 获取存储桶的访问控制列表 (ACL)。

   1. 第二条语句（针对 `GetBucketPolicyStatus` 操作）指定 Compute Optimizer 获取存储桶的策略状态，指示该存储桶是否为公共存储桶。

   1. 第三条语句（用于 `PutObject` 操作）使 Compute Optimizer 可以完全控制将导出文件放入您的存储桶。

   如果缺少这些语句中的任何一个，或者策略中的存储桶名称和可选对象前缀与您在导出请求中指定的内容不匹配，则导出请求将失败。如果策略中的账号与导出任务请求者的账号不匹配，则导出也会失败。
**注意**  
如果现有存储桶已附加一个或多个策略，请将用于 Compute Optimizer 访问权限的语句添加到这些策略。评估生成的权限集，以确保其适用于访问存储桶的用户。

**策略选项 1：使用可选前缀** 

对象前缀是 S3 对象键的可选附加内容，可在 S3 存储桶中组织导出文件。如果您想在创建建议导出时指定对象前缀，请使用以下策略。

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

****  

```
{
            "Version":"2012-10-17",		 	 	 
            "Statement": [
                {
                    "Effect": "Allow",
                    "Principal": {"Service": "compute-optimizer.amazonaws.com"},
                    "Action": "s3:GetBucketAcl",
                    "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}"
                },
                {
                    "Effect": "Allow",
                    "Principal": {"Service": "compute-optimizer.amazonaws.com"},
                    "Action": "s3:GetBucketPolicyStatus",
                    "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}"
                },
                {
                    "Effect": "Allow",
                    "Principal": {"Service": "compute-optimizer.amazonaws.com"},
                    "Action": "s3:PutObject",
                    "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/{{optionalPrefix}}/compute-optimizer/{{myAccountID}}/*",
                    "Condition": {"StringEquals": {
                            "s3:x-amz-acl": "bucket-owner-full-control",
                            "aws:SourceAccount": "{{myAccountID}}"
                        },
                        "ArnLike": {
                              "aws:SourceArn": "arn:aws:compute-optimizer:{{myRegion}}:{{myAccountID}}:*"
                         }
                    }
                 }
            ]
        }
```

------

**注意**  
该{{compute-optimizer/myAccountID/}}组件不是可选前缀的一部分。Compute Optimizer 会为您创建存储桶路径中添加到您指定的前缀中的{{optimizer/myAccountID/}}部分。

**策略选项 2：没有对象前缀**

如果您不想指定对象前缀，请使用以下策略。

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

****  

```
{
            "Version":"2012-10-17",		 	 	 
            "Statement": [
                {
                    "Effect": "Allow",
                    "Principal": {"Service": "compute-optimizer.amazonaws.com"},
                    "Action": "s3:GetBucketAcl",
                    "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}"
                },
                {
                    "Effect": "Allow",
                    "Principal": {"Service": "compute-optimizer.amazonaws.com"},
                    "Action": "s3:GetBucketPolicyStatus",
                    "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}"
                },
                {
                    "Effect": "Allow",
                    "Principal": {"Service": "compute-optimizer.amazonaws.com"},
                    "Action": "s3:PutObject",
                    "Resource": "arn:aws:s3:::{{amzn-s3-demo-bucket}}/compute-optimizer/{{myAccountID}}/*",
                    "Condition": {"StringEquals": {
                            "s3:x-amz-acl": "bucket-owner-full-control",
                            "aws:SourceAccount": "{{myAccountID}}"
                        },
                        "ArnLike": {
                             "aws:SourceArn": "arn:aws:compute-optimizer:{{myRegion}}:{{myAccountID}}:*"
                         }
                     }
                 }
            ]
        }
```

------

## 后续步骤
<a name="s3-export-next-steps"></a>

有关如何导出 Amazon Compute Optimizer 推荐的说明，请参阅[导出建议](exporting-your-recommendations.md)。

此外，您可以指定使用 Amazon S3 客户托管密钥或 Amazon Key Management Service (KMS) 密钥加密的 S3 存储桶。有关如何执行此操作的说明，请参阅 [使用加密的 S3 存储桶进行建议导出](using-encrypted-s3-buckets.md)。

## 其他资源
<a name="cloudtrail-S3-bucket-policy-resources"></a>
+ 故障排除 – [故障诊断失败的导出作业](troubleshooting-account-opt-in.md#troubleshooting-exports)
+ [导出的文件](exported-files.md)
+ [Amazon Simple Storage Service 用户指南](https://docs.amazonaws.cn/AmazonS3/latest/userguide/)。