【问题标题】:Python AWS Lambda ExecutionPython AWS Lambda 执行
【发布时间】:2022-11-28 15:47:27
【问题描述】:

我正在尝试通过 python 执行 lambda 函数。当我对变量进行硬编码时,我可以成功地做到这一点,但是当我替换变量时,我无法处理 lambda。

这是具有硬编码值的工作示例:

params = {"value1": "value1-value", "value2": "value2-value", "value3": "value3-value"}
client = boto3.client('lambda')
response = client.invoke(
    FunctionName='MyLambdaFunctionName',
    InvocationType='RequestResponse',
    Payload=json.dumps(params).encode(),
)
pprint.pp(response['Payload'].read())

失败的部分是当我用变量替换参数时。计划是将它们传入,正如我所说的值,但现在,我正在测试它并在函数中设置值。下面列出了变量:

json_data|lambda名称|

lambdaName = os.getenv('TF_VAR_lambdaName')
value1="value1-value"
value2="value2-value"
value3="value3-value"

data = {"value1": "value1-value", "value2": "value2-value", "value3": "value3-value"}
json_data = json.dumps(data)
params = {json_data}
client = boto3.client('lambda')
response = client.invoke(
    FunctionName=lambdaName,
    InvocationType='RequestResponse',
    Payload=json.dumps(params).encode(),
)
pprint.pp(response['Payload'].read())

当我对 JSON 或 Lambda 函数名称进行硬编码时,我得到的错误消失了。

下面列出了我收到的错误日志:

> Traceback (most recent call last):   File
> "/Users/go/src/github.com/repo/./cleanup/cleanup.py", line 25, in
> <module>
>     response = client.invoke(   File "/Users/Library/Python/3.9/lib/python/site-packages/botocore/client.py",
> line 515, in _api_call
>     return self._make_api_call(operation_name, kwargs)   File "/Users/Library/Python/3.9/lib/python/site-packages/botocore/client.py",
> line 893, in _make_api_call
>     request_dict = self._convert_to_request_dict(   File "/Users/Library/Python/3.9/lib/python/site-packages/botocore/client.py",
> line 964, in _convert_to_request_dict
>     request_dict = self._serializer.serialize_to_request(   File "/Users/Library/Python/3.9/lib/python/site-packages/botocore/validate.py",
> line 381, in serialize_to_request
>     raise ParamValidationError(report=report.generate_report()) botocore.exceptions.ParamValidationError: Parameter validation failed:
> Invalid type for parameter FunctionName, value: None, type: <class
> 'NoneType'>, valid types: <class 'str'>

【问题讨论】:

  • 显然TF_VAR_lambdaName不存在。

标签: python amazon-web-services aws-lambda


【解决方案1】:

我认为您遇到的问题出在 lambda 的定义中:

lambdaName = os.getenv('TF_VAR_lambdaName')

尝试以下:

LAMBDA_NAME = os.environ.get('YOUR_LAMBDA_NAME') // make sure you put the exact name of your lambda in ''

比在您的代码中使用它:

response = client.invoke(
  FunctionName=LAMBDA_NAME,
  InvocationType='RequestResponse',
  Payload=json.dumps(params).encode()
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 2021-01-17
    • 2016-10-16
    • 2018-04-11
    • 2022-01-01
    • 2020-04-10
    • 2016-05-01
    • 2020-11-25
    相关资源
    最近更新 更多