【发布时间】:2020-01-27 09:01:43
【问题描述】:
我正在 AWS 上开发一个简单的 Lambda 函数来获取数据并将其放入 Dynamo DB。我想从 Windows 客户端桌面应用程序调用这个函数。我的问题是,我这里真的需要 AWS Gateway API 还是可以直接使用 AWS SDK 调用 lambda 函数?
【问题讨论】:
标签: amazon-web-services aws-lambda
我正在 AWS 上开发一个简单的 Lambda 函数来获取数据并将其放入 Dynamo DB。我想从 Windows 客户端桌面应用程序调用这个函数。我的问题是,我这里真的需要 AWS Gateway API 还是可以直接使用 AWS SDK 调用 lambda 函数?
【问题讨论】:
标签: amazon-web-services aws-lambda
您可以使用invoke() 直接从 AWS 开发工具包执行 AWS Lambda 函数。您也可以将payload 传递给它,它可以在函数中访问。
以下是 Python 中的语法示例:
response = client.invoke(
ClientContext='MyApp',
FunctionName='MyFunction',
InvocationType='Event',
LogType='Tail',
Payload='fileb://file-path/input.json',
Qualifier='1',
)
【讨论】:
aws lambda invoke —function-name MyLambdaFunction —invocation-type RequestResponse —payload “JSON string here”
sdk python 调用。 configuration
invoke_resp = LAMBDA_CLIENT.invoke(
FunctionName='function_name',
InvocationType='RequestResponse',
Payload='payload')
aws lambda invoke —function-name MyLambdaFunction —invocation-type Event —payload “JSON string here”
【讨论】:
我没有从您的用例中获得太多信息。我必须在这里假设一些东西。
您无需等待 Lambda 的回复 因此,您可以通过 SNS 或 SQS 使用异步调用,然后将您的 Lambda 订阅到 SNS 或 SQS。您可以研究更多以在 SNS 和 SQS 之间进行选择,具体取决于您的用例
如果您需要等待 Lambda 的回复
如果您想在组织外部共享 Lambda 的功能,您可以使用 API Gateway 来实现,这意味着您仍然将 Lambda 保留在内部,但通过 API Gateway 将 API 公开给外部使用。
如果不想在外面分享 Lambda 的功能,就像之前的回答一样,可以使用 invoke command/sdk 来实现。
如果我从您的用例中获得更多信息,也许答案会更准确。
【讨论】: