Кажется, конфликт между бессерверным синтаксисом и синтаксисом CloudFormation - PullRequest
0 голосов
/ 28 ноября 2018

Ниже приведена часть файла CloudForamtion, загруженного с помощью Serverless.

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

# serverless.yml
.
.
resources:
  - ${file:resource.yml}

${AWS::AccountId} - это псевдопараметр CloudFormation, а ${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 ]

0 голосов
/ 06 декабря 2018

Вы можете выполнить поддержку собственного синтаксиса 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._,\-\/\(\)]*?)}"
0 голосов
/ 28 ноября 2018

Я могу решить это с помощью плагина .

С помощью плагина, Это облако может быть решено путем замены ${AWS::AccountId} на #{AWS::AccountId}.

{"Fn::Sub": "arn:aws:sqs:*:#{AWS::AccountId}:sqs-spoon-*-${env:SERVICE}"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...