对所有 AWS Data Pipeline 活动使用相同的 EC2 实例

Posted

技术标签:

【中文标题】对所有 AWS Data Pipeline 活动使用相同的 EC2 实例【英文标题】:Use same EC2 instance for all AWS Data Pipeline activities 【发布时间】:2016-03-24 10:58:38 【问题描述】:

我正在使用 AWS Data Pipeline 将一些 CSV 数据从 S3 导入 Redshift。我还添加了一个 ShellCommandActivity 以在复制活动完成后删除所有 S3 文件。我附上一张全过程的图片。

一切正常,但每个活动都会启动它自己的 EC2 实例。复制命令完成后,ShellCommandActivity 是否可以重用与 RedshiftCopyActivity 相同的 EC2 实例?

谢谢!

【问题讨论】:

【参考方案1】:

除非您可以在 shell 或 CLI 中执行所有活动,否则不可能在同一个实例中执行所有操作。

我可以给出的一个建议是转向新技术。 AWS Data Pipeline 已过时(4 岁)。您应该使用 AWS Lambda,这将花费您支付的费用的一小部分,并且您可以在文件上传到 S3 后立即将文件加载到 Redshift。清理是自动的,并且 Lambda 比 AWS Data Pipeline 更强大。教程A Zero-Administration Amazon Redshift Database Loader 就是你想要的。是的,有一些学习曲线,但正如标题所示,这是零管理负担。

【讨论】:

感谢您的回答。我尝试按照该教程进行操作,但据我了解,Lambda 函数要求您的 Redshift 集群可公开访问,目前没有其他方法可以做到这一点。请参阅此博客文章:github.com/awslabs/aws-lambda-redshift-loader/issues/30。对我来说,Redshift 集群不能公开访问是必须的。我们的基础架构基于 VPC。 @Radu-StefanZugravu 查看:aws.amazon.com/blogs/aws/… 我也试过了。即使我添加了一个 s3 端点,我的 lambda 函数也会超时:任务在 59.00 秒后超时。如果我在 VPC 之外获取我的 lambda 函数,它会成功获取上传的 s3 文件。任何的想法?谢谢!【参考方案2】:

为了让 ShellCommandActivity 在同一个 EC2 实例上运行,我使用 Architect 编辑了我的 ShellCommandActivity,并为 Runs On 选项选择了 Ec2Instance。 ShellCommandActivity 会自动映射到与 RedshiftCopyActivity 相同的 EC2Instance。现在整个过程是这样的:

谢谢!

【讨论】:

以上是关于对所有 AWS Data Pipeline 活动使用相同的 EC2 实例的主要内容,如果未能解决你的问题,请参考以下文章

AWS Data Pipeline RedshiftCopy 活动 没有合适的驱动程序

在 AWS Data Pipeline 中创建聚合表

我可以使用 AWS Data Pipeline 在每次放置之前合并 dynamoDB 和编辑项目吗?

AWS Data Pipeline 的默认日期时间

AWS Data Pipeline - 创建定义时出错

什么是 AWS Data Pipeline