moto/tests/test_awslambda/test_lambda_layers_invoked.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

67 lines
1.8 KiB
Python
Raw Normal View History

import pkgutil
from uuid import uuid4
import boto3
from moto import mock_lambda
from tests.markers import requires_docker
from .utilities import _process_lambda, get_role_name
PYTHON_VERSION = "python3.11"
_lambda_region = "us-west-2"
boto3.setup_default_session(region_name=_lambda_region)
def get_requests_zip_file():
pfunc = """
import requests
def lambda_handler(event, context):
return requests.__version__
"""
return _process_lambda(pfunc)
@requires_docker
@mock_lambda
def test_invoke_local_lambda_layers():
conn = boto3.client("lambda", _lambda_region)
lambda_name = str(uuid4())[0:6]
# https://api.klayers.cloud/api/v2/p3.11/layers/latest/us-east-1/json
requests_location = (
"resources/Klayers-p311-requests-a637a171-679b-4057-8a62-0a274b260710.zip"
)
requests_layer = pkgutil.get_data(__name__, requests_location)
layer_arn = conn.publish_layer_version(
LayerName=str(uuid4())[0:6],
Content={"ZipFile": requests_layer},
CompatibleRuntimes=["python3.11"],
LicenseInfo="MIT",
)["LayerArn"]
bogus_layer_arn = conn.publish_layer_version(
LayerName=str(uuid4())[0:6],
Content={"ZipFile": b"zipfile"},
CompatibleRuntimes=["python3.11"],
LicenseInfo="MIT",
)["LayerArn"]
function_arn = conn.create_function(
FunctionName=lambda_name,
Runtime="python3.11",
Role=get_role_name(),
Handler="lambda_function.lambda_handler",
Code={"ZipFile": get_requests_zip_file()},
Timeout=3,
MemorySize=128,
Publish=True,
Layers=[f"{layer_arn}:1", f"{bogus_layer_arn}:1"],
)["FunctionArn"]
success_result = conn.invoke(
FunctionName=function_arn, Payload="{}", LogType="Tail"
)
msg = success_result["Payload"].read().decode("utf-8")
assert msg == '"2.31.0"'