Data Pipeline S3 日志未写入(仅在使用 Amazon Linux 时才写入)

Data Pipeline S3 logs not written (only written if using Amazon Linux)

使用完全相同的数据管道配置,只是要使用的 AMI 不同(Amazon Linux 与 Ubuntu),我的数据管道执行在这两种情况下都会成功 但是 它只会在使用 Amazon Linux.

时将日志写入 S3

亚马逊 Linux

和Ubuntu

在这两种情况下,我都使用相同的用户登录(ec2-user,而不是 ubuntu),为此我为 Ubuntu AMI 正确配置了该用户名:

#cloud-config
system_info:
  default_user:
    name: ec2-user

此外,我在启动 Amazon Linux 或 Ubuntu 管道时使用完全相同的 resourceRolerole 属性。所以这不是问题。

显然 Amazon Linux 有编写 S3 日志所需的东西,可能是什么?

这是因为 TaskRunner 使用名为 Joda 的 Java 库来生成日志记录的时间戳。 JRE 的某些版本附带了一个有缺陷的 Joda jar 版本,因此任何使用该版本的 AMI(根据我目前的经验,任何高于 6 的版本)都将无法正确写入日志。

我建议在 ShellCommandActivity 中的所有脚本之前包含类似 alternatives --set java /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java 的内容——这对我来说解决了问题。

或者,您始终可以使用已知具有 Java 6 的 AMI 实例 ID。