terraform-aws-modules / terraform-aws-lambda

Terraform module, which takes care of a lot of AWS Lambda/serverless tasks (build dependencies, packages, updates, deployments) in countless combinations πŸ‡ΊπŸ‡¦
https://registry.terraform.io/modules/terraform-aws-modules/lambda/aws
Apache License 2.0
886 stars 657 forks source link

`docker_additional_options` is not passed to container when building with poetry #427

Closed FurqanHabibi closed 1 year ago

FurqanHabibi commented 1 year ago

Description

We are trying to pass the following environment variable to the docker container via docker_additional_options:

docker_additional_options = ["-e", "PIP_PLATFORM=manylinux2014_aarch64"]

but as can be seen in the following output, said options is not being passed to the docker run command:

module.le_auto_stack.module.lambda_issue_layer.null_resource.archive[0] (local-exec): > docker run --rm -w /var/task -v /tmp/terraform-aws-lambda-fyvlzv2k:/var/task:z -v /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:z --entrypoint '' 1d556381b475 /bin/sh -c 'poetry config --no-interaction virtualenvs.create true && poetry config --no-interaction virtualenvs.in-project true && poetry export --format requirements.txt --output requirements.txt --with-credentials && python3.9 -m pip install --no-compile --no-deps --prefix= --target=. --requirement=requirements.txt && chown -R 1001:123 .'

Versions

Reproduction Code

Modify the build-package example's package_dir_poetry module below https://github.com/terraform-aws-modules/terraform-aws-lambda/blob/1171025ea1e6d40bd7f37a63d130069b68ef8d5f/examples/build-package/main.tf#L49 by adding

docker_additional_options = ["-e", "PIP_PLATFORM=manylinux2014_aarch64"]

Steps to reproduce the behavior:

Expected behavior

docker_additional_options should be passed to the docker run command.

Actual behavior

docker_additional_options is not passed to the docker run command.

Terminal Output Screenshot(s)

image

Additional context

The culprit is likely this line https://github.com/terraform-aws-modules/terraform-aws-lambda/blob/1171025ea1e6d40bd7f37a63d130069b68ef8d5f/package.py#L1168 docker object is not passed to docker_run_command.

github-actions[bot] commented 1 year ago

This issue has been automatically marked as stale because it has been open 30 days with no activity. Remove stale label or comment or this issue will be closed in 10 days

pdecat commented 1 year ago

Hi @FurqanHabibi,

you mention it is not working with poetry, does that mean it works with pip?

pdecat commented 1 year ago

Ok, understood what you meant when pointing to https://github.com/terraform-aws-modules/terraform-aws-lambda/blob/1171025ea1e6d40bd7f37a63d130069b68ef8d5f/package.py#L1168

Working on a fix...

pdecat commented 1 year ago

Submitted https://github.com/terraform-aws-modules/terraform-aws-lambda/pull/443

antonbabenko commented 1 year ago

This issue has been resolved in version 4.13.0 :tada:

github-actions[bot] commented 1 year ago

I'm going to lock this issue because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active issues. If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.