【发布时间】: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