Amazon web services 如何在`serverless.yml`的`Resources`中使用`If`条件?

Amazon web services 如何在`serverless.yml`的`Resources`中使用`If`条件?,amazon-web-services,aws-lambda,amazon-cloudformation,serverless-framework,Amazon Web Services,Aws Lambda,Amazon Cloudformation,Serverless Framework,我正在尝试使用!如果资源部分中的条件失败。我想控制是否在lambda上设置provisionedConcurrency。lambda在功能部分中定义 功能: getTransactionsHandler: ... 资源: 条件: CommonPCNotZero:!不[!等于[0,${self:custom.commonPC}']] 资源: !如果 -公共PCNOTZERO -getTransactionsHandler: 类型:AWS::Lambda::Alias 特性: 函数名:!Ref G

我正在尝试使用
!如果
资源
部分中的
条件失败。我想控制是否在lambda上设置
provisionedConcurrency
。lambda在
功能
部分中定义


功能:
getTransactionsHandler:
...
资源:
条件:
CommonPCNotZero:!不[!等于[0,${self:custom.commonPC}']]
资源:
!如果
-公共PCNOTZERO
-getTransactionsHandler:
类型:AWS::Lambda::Alias
特性:
函数名:!Ref GetTransactionsHandlerLambdaFunction
功能版本:!加入['',[!Ref GetTransactionsHandlerLambdaFunction':$LATEST']]
ProvisioniedConcurrencyConfig:
ProvisionedConcurrentExecutions:“${self:custom.commonPC}”
- !参考AWS::NoValue
我在运行sls部署时遇到以下错误:

Error: The CloudFormation template is invalid: Template format error: [/Resources/Fn::If] resource definition is malformed

使用
的正确方法是什么!如果资源的
condition?

,只需添加一个条件即可将其包括或排除

功能:
getTransactionsHandler:
...
资源:
条件:
CommonPCNotZero:!不[!等于[0,${self:custom.commonPC}']]
资源:
getTransactionsHandler:
类型:AWS::Lambda::Alias
条件:公共PCNOTZERO
特性:
函数名:!Ref GetTransactionsHandlerLambdaFunction
功能版本:!加入['',[!Ref GetTransactionsHandlerLambdaFunction':$LATEST']]
ProvisioniedConcurrencyConfig:
ProvisionedConcurrentExecutions:“${self:custom.commonPC}”

另外,注意你的缩进<代码>类型和
属性
应处于同一级别。

对于资源,您只需添加一个
条件
即可将其包括或排除

功能:
getTransactionsHandler:
...
资源:
条件:
CommonPCNotZero:!不[!等于[0,${self:custom.commonPC}']]
资源:
getTransactionsHandler:
类型:AWS::Lambda::Alias
条件:公共PCNOTZERO
特性:
函数名:!Ref GetTransactionsHandlerLambdaFunction
功能版本:!加入['',[!Ref GetTransactionsHandlerLambdaFunction':$LATEST']]
ProvisioniedConcurrencyConfig:
ProvisionedConcurrentExecutions:“${self:custom.commonPC}”

另外,注意你的缩进<代码>类型和属性应处于同一级别。

不能使用If使整个资源有条件。通常,应使用以下工具完成以下操作:


不能使用If使整个资源有条件。通常,应使用以下工具完成以下操作:

resources:
  Conditions:
    CommonPCNotZero: !Not [!Equals [0, '${self:custom.commonPC}']]
  Resources:
     
     MyLambdaAlias: 
        Type: AWS::Lambda::Alias
        Condition: CommonPCNotZero
        Properties:
            FunctionName: !Ref GetTransactionsHandlerLambdaFunction
            FunctionVersion: !Join ['', [!Ref GetTransactionsHandlerLambdaFunction, ':$LATEST']]
            ProvisionedConcurrencyConfig:
              ProvisionedConcurrentExecutions: '${self:custom.commonPC}'