【问题标题】:Data Pipeline S3 logs not written (only written if using Amazon Linux)未写入 Data Pipeline S3 日志(仅在使用 Amazon Linux 时写入)
【发布时间】:2016-02-19 11:28:55
【问题描述】:

使用完全相同的 Data Pipeline 配置,只是要使用的 AMI 不同(Amazon Linux 与 Ubuntu),我的 Data Pipeline 执行在这两种情况下都会成功它只会将日志写入使用 Amazon Linux 时的 S3。

使用 Amazon Linux

使用 Ubuntu

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

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

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

显然,Amazon Linux 需要一些东西来编写 S3 日志,它会是什么?

【问题讨论】:

    标签: amazon-data-pipeline


    【解决方案1】:

    这是因为 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。

    【讨论】:

    • 哇,我从没想过这可能是问题所在! :) 我使用 Oracle JRE 8u65-b17,这是最新的。那个版本有那个bug吗?我应该尝试 Java 7 而不是 8?
    • 如果您使用的不是8u65,您应该确保您的Joda 版本更新为比2.8 更新的版本。你也可以降级到8u45以下的任何东西,所以这大概包括Java 7,虽然我只是通过降级到Java 6进行了真正的测试。见this for a greater level of detail
    • 使用 Oracle 7u80-b15 使其工作。非常感谢!
    • 这个答案还有效吗? ec2 实例还有 java 6 吗?我无法获取 t2.micro 实例的任何日志
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 2020-05-28
    相关资源
    最近更新 更多