[英]Why does AWS SAM CLI (awssamcli) fail to build when using Global section?
I just found out about the Global section which seems very useful in cleaning up the template.yaml
for AWS SAM cloud formation templating.我刚刚发现Global 部分在清理
template.yaml
方面似乎非常有用。yaml 用于 AWS SAM 云形成模板。 After completing the Global section I remove the Runtime from my lambda (since it should inherit Runtime from the Global section now).完成 Global 部分后,我从 lambda 中删除了 Runtime(因为它现在应该从 Global 部分继承 Runtime)。 But once I do that I get an error.
但是一旦我这样做,我就会得到一个错误。
Here is my template.yaml
:这是我的
template.yaml
:
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Global:
Function:
Handler: app.lambda_handler
Runtime: python3.8
Timeout: 900
MemorySize: 10240
VpcConfig:
SecurityGroupIds:
- !Ref SecurityGroupABC
SubnetIds:
- subnet-abc
- subnet-xyz
- subnet-rrr
Environment:
Variables:
ENV_VAR: abc123
Resources:
lambdaName:
Type: AWS::Serverless::Function
Role: 'arn:aws:iam::1234...'
#Runtime: python3.8
Properties:
CodeUri: lambda/lambdaName/
And this is the error I'm seeing after running sam build
:这是我在运行
sam build
后看到的错误:
File "runpy.py", line 194, in _run_module_as_main
File "runpy.py", line 87, in _run_code
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\__main__.py", line 12, in <module>
cli(prog_name="sam")
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 782, in main
rv = self.invoke(ctx)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 610, in invoke
return callback(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\decorators.py", line 73, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\click\core.py", line 610, in invoke
return callback(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metric.py", line 153, in wrapped
raise exception # pylint: disable=raising-bad-type
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\telemetry\metric.py", line 122, in wrapped
return_value = func(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\utils\version_checker.py", line 42, in wrapped
actual_result = func(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\cli\main.py", line 90, in wrapper
return func(*args, **kwargs)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\build\command.py", line 210, in cli
do_cli(
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\commands\build\command.py", line 315, in do_cli
artifacts = builder.build()
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\build\app_builder.py", line 139, in build
build_graph = self._get_build_graph(self._container_env_var, self._container_env_var_file)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\build\app_builder.py", line 206, in _get_build_graph
build_graph.clean_redundant_definitions_and_update(not self._is_building_specific_resource)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\build\build_graph.py", line 256, in clean_redundant_definitions_and_update
self._write()
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\build\build_graph.py", line 296, in _write
build_definition_as_table = _function_build_definition_to_toml_table(function_build_definition)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\samcli\lib\build\build_graph.py", line 53, in _function_build_definition_to_toml_table
toml_table[RUNTIME_FIELD] = function_build_definition.runtime
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\tomlkit\items.py", line 1022, in __setitem__
value = item(value)
File "C:\Program Files\Amazon\AWSSAMCLI\runtime\lib\site-packages\tomlkit\items.py", line 107, in item
raise ValueError("Invalid type {}".format(type(value)))
ValueError: Invalid type <class 'NoneType'>
If I leave the lambda's Runtime in the its section I don't get the error.如果我将 lambda 的运行时留在其部分,我不会收到错误消息。 But leaving that in would defeat the purpose of establishing those global values to reduce redundancy.
但是将其保留会破坏建立这些全球价值以减少冗余的目的。
In your template, Global should be renamed as Globals在您的模板中,应将 Global 重命名为 Globals
Please refer to the Globals Section link that you already shared.请参阅您已共享的全局部分链接。
Use sam validate -t yourtemplate.yaml
to check for syntax errors.使用
sam validate -t yourtemplate.yaml
检查语法错误。 This error came up for me because of a missing parameter in my lambda function.由于我的 lambda function 中缺少参数,因此出现此错误。 Not very helpful exception but the validate tool exposed my problems.
不是很有帮助的例外,但验证工具暴露了我的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.