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 管道时使用完全相同的 resourceRole
和 role
属性。所以这不是问题。
显然 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。
使用完全相同的数据管道配置,只是要使用的 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 管道时使用完全相同的 resourceRole
和 role
属性。所以这不是问题。
显然 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。