gpt4 book ai didi

python - 使用 Moto 模拟 Lambda 响应返回 'b"错误运行 lambda : (2, 'WaitNamedPipe' 、 'The system cannot find the file specified.' )"'

转载 作者:行者123 更新时间:2023-12-04 16:45:19 31 4
gpt4 key购买 nike

我正在运行单元测试 ( Pytest ),以调用模拟的 Lambda(使用 Moto )并期望得到响应。假设我们正在导入 boto3 并创建了一个 lambda 客户端常量。这是函数:

def invoke_lambda():
request = {'message': 'Hello World!'}
lambda_response = LAMBDA_CLIENT.invoke(
FunctionName='hello-world-lambda',
InvocationType='RequestResponse',
Payload=json.dumps(request)
)

response = lambda_response['Payload'].read()
print(response)
return response

这是我的单元测试:

import zipfile

import boto3
from moto import mock_lambda

CLIENT = boto3.client('lambda', region_name='us-east-1')

# Expected response setup and zip file for lambda mock creation
def lambda_event():
code = '''
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', code)
zip_file.close()
zip_output.seek(0)
return zip_output.read()

# create mocked lambda with zip file
def mock_some_lambda(lambda_name, return_event):
return CLIENT.create_function(
FunctionName=lambda_name,
Runtime='python2.7',
Role='test-iam-role',
Handler='lambda_function.lambda_handler',
Code={
'ZipFile': return_event,
},
Publish=True,
Timeout=30,
MemorySize=128
)

# Test function
@mock_lambda
def test_invoke_lambda():
mock_some_lambda('hello-world-lambda', lambda_event)
response = function_code.invoke_lambda()
assert response['message'] == 'Hello World!'

运行 Pytest 时,我看到 Lambda 响应为:b“运行 lambda 时出错:(2, 'WaitNamedPipe', '系统找不到指定的文件。')”

关于如何解决这个问题有什么想法吗?我从谷歌搜索中看到一些指向 docker 的问题,但根据我的理解,Moto 应该能够开箱即用地运行这些东西,而不需要在 docker 容器中运行它。帮助会很棒:)

最佳答案

原来我只需要安装适用于 Windows 的 Docker 并让 Docker 运行...我不再看到这个问题,所以我想一切都很好。 – SamN 刚刚编辑

关于python - 使用 Moto 模拟 Lambda 响应返回 'b"错误运行 lambda : (2, 'WaitNamedPipe' 、 'The system cannot find the file specified.' )"',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53523118/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com