Использование лямбда-функции в конвейере кода без интернет-шлюза - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь использовать лямбда-функцию внутри конвейера кода, который не имеет интернет-шлюза. Я использую boto3 для вызова put_job_success/failure_result в моем конвейере кода. Он работал, когда в моей среде был интернет-шлюз, но с тех пор он был удален из-за угроз безопасности. Теперь, когда интернет-шлюз пропал, моя лямбда-функция зависает на 20 минут после вызова put_job_success_result и в конечном итоге дает сбой. Ни put_job_success_result, ни put-job_failure_result больше не работают. Кто-нибудь знает, что мне нужно сделать, чтобы моя лямбда-связь взаимодействовала с моим конвейером кода без интернет-шлюза?

У конвейера кода (генерируемого через 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)

Я ожидал, что, как только функция будет завершена и результат будет успешным, кодовая линия отразит это. Раньше, прежде чем я вынул интернет-шлюз.

1 Ответ

1 голос
/ 10 июля 2019

Вам понадобится использовать «Конечные точки VPC» для доступа к сервисам AWS без интернет-шлюза и / или NAT: https://docs.aws.amazon.com/codepipeline/latest/userguide/vpc-support.html#use-vpc-endpoints-with-codepipeline

Это представит сервис AWS на вашем VPC. Вам нужно будет поместить вашу функцию Lambda в тот же VPC, что и ваша новая конечная точка AWS - возможно, это было то, чего раньше не было?

(Я был бы удивлен, если бы тайм-аут составлял 20 минут. Максимальный тайм-аут для лямбды составляет 15 минут, но для boto следует тайм-аут на 60 секунд.)

...