Доступ к автоматически сгенерированному URL-адресу AWS для развернутых ресурсов - PullRequest
0 голосов
/ 25 июня 2018

Есть ли способ доступа к автоматически сгенерированным URL-адресам для развернутых ресурсов до завершения развертывания? (например, хост базы данных, URL-адрес лямбда-функции и т. д.)

Я могу получить к ним доступ после завершения развертывания, но иногда мне нужно получить к ним доступ при сборке моего стека. (Например, используйте их в других ресурсах).

Какое хорошее решение для этого варианта использования? Я думал о выводе их в хранилище параметров SSM из шаблона CloudFormation, но я не уверен, возможно ли это вообще.

Спасибо за любые предложения или рекомендации!

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Чтобы добавить к ответу bwinant, ${cf:<stack name>.<output name>} не работает, если вы хотите сослаться на переменную в другом стеке, который находится в другом регионе.Существует плагин для достижения этого, который называется serverless-plugin-cloudformation-cross-region-variable * .Вы можете использовать его так

plugins:
  - serverless-plugin-cloudformation-cross-region-variables

custom:
  myVariable: ${cfcr:ca-central-1:my-other-stack:MyVariable}
0 голосов
/ 03 июля 2018

Если «использовать их в других ресурсах» означает другую безсерверную службу или другой стек CloudFormation, используйте выходы CloudFormation для экспорта интересующих вас значений. Затем используйте функцию CloudFormation ImportValue для ссылки на это значение в другом стеке.

См. https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html и https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-importvalue.html

В Serverless Framework вы можете получить доступ к выходному значению CloudFormation, используя https://serverless.com/framework/docs/providers/aws/guide/variables/#reference-cloudformation-outputs

Если вы хотите использовать автоматически сгенерированное значение в том же стеке, просто используйте функцию CloudFormation GetAtt. См https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html.

Например, у меня есть стек CloudFormation, который выводит URL для кластера ElasticSearch.

Resources:
    Search:
        Type: AWS::Elasticsearch::Domain
        Properties: <redacted>

Outputs:
    SearchUrl:
        Value: !GetAtt Search.DomainEndpoint
    Export:
        Name: myapp:search-url

Если предположить, что имя стека CloudFormation - "mystack", то в моей службе без сервера я могу ссылаться на SearchUrl следующим образом:

custom:
    searchUrl: ${cf:mystack.SearchUrl}     
...