Я создаю простой файл шаблона AWS Cloudformation для API AppSync. Я хотел бы создать схему GraphQL в отдельном файле и ссылаться на нее из шаблона стека, но не смог этого сделать.
Шаблон стека находится в файле template.yaml. Следующий фрагмент определяет схему GraphQL:
GraphQLSchema:
Type: AWS::AppSync::GraphQLSchema
Properties:
ApiId: !GetAtt AppSyncAPI.ApiId
DefinitionS3Location: schema.graphql
Схема GraphQL находится в том же каталоге, что и в отдельном файле с именем schema.graphql.
schema {}
При использовании aws-cli для создания стека в журнале событий Cloudformation появляется следующее сообщение об ошибке при создании GraphQLSchema:
«Местоположение S3 недопустимо для DefinitionS3Location»
Как сослаться на локальный файл для схемы, чтобы aws-cli автоматически связал его вместе?





Это невозможно. Есть только два варианта:
Создайте скрипт для автоматической загрузки схемы GraphQL в S3 и ссылку на DefinitionS3Location или
создайте свою схему GraphQL прямо в шаблоне CloudFormation:
AppSyncGraphQLSchema:
Type: AWS::AppSync::GraphQLSchema
DependsOn: AppSyncGraphQLApi
Properties:
ApiId: !GetAtt AppSyncGraphQLApi.ApiId
Definition: |
...
schema {
query: Query
mutation: Mutation
}
...
aws cloudformation create-stack не будет работать со схемой с локальной ссылкой.
Сначала упакуйте файлы с помощью aws cloudformation package, который загружает схему в указанную корзину S3 и заменяет локальную ссылку ссылкой на корзину S3 в сгенерированном пакете. Затем этот пакет можно развернуть с помощью aws cloudformation deploy.