SSE-KMS 暗号化を適用するポリシーがアタッチされている S3 バケットに Amazon EMR クラスターログが表示されないのはなぜですか ?

所要時間1分
0

Amazon EMR クラスターログが、指定した Amazon Simple Storage Service (Amazon S3) バケットにアーカイブされません。S3 バケットには、AWS Key Management Service (SSE-KMS) によるサーバー側の暗号化を適用するポリシーがアタッチされています。ログの書き込みは、次のような 403 エラーで失敗します。 2020-01-15 04:01:25,247 INFO logspusher-6: Failed to upload 126 logs: USE: /emr/instance-state/instance-state.log-2020-01-14-20-15.gz reason: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 8B99FE94D1678AAB)

簡単な説明

Amazon EMR クラスターでログ記録を有効にすると、LogPusher サービスはクラスターログを指定された S3 バケットにアーカイブします。LogPusher は、SSE-KMS ではなく AES-256 暗号化を使用してログを書き込みます。SSE-KMS 暗号化ポリシーを持つ S3 バケットにログを書き込むには、sync コマンドを使用して手動でファイルをアップロードします。

注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

解決方法

注: Amazon EMR バージョン 5.30.0 以降 (Amazon EMR 6.0.0 を除く) では、 Amazon S3 に保存されたログファイルを AWS KMS カスタマーマネージドキーで暗号化できます

1.    SSH を使用してマスターノードに接続します。

2.    コピーするログファイルを見つけます。たとえば、ステップログはマスターノードの /mnt/var/log/hadoop/steps に保存されます。

3.    ログファイルを S3 バケットにコピーするには、--sse-kms-key-id フィールドで sync コマンドを実行します。例:

aws s3 sync /mnt/var/log/hadoop/steps/ s3://awsexamplebucket/elasticmapreduce/${cluster_id}/steps/ --sse aws:kms --sse-kms-key-id 17246c74-6ff4-4adb-86e5-76f7f1603f00

cron ジョブを使用して、sync コマンドを自動化できます。cron ジョブを設定するには、Amazon EMR クラスターの起動時にすべてのノードでカスタムブートストラップアクションを実行します。


関連情報

AWS Key Management Service に保存されている AWS KMS キーを使うサーバー側の暗号化を使用したデータの保護

Amazon S3 バケットで AWS KMS を使用してデフォルトの暗号化を有効にすると、新しいオブジェクトまたは既存のオブジェクトはどうなりますか?

AWS公式
AWS公式更新しました 3年前
コメントはありません