【问题标题】:Lambda function not found while invoke it from python program从 python 程序调用它时找不到 Lambda 函数
【发布时间】:2022-04-11 11:51:49
【问题描述】:

我创建了 lambda 函数并尝试使用 boto3 API 从 python 程序调用它,但失败了。

import boto3
client = boto3.client('lambda','us-east-1')
response = client.invoke(
    FunctionName='arn:aws:lambda:us-east-1:025631470700:function:app-test',
    InvocationType='Event',
    LogType='Tail',
    Payload='{"name": "David","status": "Active"}',
    Qualifier='1'
)

Traceback (most recent call last):
  File "/home/ssm-user/test.py", line 11, in <module>
    Qualifier='1'
  File "/usr/local/lib/python3.6/site-packages/botocore/client.py", line 357, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/lib/python3.6/site-packages/botocore/client.py", line 676, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.errorfactory.ResourceNotFoundException: An error occurred (ResourceNotFoundException) when calling the Invoke operation: Function not found: arn:aws:lambda:us-east-1:025631470700:function:app-test:1

我错过了什么吗?任何想法,非常感谢

【问题讨论】:

  • 您确定该函数存在并且具有您正在使用的名称吗?
  • 是的,它存在。我刚刚删除了 Qualifier 参数并将有效负载更改为 json.dumps({"name": "David","status": "Active"})。它有效。以字节为单位发送有效负载的正确方法吗?
  • 试试FunctionName='app-test'。据我所知,您需要Name 而不是ARN

标签: python-3.x amazon-web-services aws-lambda boto3


【解决方案1】:

正如用户 Jens 在 cmets 中所说,invoke() 函数的 FunctionName 参数不是 lambda 的 ARN,而是它的名称。使用这个:

response = client.invoke(
    FunctionName='app-test',
    InvocationType='Event',
    LogType='Tail',
    Payload='{"name": "David","status": "Active"}',
    Qualifier='1'
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-26
    • 2018-03-26
    • 2012-02-18
    • 2016-02-13
    • 2021-12-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多