amazon-data-pipeline - Data Pipeline S3 日志未写入(仅在使用 Amazon Linux 时写入)

标签 amazon-data-pipeline

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

使用 Amazon Linux

enter image description here

使用 Ubuntu

enter image description here

在这两种情况下,我都使用相同的用户登录(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。

关于amazon-data-pipeline - Data Pipeline S3 日志未写入(仅在使用 Amazon Linux 时写入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33768025/

相关文章:

etl - 按照计划操作 AWS Redshift 中的数据

amazon-web-services - 在数据管道中使用自定义 AMI(使用 s3cmd)

amazon-web-services - 如何重启 AWS Data Pipeline

mysql - 从 RDS 到 S3 的 AWS 数据管道复制因通信链路故障而失败

amazon-web-services - AWS 数据管道的 ShellCommandPrecondition 的返回值应该是什么?

postgresql - 将 AWS Postgres RDS 表导出到 AWS S3

amazon-web-services - AWS 将 S3 复制到 RDS

amazon-web-services - 需要将大型表从 RDS 迁移到 DynamoDB 的策略建议

amazon-web-services - 如何将过去 7 天修改/创建的数据从 DynamoDB 备份到 S3?

amazon-web-services - 亚马逊数据管道 : How to use a script argument in a SqlActivity?