![](/img/trans.png)
[英]AWS::AppSync::Resolver using javascript in CloudFormation .yml fails to build
[英]Passing CloudFormation parameters to AppSync Resolver
所以我將我的 CloudFormation 模板定義為包含一個帶有多個參數的參數部分,包括
Parameters:
DefaultLimit:
Type: Number
我還定義了一個 GraphQL API,我在其中使用 AppSync PIPELINE 解析器按順序運行多個操作。
QueryResolver:
Type: AWS::AppSync::Resolver
DependsOn: AppSyncSchema
Properties:
ApiId: !GetAtt [AppSyncAPI, ApiId]
TypeName: Query
FieldName: getData
Kind: PIPELINE
PipelineConfig:
Functions:
- !GetAtt AuthFunction.FunctionId
- !GetAtt ScanDataFunction.FunctionId
RequestMappingTemplate: |
{
# Inject value of DefaultLimit in $context object
}
ResponseMappingTemplate: "$util.toJson($context.result)"
這一切都按預期工作,除了在映射模板中注入 CFN 參數值。
我遇到的問題是——我想將DefaultLimit
的值傳遞給before
的 RequestMappingTemplate,以便該值可用於ScanDataFunction
。 目標是在第二個 function 執行時將該值用作默認limit
值,比如 DynamoDB 掃描操作,並返回分頁結果。
我當前的方法是在ScanDataFunction
的請求映射模板中硬編碼limit
的默認值 20。 我為此操作使用 DynamoDB 解析器。 相反,我想注入參數值,因為它可以讓我靈活地為不同的部署環境設置不同的默認值。
對此有任何幫助,我們將不勝感激。
|
YAML 中的字符開始一個塊,之后您輸入的縮進內容都被視為文本。 CloudFormation 不會處理任何這些。 我通常看到的解決方案是使用Join intrinsic function 。 它最終看起來很糟糕並且難以維護,所以我建議謹慎使用它。 下面是一個粗略的可能示例:
Parameters:
DefaultLimit:
Type: Number
Resourece:
QueryResolver:
Type: AWS::AppSync::Resolver
DependsOn: AppSyncSchema
Properties:
ApiId: !GetAtt [AppSyncAPI, ApiId]
TypeName: Query
FieldName: getData
Kind: PIPELINE
PipelineConfig:
Functions:
- !GetAtt AuthFunction.FunctionId
- !GetAtt ScanDataFunction.FunctionId
RequestMappingTemplate:
Fn::Join:
- ""
- - "Line 1 of the template\n"
- "Line 2 of the template, DefaultList="
- Ref: DefaultLimit
- "\nLine 3 of the template"
ResponseMappingTemplate: "$util.toJson($context.result)"
未經測試的代碼警告
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.