为 Application Cost Profiler 设置 Amazon S3 存储桶 - Application Cost Profiler

AWS 应用程序成本分析器将于 2024 年 9 月 30 日停产,不再接受新客户。

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

为 Application Cost Profiler 设置 Amazon S3 存储桶

要向 AWS Application Cost Profiler 发送使用量数据并从其中接收报告,您的 AWS 账户必须至少有一个用于存储数据的 Amazon Simple Storage Service (Amazon S3) 存储桶,以及一个用于接收报告的 S3 存储桶。

注意

对于 AWS Organizations 的用户,Amazon S3 存储桶可位于管理账户中,也可以位于个人成员账户中。管理账户拥有的 S3 存储桶中的数据可用于为整个组织生成报告。在个人成员账户中,S3 存储桶中的数据只能用于为该成员账户生成报告。

您创建的 S3 存储桶归您在其中创建这些存储桶的 AWS 账户所有。S3 存储桶按标准的 Amazon S3 费率计费。有关如何创建 Amazon S3 存储桶的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的创建存储桶

为了让 Application Cost Profiler 使用 S3 存储桶,您必须将策略附加到存储桶,以授予 Application Cost Profiler 读取和/或写入该存储桶的权限。如果您在设置报告后修改策略,则可能会导致 Application Cost Profiler 无法读取您的使用量数据或无法交付报告。

以下主题介绍如何在创建 Amazon S3 存储桶后设置对这些存储桶的权限。除了能够读取和写入对象外,如果您对存储桶进行了加密,则 Application Cost Profiler 还必须有权访问每个存储桶的 AWS Key Management Service (AWS KMS) 密钥。

授予 Application Cost Profiler 访问报告交付 S3 存储桶的权限

您所配置供 Application Cost Profiler 将报告交付到其中的 S3 存储桶必须附加一个允许 Application Cost Profiler 创建报告对象的策略。此外,必须将 S3 存储桶配置为启用加密。

注意

创建存储桶时,您必须选择对其进行加密。您可以选择使用 Amazon S3 托管密钥 (SSE-S3) 或您自己的 AWS KMS 托管密钥 (SSE-KMS) 来加密您的存储桶。如果您已经创建了未加密的存储桶,则必须编辑存储桶以添加加密。

