Added support for custom AWS Lambda images. (#4889)

This commit is contained in:
Nick Pope 2022-02-24 23:53:43 +00:00 committed by GitHub
parent 790b5d5833
commit 182e45aa81
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 3 deletions

View File

@ -1,11 +1,12 @@
Moto Changelog Moto Changelog
=================== ==============
3.0.5 3.0.5
----- -----
Docker Digest for 3.0.5: <autopopulateddigest> Docker Digest for 3.0.5: <autopopulateddigest>
TBD Miscellaneous:
* AWSLambda: Made the docker image repository selectable via the `MOTO_DOCKER_LAMBDA_IMAGE` environment variable.
3.0.4 3.0.4
----- -----

View File

@ -610,7 +610,8 @@ class LambdaFunction(CloudFormationModel, DockerModel):
"host.docker.internal": "host-gateway" "host.docker.internal": "host-gateway"
} }
image_ref = "lambci/lambda:{}".format(self.run_time) image_repo = settings.moto_lambda_image()
image_ref = f"{image_repo}:{self.run_time}"
self.docker_client.images.pull(":".join(parse_image_ref(image_ref))) self.docker_client.images.pull(":".join(parse_image_ref(image_ref)))
container = self.docker_client.containers.run( container = self.docker_client.containers.run(
image_ref, image_ref,
@ -1171,6 +1172,7 @@ The following environment variables are available for fine-grained control over
# Note that this option will be ignored if MOTO_DOCKER_NETWORK_NAME is also set # Note that this option will be ignored if MOTO_DOCKER_NETWORK_NAME is also set
MOTO_DOCKER_NETWORK_MODE=host moto_server MOTO_DOCKER_NETWORK_MODE=host moto_server
The Docker image can be overridden using an environment variable: ``MOTO_DOCKER_LAMBDA_IMAGE``.
.. note:: When using the decorators, a Docker container cannot reach Moto, as it does not run as a server. Any boto3-invocations used within your Lambda will try to connect to AWS. .. note:: When using the decorators, a Docker container cannot reach Moto, as it does not run as a server. Any boto3-invocations used within your Lambda will try to connect to AWS.
""" """

View File

@ -66,6 +66,10 @@ def moto_server_host():
return "http://host.docker.internal" return "http://host.docker.internal"
def moto_lambda_image():
return os.environ.get("MOTO_DOCKER_LAMBDA_IMAGE", "lambci/lambda")
def moto_network_name(): def moto_network_name():
return os.environ.get("MOTO_DOCKER_NETWORK_NAME") return os.environ.get("MOTO_DOCKER_NETWORK_NAME")