(InsufficientCapabilityException):需要功能:[CAPABILITY_AUTO_EXPAND]

Mig*_*ejo 5 amazon-web-services aws-cloudformation

基于本地 AWS Cloud Formation.yaml文件。我正在运行以下命令

aws cloudformation create-stack --stack-name someTest --template-body file://template.yaml
Run Code Online (Sandbox Code Playgroud)

抛出以下错误

An error occurred (InsufficientCapabilitiesException) when calling the CreateStack operation: Requires capabilities : [CAPABILITY_AUTO_EXPAND]
Run Code Online (Sandbox Code Playgroud)

我在这里读到,这与模板包含macros. 在这种情况下,在.yaml文件内部,它调用AWS::Serverless::Function,即

Resources:
  ResourceName:
    Type: AWS::Serverless::Function 
    ...
    ...
Run Code Online (Sandbox Code Playgroud)

创建堆栈时有哪些选项可以解决此问题?

Mig*_*ejo 5

解决方案:

只需追加

--capabilities CAPABILITY_AUTO_EXPAND
Run Code Online (Sandbox Code Playgroud)

到命令

aws cloudformation create-stack --stack-name someTest --template-body file://template.yaml --capabilities CAPABILITY_AUTO_EXPAND
Run Code Online (Sandbox Code Playgroud)

解释:

正如文档所述,宏对模板执行自定义处理,例如操作和转换。在此示例中,AWS::Serverless转换“采用以 AWS Serverless Application Model 语法编写的模板,并将其转换并扩展为兼容的 AWS CloudFormation 模板”。

因此,当在create-stack包含宏的模板上调用操作时,应该指定功能 CAPABILITY_AUTO_EXPAND