スキップしてコンテンツを表示

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. ナビゲーションペインで [バケット] を選択し、データフィードに関連付けられている S3 バケットを選択します。
  3. [アクセス許可] タブを選択します。
  4. [アクセスコントロールリスト (ACL)] を参照し、Grantee として登録されており、データフィードにサブスクライブしている外部アカウントを特定します。このアカウントには、S3 バケットに対する FULL_CONTROL 権限が付与されていることを確認します。AWS アカウント awslogsdelivery の ACL 権限がアカウントの正規 ID として追加されています。
    c4c1ede66af53448b93c283ce9448c4ba468c9432aa01d700d3878632f77d2d0

アカウントに FULL_CONTROL が割り当てられていない場合は、必要な ACL 権限を取得するにはデータフィードに再度サブスクライブする必要があります。AWS CLI コマンド create-spot-datafeed-subscription を実行すると、その手順を実行できます。

注: データフィードのサブスクライブを解除しても、関連する ACL 権限は自動的に削除されません。データフィードを削除する場合は、Amazon S3 コンソールでアクセス許可 (ステップ 1 ~ 4) にアクセスし、手動で削除する必要があります。

データフィードの制限

各 AWS アカウントには、データフィードを 1 つのみ作成できます。データフィードを別の S3 バケットに転送するには、別の S3 バケットで AWS CLI コマンド create-spot-datafeed-subscription を再度実行します。

EC2 スポットインスタンスの実行時

EC2 スポットインスタンスの実行中のみ、データフィードが取得されます。たとえば、スポットインスタンスを 3 時間停止した場合、データフィードもその 3 時間の期間中、データの配信を停止します。データフィードは、スポットインスタンスが再度起動すると自動的に再開されます。

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 バケットのデータフィードストレージに対し、ストレージコストが発生します。
  • データフィードファイルは通常、1 時間に 1 回バケットに送信されます。通常、1 時間あたりの使用量は単一のデータファイルでカバーされます。ファイルサイズと到達時間に関する詳細については、「スポットインスタンスのデータフィード」を参照してください。
AWS公式更新しました 2年前
コメントはありません

関連するコンテンツ