Amazon web services aws codepipline使用s3对象更新lambda函数源

Amazon web services aws codepipline使用s3对象更新lambda函数源,amazon-web-services,aws-lambda,aws-code-deploy,aws-codepipeline,aws-codebuild,Amazon Web Services,Aws Lambda,Aws Code Deploy,Aws Codepipeline,Aws Codebuild,我正在使用terraform在AWS上创建所有的infra(代码管道、lambda、bucket) 目前,我已经创建了一个管道来构建源zip文件并将其放在s3 bucket中,但lambda仍然使用旧的源代码。因此,我在AWS控制台中手动更新URL,它可以正常工作。 现在我想自动化流程,但可用的解决方案有: AWS SAM+CFT 使用AWS CLI更新源代码的代码构建阶段 创建更新源的lambda 代码部署+AWS SAM+CFT 我根本不愿意使用CFT,因为我们所有的代码都是terraf

我正在使用terraform在AWS上创建所有的infra(代码管道、lambda、bucket)

目前,我已经创建了一个管道来构建源zip文件并将其放在s3 bucket中,但lambda仍然使用旧的源代码。因此,我在AWS控制台中手动更新URL,它可以正常工作。 现在我想自动化流程,但可用的解决方案有:

  • AWS SAM+CFT
  • 使用AWS CLI更新源代码的代码构建阶段
  • 创建更新源的lambda
  • 代码部署+AWS SAM+CFT
我根本不愿意使用CFT,因为我们所有的代码都是terraform,CFT要求我创建新的lambda,而不是使用旧的lambda


是否有其他更简单的方法通过Codepipeline更新lambda源

通过Codepipeline部署lambda的首选方法是使用CloudFormation部署操作[1]。由于您不打算使用CloudFormation,下一个选项可能是从作为管道一部分的CodeBuild作业中运行terraform plan/apply命令。您需要为创建资源提供CodeBuild角色所需的权限(或导出环境变量中的凭据,以便TF通过此[2]方法使用),并在buildspec的安装阶段安装TF二进制文件

参考:

[1] 使用AWS CodePipeline为Lambda应用构建连续输送管道-


[2]

我不使用CloudFormation的原因是它试图创建新的lambda,而不是更新TerraformIf创建的现有lambda。我必须使用CodeBuild,然后使用aws cli更新lambda对我来说更有意义