67 lines
1.8 KiB
Python
67 lines
1.8 KiB
Python
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"'
|