Как я могу разделить appyn c на несколько стеков? - PullRequest
0 голосов
/ 02 августа 2020

У меня есть проект по развертыванию API-интерфейса appsyn c с помощью этого плагина (https://github.com/sid88in/serverless-appsync-plugin). И я ищу решение разбить все инфра. в несколько стеков (несколько файлов serverless.yml).

Моя структура проекта выглядит так:

main/serverless.yml
dataSources/serverless.yml
resolvers/serverless.yml
schema/serverless.yml

Папка main развертывает только экземпляр Appsyn c, а также ведение журнала и аутентификацию. Он не включает никаких схем, преобразователей и т. Д. c.

И других папок, каждая из которых предназначена для развертывания схемы, преобразователей и источников данных в Appsyn c, развернутом в основной папке. В этих папках им необходимо импортировать appsyn c Infra, чтобы присоединить эти преобразователи.

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

1 Ответ

0 голосов
/ 08 августа 2020

Как правило, вы можете экспортировать переменные CF, которые могут вам понадобиться в других стеках, используя Output, например:

 resources:
   Resources:
     NotesTable:
       Type: AWS::DynamoDB::Table
       Properties:
         TableName: notes

 # ...

  Outputs:
    Value:
      Ref: NotesTable
    Export:
      Name: NotesTableName

И в другом файле прочтите их как: 'Fn::ImportValue': NotesTableName

Я использую примеры из замечательного источника: https://serverless-stack.com/chapters/cross-stack-references-in-serverless.html

Ваш пример - AppSyn c ...

Вы можете определить свои источники данных, такие как DynamoDb, в выделенный стек, а в источниках AppSyn c необходимо ссылаться на них только по имени, например:

- type: AMAZON_DYNAMODB
  name: ItemSource
  description: Item table
  config:
    tableName: ItemTable // Whatever name you used in your DynamoDb stack

Для лямбда-выражений вы должны использовать Output / import. В резольверах:

- type: AWS_LAMBDA
  name: SomeLambdaSource
  config:
    functionName: someSource
    lambdaFunctionArn:
      Fn::ImportValue: SomeLambdaSource

В вашем стеке лямбда:

functions:
  someSource:
    name: SomeSource
    handler: src/handlers/someSource.handler
 

resources:
  Outputs:
    SomeSource:
      Value:
        Fn::GetAtt:
          - SomeSource
          - Arn
      Export:
        Name: SomeSource
...