terraform-aws-lambda icon indicating copy to clipboard operation
terraform-aws-lambda copied to clipboard

npm_requirements does not run `npm install` on `terraform apply`

Open yepengfan opened this issue 3 years ago β€’ 0 comments

Hi I am using the latest version of Terraform.

Terraform v1.2.6
on darwin_amd64
+ provider registry.terraform.io/hashicorp/archive v2.2.0
+ provider registry.terraform.io/hashicorp/aws v4.24.0
+ provider registry.terraform.io/hashicorp/external v2.2.2
+ provider registry.terraform.io/hashicorp/local v2.2.3
+ provider registry.terraform.io/hashicorp/null v3.1.1
+ provider registry.terraform.io/hashicorp/random v3.3.2

This is my code block

module "lambda_layer" {
  source = "terraform-aws-modules/lambda/aws"

  create_layer = true

  layer_name          = "lambda-layer"
  description         = "Lmabda layer"
  compatible_runtimes = ["nodejs14.x", "nodejs12.x"]
  source_path = [
    {
      path = "src/lambda_layer/nodejs",
      npm_requirements = true
    }
  ]
}

This does not raise an error, but the node_modules folder is not created on deployment.

Apart from that, I also tried to use commands

module "lambda_layer" {
  source = "terraform-aws-modules/lambda/aws"

  create_layer = true

  layer_name          = "lambda-layer"
  description         = "Lmabda layer"
  compatible_runtimes = ["nodejs14.x", "nodejs12.x"]
  source_path = [
    {
      path = "src/lambda_layer/nodejs",
      commands = [
        "npm install",
        ":zip"
      ]
    }
  ]
}

When I run this code block, the required node_modules folder is generated, but it raises an error that complains a zip file does not exist. However, I can find the file in the builds folder. I feel this is possibly a bug to fix.

 zip: adding: node_modules/xmlbuilder/lib/XMLDeclaration.js
β”‚ zip: adding: node_modules/xmlbuilder/lib/XMLDocType.js
β”‚ zip: adding: node_modules/xmlbuilder/lib/XMLDocument.js
β”‚ zip: adding: node_modules/xmlbuilder/lib/XMLDocumentCB.js
β”‚ zip: adding: node_modules/xmlbuilder/lib/XMLElement.js
β”‚ zip: adding: node_modules/xmlbuilder/lib/XMLNode.js
β”‚ zip: adding: node_modules/xmlbuilder/lib/XMLProcessingInstruction.js
β”‚ zip: adding: node_modules/xmlbuilder/lib/XMLRaw.js
β”‚ zip: adding: node_modules/xmlbuilder/lib/XMLStreamWriter.js
β”‚ zip: adding: node_modules/xmlbuilder/lib/XMLStringWriter.js
β”‚ zip: adding: node_modules/xmlbuilder/lib/XMLStringifier.js
β”‚ zip: adding: node_modules/xmlbuilder/lib/XMLText.js
β”‚ zip: adding: node_modules/xmlbuilder/lib/XMLWriterBase.js
β”‚ zip: adding: node_modules/xmlbuilder/lib/index.js
β”‚ Traceback (most recent call last):
β”‚   File ".terraform/modules/api.add_users_lambda.lambda_layer.lambda_layer/package.py", line 1389, in <module>
β”‚     main()
β”‚   File ".terraform/modules/api.add_users_lambda.lambda_layer.lambda_layer/package.py", line 1385, in main
β”‚     exit(args.command(args))
β”‚   File ".terraform/modules/api.add_users_lambda.lambda_layer.lambda_layer/package.py", line 1277, in build_command
β”‚     bpm.execute(build_plan, zs, query)
β”‚   File ".terraform/modules/api.add_users_lambda.lambda_layer.lambda_layer/package.py", line 318, in __exit__
β”‚     self.close()
β”‚   File ".terraform/modules/api.add_users_lambda.lambda_layer.lambda_layer/package.py", line 308, in close
β”‚     os.replace(self._tmp_filename, self.filename)
β”‚ FileNotFoundError: [Errno 2] No such file or directory: 'builds/5e6cdfe1b4b62259a5b315df3c2935b6037f6f3250f24bd3bffbf0ac570bbc73.zip.tmp' ->
β”‚ 'builds/5e6cdfe1b4b62259a5b315df3c2935b6037f6f3250f24bd3bffbf0ac570bbc73.zip'

yepengfan avatar Aug 03 '22 10:08 yepengfan