使用完全相同的数据管道配置,只在要使用的AMI(Amazon Linux与Ubuntu)不同,我的数据管道执行在两种情况下都会成功但它只会将日志写入S3使用Amazon Linux时。
使用Amazon Linux
使用Ubuntu
在这两种情况下,我使用相同的用户(ec2-user
,而非ubuntu
)登录,为此我正确配置了Ubuntu AMI的用户名:
#cloud-config
system_info:
default_user:
name: ec2-user
此外,在启动Amazon Linux或Ubuntu管道时,我使用相同的resourceRole
和role
属性。所以这不是问题。
显然,亚马逊Linux有一些编写S3日志所需的东西,它可能是什么?
答案 0 :(得分:2)
这是因为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。