针对 Amazon Compute Optimizer 的 Amazon S3 存储桶策略 - Amazon Compute Optimizer
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

针对 Amazon Compute Optimizer 的 Amazon S3 存储桶策略

可以将 Compute Optimizer 建议导出到 Amazon Simple Storage Service (Amazon S3) 存储桶。您的建议将导出为 CSV 文件,元数据将导出为 JSON 文件。有关更多信息,请参阅导出建议

在创建导出任务之前,必须先创建将建议导出到的目标 S3 存储桶。Compute Optimizer 不会为您创建 S3 存储桶。为导出建议而指定的 S3 存储桶无法公开访问,也无法配置为申请方付款存储桶。最佳安全实践是对 Compute Optimizer 导出文件创建专用的 S3 存储桶。有关更多信息,请参阅《Amazon S3 控制台用户指南》中的如何创建 S3 存储桶?

指定将建议导出到的现有存储桶

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

  1. 通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

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

  3. 选择权限

  4. 请选择桶策略

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

  6. 替换策略中的以下占位符文本:

    • myBucketName 替换为您的存储桶的名称。

    • OptionalPrefix 替换为可选对象前缀。

    • myRegion 替换为源 Amazon Web Services 区域。

    • myAccountID 替换为导出任务请求者的账号。

  7. 在策略中包括以下所有三条语句:

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

    2. 第二条语句(针对 GetBucketPolicyStatus 操作)允许 Compute Optimizer 获取存储桶的策略状态,指示该存储桶是否为公共存储桶。

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

    如果缺少这些语句中的任何一个,或者策略中的存储桶名称和可选对象前缀与您在导出请求中指定的内容不匹配,则导出请求将失败。如果策略中的账号与导出任务请求者的账号不匹配,则导出也会失败。

    注意

    如果现有存储桶已附加一个或多个策略,请将用于 Compute Optimizer 访问权限的语句添加到这些策略。评估生成的权限集,以确保其适用于访问存储桶的用户。

策略选项 1:使用可选前缀

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

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

compute-optimizer/myAccountID/ 部分不是可选前缀的一部分。Compute Optimizer 会为您创建存储桶路径的 optimizer/myAccountID/ 部分,它将添加到您指定的前缀。

策略选项 2:没有对象前缀

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

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

使用加密的 S3 存储桶进行建议导出

对于 Compute Optimizer 建议导出的目标,您可以指定使用 Amazon S3 客户托管密钥或 Amazon Key Management Service (KMS) 密钥加密的 S3 存储桶。

要使用启用了 Amazon KMS 加密的 S3 存储桶,必须创建对称 KMS 密钥。对称 KMS 密钥是 Amazon S3 唯一支持的 KMS 密钥。有关说明,请参阅《Amazon KMS 开发人员指南》中的创建密钥。创建 KMS 密钥后,将其应用于您计划用于建议导出的 S3 存储桶。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的启用 Amazon S3 默认存储桶加密

使用以下过程向 Compute Optimizer 授予使用 KMS 密钥所需的权限。此权限专用于在将建议导出文件保存到加密的 S3 存储桶时对其进行加密。

  1. 在 Amazon KMShttps://console.aws.amazon.com/kms 打开 控制台。

  2. 要更改 Amazon Web Services 区域,请使用页面右上角的 Region selector(区域选择器)。

  3. 在左侧导航菜单中,选择客户托管密钥

    注意

    对于使用 Amazon 托管密钥加密的 S3 存储桶,不允许使用 Compute Optimizer 建议导出。

  4. 选择用于加密导出 S3 存储桶的 KMS 密钥的名称。

  5. 选择密钥策略选项卡,然后选择切换到策略视图

  6. 要编辑密钥策略,请选择编辑

  7. 复制以下策略之一并将其粘贴到密钥策略的语句部分。

  8. 替换策略中的以下占位符文本:

    • myRegion 替换为源 Amazon Web Services 区域。

    • myAccountID 替换为导出请求者的账号。

    GenerateDataKey 语句允许 Compute Optimizer 调用 Amazon KMS API 来获取用于加密推荐文件的数据密钥。这样,上传的数据格式就可以适应存储桶加密设置。否则,Amazon S3 将拒绝导出请求。

    注意

    如果现有 KMS 密钥已附加一个或多个策略,请将用于 Compute Optimizer 访问权限的语句添加到这些策略。评估生成的权限集,以确保其适用于访问 KMS 密钥的用户。

如果您未启用 Amazon S3 存储桶密钥,请使用以下策略。

{ "Sid": "Allow use of the key to Compute Optimizer", "Effect": "Allow", "Principal": { "Service": "compute-optimizer.amazonaws.com" }, "Action": "kms:GenerateDataKey", "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "myAccountID", "aws:SourceArn": "arn:aws:compute-optimizer:myRegion:myAccountID:*" } } }

如果您已启用 Amazon S3 存储桶密钥,请使用以下策略。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本

{ "Sid": "Allow use of the key to Compute Optimizer", "Effect": "Allow", "Principal": { "Service": "compute-optimizer.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "myAccountID", "aws:SourceArn": "arn:aws:compute-optimizer:myRegion:myAccountID:*" } } }

其他资源

有关 S3 存储桶和策略的更多信息,请参阅 Amazon Simple Storage Service 用户指南