Amazon web services 用于将数据复制到红移的AWS lambda函数

Amazon web services 用于将数据复制到红移的AWS lambda函数,amazon-web-services,Amazon Web Services,我是AWS世界的新手,我正在尝试实现一个过程,在这个过程中,AWS EMR写入S3的数据可以加载到AWS红移。我正在使用terraform创建S3和红移以及其他受支持的功能。对于加载数据,我使用lambda函数,该函数在红移集群启动时触发。lambda函数具有将数据从S3复制到红移的代码。目前,进程运行正常。数据量当前较低 我的问题是 这种方法现在似乎可行,但我不知道一旦数据量增加,它将如何工作,如果lambda函数超时会怎么样 有没有人可以建议我处理这个场景的其他方法,即使它可以在没有lamb

我是AWS世界的新手,我正在尝试实现一个过程,在这个过程中,AWS EMR写入S3的数据可以加载到AWS红移。我正在使用terraform创建S3和红移以及其他受支持的功能。对于加载数据,我使用lambda函数,该函数在红移集群启动时触发。lambda函数具有将数据从S3复制到红移的代码。目前,进程运行正常。数据量当前较低

我的问题是

  • 这种方法现在似乎可行,但我不知道一旦数据量增加,它将如何工作,如果lambda函数超时会怎么样
  • 有没有人可以建议我处理这个场景的其他方法,即使它可以在没有lambda的情况下处理。我在搜索这个主题时遇到的一个替代方法是AWS数据管道
  • 多谢各位

  • 对于更大的数据集,正如您已经知道的,Lambda可能会超时。但15分钟仍然是很长的时间,所以您可以同时实施替代解决方案
  • 我不建议使用数据管道,因为这可能会造成开销(它将启动一个EC2实例来运行您的命令)。您的问题只是超时,所以您可以使用ECS Fargate或Glue Python外壳作业。它们中的任何一个都可以由在S3事件上触发的Cloudwatch事件触发
  • a。使用ECS Fargate,您必须处理docker映像并设置ECS基础设施,即任务定义、集群(Fargate的简单功能)

    b。使用Glue Python Shell作业,您只需在S3中部署Python脚本(以及作为轮子文件的所需包),并在作业配置中链接这些文件

    这两个选项都是无服务器的,您可以根据部署的方便性和对docker的舒适程度选择一个

    ECS没有任何超时限制,而Glue的超时限制为2天

    注意:要从Cloudwatch事件触发AWS粘合作业,您必须使用Lambda函数,因为Cloudwatch事件还不支持粘合启动作业

    参考:

  • 对于更大的数据集,正如您已经知道的,Lambda可能会超时。但15分钟仍然是很长的时间,所以您可以同时实施替代解决方案
  • 我不建议使用数据管道,因为这可能会造成开销(它将启动一个EC2实例来运行您的命令)。您的问题只是超时,所以您可以使用ECS Fargate或Glue Python外壳作业。它们中的任何一个都可以由在S3事件上触发的Cloudwatch事件触发
  • a。使用ECS Fargate,您必须处理docker映像并设置ECS基础设施,即任务定义、集群(Fargate的简单功能)

    b。使用Glue Python Shell作业,您只需在S3中部署Python脚本(以及作为轮子文件的所需包),并在作业配置中链接这些文件

    这两个选项都是无服务器的,您可以根据部署的方便性和对docker的舒适程度选择一个

    ECS没有任何超时限制,而Glue的超时限制为2天

    注意:要从Cloudwatch事件触发AWS粘合作业,您必须使用Lambda函数,因为Cloudwatch事件还不支持粘合启动作业


    参考资料:

    在本例中,我建议客户端采用的一种无服务器方法是Redshift数据API(如果需要,还包括步骤函数)。使用红移数据API,您可以启动SQL命令(复制)并关闭Lambda函数。COPY命令将运行到完成,如果这是您所需要做的全部,那么您的任务就完成了

    如果需要在复制后执行其他操作,则需要一个轮询Lambda来检查复制何时完成。这是由红移数据API启用的。复制完成后,您可以启动另一个Lambda来运行其他操作。所有这些lambda及其交互都由一个Step函数进行编排,该函数:

  • 启动第一个Lambda(启动副本)
  • 有一个等待循环,每隔30秒(或您想要的任何间隔)调用“状态检查器”Lambda,并保持循环,直到检查器说复制成功完成
  • 一旦状态检查器lambda表示副本已完成,步骤功能将启动附加操作lambda

  • Step函数是一个动作序列器,lambda是动作。有许多框架可以将Lambdas和Step函数设置为一个单元。

    在这种情况下,我建议客户端采用的一种无服务器方法是Redshift数据API(如果需要,还可以使用Step函数)。使用红移数据API,您可以启动SQL命令(复制)并关闭Lambda函数。COPY命令将运行到完成,如果这是您所需要做的全部,那么您的任务就完成了

    如果需要在复制后执行其他操作,则需要一个轮询Lambda来检查复制何时完成。这是由红移数据API启用的。复制完成后,您可以启动另一个Lambda来运行其他操作。所有这些lambda及其交互都由一个Step函数进行编排,该函数:

  • 启动第一个Lambda(启动副本)
  • 有一个等待循环,每隔30秒(或您想要的任何间隔)调用“状态检查器”Lambda,并保持循环,直到检查器说复制成功完成
  • 一旦状态检查器lambda表示副本已完成,步骤功能将启动附加操作lambda
  • Step函数是一个动作序列器,lambda是动作。有许多框架可以将Lambdas和Step函数设置为一个单元