当前设置: 我有一个由AWS CodePipeline调用的Lambda函数。 Lambda函数将一些文件转储到s3存储桶,CodePipeline继续转移到另一个阶段(在这种情况下是测试阶段)。
问题: 在将文件转储到s3存储桶之后,我需要上述管道等待大约60秒(这是为了确保处理在我的代码库中完成,该代码库读取转储到的s3存储桶)。延迟之后,我的测试应该干净利落。
问题: 代码管道中有没有办法等待给定的时间? Lambda可以执行等待功能吗?
-
我已经做了大量关于在Javascript(我的Lambda函数编写的语言)中实现延迟的研究。我无法实现异步睡眠功能,也无法找到有关如何实现这一功能的Lambda文档。
答案 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本身不支持此操作。