为什么我在附加了实施 SSE-KMS 加密的策略的 S3 存储桶中看不到 Amazon EMR 集群日志?
上次更新日期:2021-07-06
我的 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 使用 AES-256 加密而不是 SSE-KMS 写入日志。要将日志写入具有 SSE-KMS 加密策略的 S3 存储桶中,请使用 sync 命令手动上传文件。
注意:如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI。
解决方法
注意:使用 Amazon EMR 5.30.0 及更高版本(Amazon EMR 6.0.0 除外)时,您可以使用 AWS KMS 客户托管密钥加密存储在 Amazon S3 中的日志文件。
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 集群时在所有节点上运行自定义引导操作。