python - 使用 Moto 模拟 Lambda 响应返回 'b"error running lambda: (2, 'WaitNamedPipe', 'The system cannot find the file specified.')"'
问题描述
我正在运行一个单元测试(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"error running lambda: (2, 'WaitNamedPipe', 'The system cannot find the file specified.')"
有想法该怎么解决这个吗?我从谷歌搜索中看到一些指向 docker 的问题,但据我了解,Moto 应该能够开箱即用地运行这些东西,而无需在 docker 容器中运行它。帮助会很棒:)
解决方案
原来我只需要为 Windows 安装 Docker 并运行 Docker ......我不再看到这个问题,所以我想一切都很好。– SamN 刚刚编辑
推荐阅读
- javascript - 如何使用 Jquery 在动态创建的日期字段中添加日期值
- javascript - 错误:方法“模拟”仅用于在单个节点上运行。找到了 0 个
- java - 如果在编译期间将 Java 类型参数替换为其各自的边界,为什么以下代码不起作用?
- delphi - 虚拟树视图将垂直滚动条放在 RightToLeft 双模的右侧
- python - 使用 pyinstaller 打包时缺少模块
- sql - case inside where 子句包含 db2 中的 where 条件
- mdx - Total 和 GrandTotal CUBE 不同
- asp.net - 托管在 azure 上的 webapi 总是收到一个空列表
- azure - 存储队列与服务总线队列 - 轮询/成本问题
- c++ - 奇怪的构造函数行为