在没有Internet网关的代码管道中使用lambda函数

时间:2019-07-10 14:57:12

标签: python aws-lambda boto3

我正在尝试在没有Internet网关的代码管道内使用lambda函数。我正在使用boto3在我的代码管道上调用put_job_success/failure_result。当我的环境中有Internet网关时,它可以正常工作,但是由于安全隐患而被删除。现在,互联网网关不可用了,我的lambda函数在调用put_job_success_result后挂了20分钟,并最终失败了。 put_job_success_resultput-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网关之前,它曾经是。

1 个答案:

答案 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秒。)