我正在尝试在没有Internet网关的代码管道内使用lambda函数。我正在使用boto3
在我的代码管道上调用put_job_success/failure_result
。当我的环境中有Internet网关时,它可以正常工作,但是由于安全隐患而被删除。现在,互联网网关不可用了,我的lambda函数在调用put_job_success_result后挂了20分钟,并最终失败了。 put_job_success_result
或put-job_failure_result
均无法正常工作。有人知道我需要做什么才能让lambda在没有互联网网关的情况下与我的代码管道进行通信吗?
(通过CFT生成的)代码管道没有私有终结点。我尝试手动添加一个,但似乎也不起作用。
# Pipeline def
pipeline = boto3.client('codepipeline')
# success function
def put_job_success(job):
# Notify code pipeline of successful job
logger.info('Job Success ID = {}', job)
logger.info('Putting job success')
pipeline.put_job_success_result(jobId=job)
# job_id assignment
job_id = event['CodePipeline.job']['id']
# call to success function
put_job_success(job_id)
我期望一旦函数完成并且成功的结果表明代码流水线会反映出来。在我拿出Internet网关之前,它曾经是。
答案 0 :(得分:1)
您将需要使用“ VPC端点”来访问没有Internet网关和/或NAT的AWS服务:https://docs.aws.amazon.com/codepipeline/latest/userguide/vpc-support.html#use-vpc-endpoints-with-codepipeline
这将在您的VPC上显示AWS服务。您将需要将Lambda函数与新的AWS Endpoint放在同一VPC中-也许这是以前没做的事情?
(如果超时时间为20分钟,我会感到惊讶。Lambda的最大超时时间为15分钟,但boto应该超时为60秒。)