gpt4 book ai didi

amazon-web-services - 迭代模板中的 AWS cloudformation 资源数组

转载 作者:行者123 更新时间:2023-12-02 03:03:54 28 4
gpt4 key购买 nike

从 yml(或 json)模板在 AWS CloudFormation 中创建资源时,是否可以迭代数组以保持模板简短且可读。例如,我有一个 Appsync 项目,我必须在其中创建一堆几乎相同的 AWS 类型“AWS::AppSync::Resolver”解析器。在我与 Cloud Formation 一起使用的 YML 模板中,1 个此类资源可能如下所示

Resource:
GraphQlAddPostsResolver:
Type: "AWS::AppSync::Resolver"
DependsOn: GraphQlSchema
Properties:
ApiId:
Fn::GetAtt: [GraphQlApi, ApiId]
TypeName: Mutation #<---
FieldName: addPost #<----
DataSourceName:
Fn::GetAtt: [GraphQlLambdaDataSource, Name]
RequestMappingTemplate: |
{
"version" : "2017-02-28",
"operation": "Invoke",
"payload": {
"field": "addPost", #<---
"context": $util.toJson($context)
}
}
ResponseMappingTemplate: |
$util.toJson($context.result)

我可能有十几个或更多这样的解析器,唯一的区别是我用 <---- 指示的位置。 。有什么方法可以迭代值数组,例如

- Field: addPost
Type: Mutation
- Field: allPosts
Type: Query
- Field: getPost
Type: Query
## etc...

最佳答案

这在 AWS CloudFormation 中是不可能的。您可以使用嵌套堆栈来解决您的问题。使用AWS::CloudFormation::Stack资源。

  FirstResolver:
Type: AWS::CloudFormation::Stack
DependsOn: GraphQlSchema
Properties:
TemplateURL: ./app-sync-resolver.yml
Parameters:
ApiId: !GetAtt GraphQlApi.ApiId
DataSourceName: !GetAtt GraphQlLambdaDataSource.Name
Field: addPost
Type: Mutation

SecondResolver:
Type: AWS::CloudFormation::Stack
DependsOn: GraphQlSchema
Properties:
TemplateURL: ./app-sync-resolver.yml
Parameters:
ApiId: !GetAtt GraphQlApi.ApiId
DataSourceName: !GetAtt GraphQlLambdaDataSource.Name
Field: allPosts
Type: Query

app-sync-resolver.yml 看起来像这样(未经测试!)

AWSTemplateFormatVersion: 2010-09-09
Parameters:
ApiId:
Type: String
DataSourceName:
Type: String
Type:
Type: String
Field:
Type: String
Resource:
GraphQLResolver:
Type: AWS::AppSync::Resolver
Properties:
ApiId: !Ref ApiId
TypeName: !Ref Type
FieldName: !Ref Field
DataSourceName: !Ref DataSourceName
RequestMappingTemplate: |
{
"version" : "2017-02-28",
"operation": "Invoke",
"payload": {
"field": "${Field}",
"context": $util.toJson($context)
}
}
ResponseMappingTemplate: |
$util.toJson($context.result)

关于amazon-web-services - 迭代模板中的 AWS cloudformation 资源数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50063035/

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