延迟AWS代码管道:

时间:2017-11-13 23:46:50

标签: javascript amazon-web-services aws-lambda aws-codepipeline

当前设置: 我有一个由AWS CodePipeline调用的Lambda函数。 Lambda函数将一些文件转储到s3存储桶,CodePipeline继续转移到另一个阶段(在这种情况下是测试阶段)。

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

问题: 代码管道中有没有办法等待给定的时间? Lambda可以执行等待功能吗?

-

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

2 个答案:

答案 0 :(得分:1)

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

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

Python Lambda等待:

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

答案 1 :(得分:0)

在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中的“等待”之类的步骤一无所知,还指出here本身不支持此操作。