amazon-web-services - CodeDeploy找不到我的AWS Lambda函数

标签 amazon-web-services amazon-s3 aws-lambda aws-code-deploy aws-codepipeline

当它们在AWS CodePipeline中工作时,CodeDeploy和AWS Lambda出现问题。这是我的设置:

  • 源码GitHub
  • AWS CodeBuild
  • AWS CodeDeploy

  • 问题

    步骤1.和2.可以正常工作,但是在CodeDeploy上,出现以下错误:

    Action execution failed BundleType must be either YAML or JSON



    如果我解压缩CodeBuild生成的工件,则所有文件都就位。

    如果尝试从CodeDeploy手动部署到AWS Lambda,则会收到另一条消息...

    Deployment Failed The deployment failed because either the target Lambda function FUNCTION_NAME does not exist or the specified function version or alias cannot be found



    关于哪个错误消息有效,或者它们是否相同但具有不同的错误消息,这非常困惑。

    设置

    该功能的ARN为:
    arn:aws:lambda:us-east-1:239748505547:function:email_submition
    

    别名的ARN为:
    arn:aws:lambda:us-east-1:239748505547:function:email_submition:default
    

    而且我的appspec.yml文件具有以下内容
    version: 0.0
    Resources:
      - email_submition:
          Type: AWS::Lambda::Function
          Properties:
            Name: "email_submition"
            Alias: "default"
            CurrentVersion: "1"
            TargetVersion: "2"
    

    该项目的文件夹结构为:
    .gitignore
    appspec.yml
    buildspec.yml
    index.js
    README.md
    

    问题

    我在此配置中缺少什么?

    最佳答案

    因此,实际上这应该是评论而不是答案。我现在还没有50名代表,所以在这里。

    我和你有同样的问题。我不确定您是否找到了解决方案。我能够使用以下appspec.yml成功执行部署:

    version: 0.0
    Resources:
        - mylambdafunction:
            Type: AWS::Lambda::Function
            Properties:
                Name: "mylambdafunction"
                Alias: "staging"
                CurrentVersion: "2"
                TargetVersion: "3"
    

    在CodeDeploy工作之前,当前版本和目标版本都必须存在。当然,我已经通过手动部署进行了测试。

    我认为这里需要的是实际上可以更新代码并创建新版本的东西。我本以为CodeDeploy会这样做。

    编辑:进一步的研究产生了我尚未意识到的有关CodePipeline的信息。

    对于here,它看起来像要通过管道运行,您需要自己的buildspec,appspec和cft。管道失败的原因是因为您需要为lambda函数包括一个CloudFormation模板,这是部署实际代码的地方。 appspec.yml可以将流量从旧版本迁移到新版本,但是cft负责部署新代码。

    Edit2:这个example app让我不知所措。
    使用CodeBuild可以构建您的应用程序,还可以生成CFT以进行实际部署。这意味着您将使用lambda资源构建CFT。
    这会将appspec完全从资源中删除,而是使用CFT定义Lambda函数。这是SAM文档的link

    关于amazon-web-services - CodeDeploy找不到我的AWS Lambda函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48488126/

    相关文章:

    amazon-web-services - lambda 的/tmp 目录会持续一段时间,还是在每次运行后清除它?

    python - s3- boto- 按上传时间列出存储桶中的文件

    amazon-web-services - 获取 AWS S3 存储桶的 CLI 配置

    python - 读取由 s3 事件触发的文件

    amazon-web-services - 如何在 terraform lambda 代码中引用在 s3 存储桶中上传的 zip 文件?

    amazon-web-services - 从 Lambda 代码调用 AWS boto 函数

    amazon-web-services - 默认的 AWS lambda VPC 设置是什么?

    amazon-web-services - 如何在 lambda 中获取当前执行角色?

    amazon-web-services - AWS Glue Sagemaker 笔记本 "No module named awsglue.transforms"

    javascript - AWS S3 ajax PUT 返回 'The request signature we calculated does not match the signature you provided' ?