gpt4 book ai didi

amazon-web-services - 嵌套堆栈不会使用 RequestMappingTemplateS3Loc​​ation 检测模板中的更改

转载 作者:行者123 更新时间:2023-12-03 07:32:06 25 4
gpt4 key购买 nike

我有一个带有嵌套堆栈的无服务器规范,我想使用 RequestMappingTemplateS3Loc​​ation 和 ResponseMappingTemplateS3Loc​​ation 定义类型:AWS::AppSync::Resolver,并且模板位于 s3 中。当我更新模板时,堆栈不会更新云信息。

 Resource:
AppSyncResolverTestStack:
Type: AWS::CloudFormation::Stack
DependsOn:
- GraphQlApi
- GraphQlSchema
Properties:
Parameters:
MappingTemplatesURL:
Fn::Join:
- "/"
- - "s3:/"
- ${self:provider.deploymentBucket}
- 'etc'
- ${opt:stage}
- 'mapping_templates_extra'
GraphQlApiId:
Fn::GetAtt:
- GraphQlApi
- ApiId
TemplateURL:
Fn::Join:
- "/"
- - "https://s3.amazonaws.com"
- ${self:provider.deploymentBucket}
- 'etc'
- ${opt:stage}
- 'cf-resolvers-2.yml'

嵌套

Parameters:
MappingTemplatesURL:
Type: String
GraphQlApiId:
Type: String
Resources:
FCSYSAPIGraphQlResolverFinancialRequest:
Type: AWS::AppSync::Resolver
Properties:
ApiId:
Ref: GraphQlApiId
TypeName: Mutation
FieldName: FinanceDocumentsApi
DataSourceName: "FCFinanceApi"
RequestMappingTemplateS3Location:
Fn::Join:
- "/"
- - Ref: MappingTemplatesURL
- "fc-finance"
- "FinanceDocuments.request.vm"
ResponseMappingTemplateS3Location:
Fn::Join:
- "/"
- - Ref: MappingTemplatesURL
- "fc-finance"
- "FinanceDocuments.response.vm"

我希望当我更新 s3 中的模板并部署我的项目时,cloudformation 会更新,但仍使用以前的代码进行维护。

最佳答案

这是 CloudFormation 的正常行为。 CloudFormation 仅在资源属性更改时更新资源

由于属性 RequestMappingTemplateS3Loc​​ationResponseMappingTemplateS3Loc​​ation 不会更改,CloudFormation 不会更新您的 AppSync Resolver(即使这些 S3 位置指向"new"内容)。

解决您的问题的一种方法是使用 aws cloudformation package AWS CLI 命令。它允许您使用本地文件定义模板:

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 位置名称( key )取决于内容(使用 MD5)。因此,使用此策略,如果 S3 位置引用的内容发生变化,属性 RequestMappingTemplateS3Loc​​ation 也会发生变化。

之后,您可以使用aws cloudformation deploy部署您的模板。 .

注意:这与使用 AWS SAM CLI 相同, sam packageaws cloudformation package

的别名

如果使用无服务器框架,另一个解决方案是使用 serverless-appsync-plugin它允许内联或在文件中指定映射模板。

关于amazon-web-services - 嵌套堆栈不会使用 RequestMappingTemplateS3Loc​​ation 检测模板中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55978262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com