使用完全相同的数据管道配置,仅在要使用的 AMI 上有所不同(Amazon Linux 与 Ubuntu),我的数据管道执行在这两种情况下都会成功但是它只会将日志写入使用 Amazon Linux 时的 S3。
使用 Amazon 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。
关于amazon-data-pipeline - Data Pipeline S3 日志未写入(仅在使用 Amazon Linux 时写入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33768025/