授予 Application Cost Profiler 访问报告交付 S3 存储桶的权限
  1. 转到 Amazon S3 控制台并登录。

  2. 从左侧导航部分中选择存储桶,然后从列表中选择您的存储桶。

  3. 选择权限选项卡,然后选择存储桶策略旁边的编辑

  4. 策略部分,插入以下策略。将 <bucket_name> 替换为您的存储桶名称,将 <AWS 账户> 替换为您的 AWS 账户 ID。

    { "Version":"2008-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"application-cost-profiler.amazonaws.com" }, "Action":[ "s3:PutObject*", "s3:GetEncryptionConfiguration" ], "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/*" ], "Condition": { "StringEquals": { "aws:SourceAccount": "<AWS 账户>" }, "ArnEquals": { "aws:SourceArn": "arn:aws:application-cost-profiler:us-east-1:<AWS 账户>:*" } } } ] }

    在此策略中,您将授予 Application Cost Profiler 服务主体 (application-cost-profiler.amazonaws.com) 访问权限,以将报告交付到指定的存储桶。它将代表您执行此操作,并在您的 AWS 账户中包含一个标头和特定于报告交付存储桶的 ARN。为确保 Application Cost Profiler 仅在代表您进行操作时才访问您的存储桶,Condition 会检查是否有这些标头。

  5. 选择保存更改以保存您的策略,并将其附加到您的存储桶。

    如果您使用 SSE-S3 加密功能创建了存储桶,那么您的工作就完成了。如果您使用了 SSE-KMS 加密,则必须执行以下步骤才能授予 Application Cost Profiler 访问存储桶的权限。

  6. (可选)选择存储桶的属性选项卡,然后在默认加密下面,为您的 AWS KMS 密钥选择“Amazon 资源名称 (ARN)”。此操作会显示 AWS Key Management Service 控制台并显示您的密钥。

  7. (可选)添加策略以授予 Application Cost Profiler 访问 AWS KMS 密钥的权限。有关添加此策略的说明,请参阅授予 Application Cost Profiler 访问 SSE-KMS 加密 S3 存储桶的权限

授予 Application Cost Profiler 访问您的使用量数据 S3 存储桶的权限

您配置的供 Application Cost Profiler 从其中读取使用量数据的 S3 存储桶必须附加一个策略,以允许 Application Cost Profiler 读取使用量数据对象。

注意

授予 Application Cost Profiler 访问您的使用量数据的权限,即表示您同意我们在处理报告时可以将此类使用量数据对象临时复制到美国东部(弗吉尼亚州北部)AWS 区域。在生成完月度报告之前,这些数据对象将保留在美国东部(弗吉尼亚州北部)区域。

授予 Application Cost Profiler 访问您的使用量数据 S3 存储桶的权限
  1. 转到 Amazon S3 控制台并登录。

  2. 从左侧导航部分中选择存储桶,然后从列表中选择您的存储桶。

  3. 选择权限选项卡,然后选择存储桶策略旁边的编辑

  4. 策略部分,插入以下策略。将 <bucket-name> 替换为存储桶的名称,将 <AWS 账户> 替换为您的 AWS 账户 ID。

    { "Version":"2008-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"application-cost-profiler.amazonaws.com" }, "Action":[ "s3:GetObject*" ], "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/*" ], "Condition": { "StringEquals": { "aws:SourceAccount": "<AWS 账户>" }, "ArnEquals": { "aws:SourceArn": "arn:aws:application-cost-profiler:us-east-1:<AWS 账户>:*" } } } ] }

    在此策略中,您将授予 Application Cost Profiler 服务主体 (application-cost-profiler.amazonaws.com) 访问权限,以便从指定的存储桶中获取数据。它将代表您执行此操作,并在您的 AWS 账户中包含一个标头和特定于使用情况存储桶的 ARN。为确保 Application Cost Profiler 仅在代表您进行操作时才访问您的存储桶,Condition 会检查是否有这些标头。

  5. 选择保存更改以保存您的策略,并将其附加到您的存储桶。

如果您的存储桶使用 AWS KMS 托管密钥进行了加密,则您必须按照下一节中的过程授予 Application Cost Profiler 对您的存储桶的访问权限。

授予 Application Cost Profiler 访问 SSE-KMS 加密 S3 存储桶的权限

如果您使用 AWS KMS (SSE-KMS) 中存储的密钥对为 Application Cost Profiler 配置的 S3 存储桶(报告存储桶所需)进行加密,则还必须授予 Application Cost Profiler 对其进行解密的权限。您可以通过授予对用于加密数据的 AWS KMS 密钥的访问权限来完成此操作。

注意

如果您的存储桶已使用 Amazon S3 托管密钥加密,则您无需完成此过程。

授予 Application Cost Profiler 访问 AWS KMS 以访问 SSE-KMS 加密 S3 存储桶的权限
  1. 转到AWS KMS控制台并登录。

  2. 从左侧导航栏中选择客户托管密钥,然后从列表中选择用于加密存储桶的密钥。

  3. 选择切换到策略视图,然后选择编辑

  4. 策略部分,插入以下策略声明。

    { "Effect": "Allow", "Principal": { "Service": "application-cost-profiler.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "<AWS 账户>" }, "ArnEquals": { "aws:SourceArn": "arn:aws:application-cost-profiler:us-east-1:<AWS 账户>:*" } }
  5. 选择保存更改以保存您的策略,并将其附加到您的密钥。

  6. 对加密 Application Cost Profiler 需要访问的 S3 存储桶的每个密钥重复此操作。

注意

在导入到 Application Cost Profiler 管理的存储桶(已加密)时会从 S3 存储桶中复制数据。如果您撤销对密钥的访问权限,则 Application Cost Profiler 无法从存储桶中检索任何新对象。但是,任何已导入的数据仍可用于生成报告。