跳至内容

如何对使用 Amazon S3 配置的 EC2 竞价型实例的数据源进行故障排除?

2 分钟阅读
0

我使用 Amazon Simple Storage Service (Amazon S3) 配置了 Amazon Elastic Compute Cloud (Amazon EC2) 数据源。我想对数据源的问题进行故障排除。

简短描述

要查看 Amazon EC2 竞价型实例的费用,请配置一个报告竞价型实例使用情况和定价的数据源。当您订阅数据源时,Amazon EC2 会将这些数据存储在 S3 存储桶中。如果您的数据源出现问题,请根据您的问题完成以下故障排除步骤。

解决方法

**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI

AWS KMS 加密

您的 S3 存储桶可能使用客户自主管理型 AWS Key Management Service (AWS KMS) 密钥进行加密。在这种情况下,您必须在 AWS KMS 密钥策略的权限范围内允许服务 delivery.logs.amazonaws.com。这样会允许 AWS KMS 将数据源传送到加密的 S3 存储桶。

在密钥策略中包含以下权限:

{
  "Sid": "Allow Logs Delivery to use the key",
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "delivery.logs.amazonaws.com"
    ]
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}

有关详细信息,请参阅 Amazon S3 存储桶服务器端加密

ACL 权限

当您订阅数据源时,您的账户将获得 S3 存储桶的访问控制列表 (ACL) 权限,以接收数据源。如果没有这些权限,数据源将停止向存储桶传输。确保您的账户中仍然存在这些权限:

  1. 打开 Amazon S3 控制台
  2. 从导航窗格中选择 Buckets(存储桶),然后选择与您的数据源关联的 S3 存储桶。
  3. 选择 Permissions(权限)选项卡。
  4. 访问控制列表 (ACL) 下,找到已添加为 Grantee(被授权者)并订阅了数据源的外部帐户。验证此账户是否对您的 S3 存储桶具有 FULL_CONTROL 权限。AWS 账户 awslogsdelivery 的 ACL 权限被添加为该账户的规范 ID:
    c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0

如果该账户没有 FULL_CONTROL,则它必须再次订阅数据源才能获得必要的 ACL 权限。为此,请运行 create-spot-datafeed-subscription AWS CLI 命令。

**注意:**如果您删除数据源订阅,这不会自动删除关联的 ACL 权限。如果您想删除数据源,则必须在 Amazon S3 控制台(步骤 1-4)中访问权限才能手动删除它们。

数据源限制

每个 AWS 账户只能创建一个数据源。要将数据源传输到另一个 S3 存储桶,请使用不同的 S3 存储桶再次运行 create-spot-datafeed-subscription AWS CLI 命令。

EC2 竞价型实例运行时

您只会在 EC2 竞价型实例运行期间收到数据源。例如,如果您停止竞价型实例三个小时,则您的数据源也会停止提供这三个小时的数据。当竞价型实例再次启动时,您的数据源将自动恢复。

S3 对象所有权

数据源的 S3 存储桶的对象所有权设置必须是存储桶所有者首选对象写入器。这些设置允许您的 S3 存储桶拥有 ACL 权限。如果您的 S3 存储桶上没有这两种所有权设置,则无法在 S3 存储桶上配置数据源。如果出现这种情况,则您会收到以下错误:

"An error occurred (InaccessibleStorageLocation) when calling the CreateSpotDatafeedSubscription operation: The specified bucket does not exist or does not have enough permissions."

有关详细信息,请参阅为您的存储桶控制对象所有权和禁用 ACL

其他注意事项

配置数据源时,请记住以下几点:

  • 激活数据源没有额外费用。但是,您的 S3 存储桶中的数据源存储会产生存储费用
  • 数据源文件通常每小时到达您的存储桶一次。通常,一个数据文件涵盖每小时的使用量。有关文件大小和到达时间的详细信息,请参阅竞价型实例数据源
AWS 官方已更新 2 年前