代码之家  ›  专栏  ›  技术社区  ›  SangminKim

似乎在无服务器语法和cloudformation语法之间有冲突

  •  0
  • SangminKim  · 技术社区  · 5 年前

    下面是由Serverless加载的CloudForAmtion文件的一部分。

    # resource.yml
    .
    .
    .
    {"Fn::Sub": "arn:aws:sqs:*:${AWS::AccountId}:sqs-spoon-*-${env:SERVICE}"}
    
    # serverless.yml
    .
    .
    resources:
      - ${file:resource.yml}
    

    ${AWS::AccountId} 是云形成的伪参数 ${env:SERVICE} 是无服务器变量。

    当我跑步时 sls deploy ,返回错误。

      Invalid variable reference syntax for variable AWS::AccountId. You can only reference env vars, options, & files. You can check our docs for more info.
    

    似乎是说无服务器识别 $AWS::accountID_ 作为无服务器变量,而不是作为cloudformation伪参数。

    对吗?

    如果是这样,如何让serverless不解析伪参数以便稍后由cloudformation解析?

    2 回复  |  直到 5 年前
        1
  •  0
  •   SangminKim    5 年前

    我可以用 plugin .

    使用插件,可以通过替换来解决IT云问题。 ${AWS::AccountId} 具有 #{AWS::AccountId} .

    {"Fn::Sub": "arn:aws:sqs:*:#{AWS::AccountId}:sqs-spoon-*-${env:SERVICE}"}
    
        2
  •  0
  •   Jared Short    5 年前

    您可以在中使用一个配置行来实现对本机AWS语法的支持。 serverless.yml 定义 variableSyntax . 详情可在此处找到 https://github.com/serverless/serverless/pull/3694 .

    provider:
      name: aws
      runtime: nodejs8.10
      variableSyntax: "\${((env|self|opt|file|cf|s3)[:\(][ :a-zA-Z0-9._,\-\/\(\)]*?)}"