Это нормальное поведение CloudFormation.CloudFormation обновляет ресурс только при изменении его свойств .
Поскольку свойства RequestMappingTemplateS3Location
и ResponseMappingTemplateS3Location
не изменяются, CloudFormation не обновляет ваш AppSync Resolver (даже если эти местоположения S3указывает на «новый» контент).
Одним из способов решения вашей проблемы является использование команды aws cloudformation package
интерфейса командной строки AWS.Он позволяет вам определять ваш шаблон с локальными файлами:
Type: 'AWS::AppSync::Resolver'
Properties:
...
RequestMappingTemplateS3Location: './path/to/local/template/file'
...
Запуск
aws cloudformation package --template-file mytemplate.yml --s3-bucket mybucket --output-template-file packaged.template
возвращает копию вашего шаблона (packaged.template
), заменяя ссылки на локальные артефакты на S3место, куда команда загрузила артефакты.Имя местоположения S3 (ключ) зависит от содержимого (используется MD5).Следовательно, с помощью этой стратегии свойство RequestMappingTemplateS3Location
изменяется, если изменяется содержимое, на которое ссылается местоположение S3.
После этого вы можете развернуть свой шаблон с помощью aws cloudformation deploy
.
Примечание. Это то же самое, что и AWS SAM CLI , sam package
- псевдоним aws cloudformation package
. При работе с серверной платформой другое решение заключается в использовании serverless-appsync-plugin , который позволяет указывать шаблоны отображения встроенными или в файле.