user1751825
user1751825

Reputation: 4319

AWS: CodeDeploy for Lambda can't read appspec

I'm attempting to setup CodePipeline to manage the deployment of a very simple Lambda function.

I'm completely stuck on a problem with the deployment step, and cannot figure out what could be wrong.

When the pipeline attempts to run the CodeDeploy action, it fails with the error...

BundleType must be either YAML or JSON

This is my appspec...

version: 0.0
Resources:
  - my-function:
      Type: AWS::Lambda::Function
      Properties:
        Name: "my-function"

My pipeline doesn't have a build step, as it's just a simple js file, with no dependencies, so no build is required.

I've tried adding an action to deploy to S3, and I can confirm that the zip file that's being sent to s3 contains the appspec.yml and index.js and that these are both in the root.

Most of the examples I've seen use a buildspec, but I'm not sure why I would need this, or what it would even do if I had one.

Upvotes: 1

Views: 2121

Answers (1)

shariqmaws
shariqmaws

Reputation: 8890

There is nothing wrong with your setup, it is a shortcoming of the services that you cannot use CodeDeploy in a CodePipeline action to Deploy a Lambda function.

The reason is because CodeDeploy expects a JSON or YAML appspec file for the Lambda deployment, but currently CodePipeline supports ZIP as a bundle type so the error is thrown.

To workaround, customers deploy Lambda in a CodePipeline is via CloudFormation deploy action (SAM to be exact). Please see this tutorial on this recommended approach:

Upvotes: 7

Related Questions