延迟 AWS 代码管道:



当前设置:我有一个由 AWS CodePipeline 调用的 Lambda 函数。Lambda 函数将一些文件转储到 s3 存储桶,CodePipeline 继续进入另一个阶段(在本例中为测试阶段(。

问题:我需要上述管道在文件转储到 s3 存储桶后等待大约 60 秒(这是为了确保在我的代码库中完成处理,该代码库读取被转储到的 s3 存储桶(。延迟后,我的测试应该干净地执行。

问题:代码管道中是否有办法等待给定的时间?Lambda 可以执行等待函数吗?

-

我已经做了大量的研究,在Javascript(我的Lambda函数是用的语言编写的(中实现延迟。我无法实现异步睡眠函数,也找不到任何有关如何实现此功能的 Lambda 文档。

我不确定 JS lambda ,但是从您的 JS lambda 中,您可以调用另一个用 Python 编写的 Lamda 等待 60 秒。

第二种方法是,您可以使用 AWS step 函数在 S3 中转储数据后和执行测试方法之前等待 60 秒。

Python Lambda等待:

import boto3, os, time
def lambda_handler(event, context):
    time.sleep(60)

在 JavaScript 中,您可以实现超时函数,如下所示:

function timeout(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}
async function play() {
    console.log('Hello');
    await timeout(2000);
    console.log(' world!');
}
play();

因此,您可以在 lambda 函数中像这样等待。我不知道 AWS CodePipeline 中类似"等待"的步骤,这里还指出这本身不受支持。

借助 AWS Step Functions 集成 - 您也可以选择等待更长的时间,Lambda 最大超时为 15 分钟 - 使用Step Function,此时间段可以延长更长的时间(1 年(https://docs.aws.amazon.com/step-functions/latest/dg/limits-overview.html

相关内容

  • 没有找到相关文章

最新更新