moto mock_lambda get_function не работает - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь вызвать метод get_function, используя moto mock lambda, и в результате получаю UnrecognizedClientException, что означает, что mock не работает. Ниже приведен код, который я использую. Обратите внимание, что вызов create_function работает правильно. По какой-то причине, когда я вызываю get_function, макет перестает работать.

import boto3
import io
import zipfile
import json
import os
from moto import mock_lambda
import botostubs

def get_zip_lambda():
    pfunc = """
def lambda_handler(event, context):
    return event
    """
    zip_output = io.BytesIO()
    zip_file = zipfile.ZipFile(zip_output, 'w', zipfile.ZIP_DEFLATED)
    zip_file.writestr('lambda_function.py', pfunc)
    zip_file.close()
    zip_output.seek(0)
    return zip_output.read()


DEF_ECHO_LAMBDA = {
    'Runtime': 'python3.7',
    'Role': 'test-iam-role',
    'Handler': 'lambda_function.lambda_handler',
    'Code': {
        'ZipFile': get_zip_lambda(),
    },
    'Description': 'lambda function',
    'Timeout': 3,
    'MemorySize': 128,
    'Publish': True
}

def test_configure_current_service():
    # Arrange
    with mock_lambda():
        fn_name = "TestEcho_ian-local"
        original_variables = {"original_env_variable": "original_value"}

        aws_lambda: botostubs.Lambda = boto3.client('lambda')
        echo_lambda = DEF_ECHO_LAMBDA
        echo_lambda['FunctionName'] = fn_name
        response = aws_lambda.create_function(**echo_lambda)

        get_response = aws_lambda.get_function(FunctionName=fn_name)
        print(f"get testing lambda response: {get_response}")

test_configure_current_service()

1 Ответ

1 голос
/ 30 октября 2019

Похоже, что moto не полностью реализовал функцию get_function. Я попытался добавить аргумент Qualifier, и тогда он работает.

Также, если вы попытаетесь вызвать, используя арн функции вместо имени, это не сработает. Похоже, вам нужно всегда использовать имя функции и спецификатор.

get_response = aws_lambda.get_function(FunctionName=fn_name, Qualifier="$LATEST")
...