【发布时间】:2019-05-27 16:11:40
【问题描述】:
我有一个使用 C# 构建并通过 Visual Studio 部署的无服务器 Web API(API Gateway + Lambda)。这是通过自动创建 CloudFormation 模板的 serverless.yml 文件实现的,然后应用该模板来创建 API 堆栈。
部署堆栈后,我进入 AWS 控制台以启用对路径参数之一的缓存,但出现此错误:
我知道这篇帖子 https://forums.aws.amazon.com/thread.jspa?messageID=711315򭪓 详细介绍了一个类似但不同的问题,即用户无法取消选中缓存。我的问题是我无法启用它。我也不明白为解决该帖子中的问题而提供的步骤。提到了使用 AWS CLI,但没有提到使用什么命令,或者具体做什么。我还阅读了有关如何通过 serverless.yml 模板本身或云形成启用缓存的阅读,但我在网上找到的示例似乎与我的无服务器文件的结构或生成的 CF 模板没有任何匹配. (如果需要,我可以提供示例)。我只想能够在路径参数上启用缓存。我已经能够在 API 阶段启用全局缓存,但这对我没有帮助,除非我可以让缓存对不同的路径参数敏感。
serverless.yml
"GetTableResponse" : {
"Type" : "AWS::Serverless::Function",
"Properties": {
"Handler": "AWSServerlessInSiteDataGw::AWSServerlessInSiteDataGw.Functions::GetTableResponse",
"Runtime": "dotnetcore2.0",
"CodeUri": "",
"MemorySize": 256,
"Timeout": 30,
"Role": null,
"Policies": [ "AWSLambdaBasicExecutionRole","AWSLambdaVPCAccessExecutionRole","AmazonSSMFullAccess"],
"Events": {
"PutResource": {
"Type": "Api",
"Properties": {
"Path": "kata/table/get/{tableid}",
"Method": "GET"
}
}
}
}
}
},
"Outputs" : {
"ApiURL" : {
"Description" : "API endpoint URL for Prod environment",
"Value" : { "Fn::Sub" : "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/" }
}
}
【问题讨论】:
-
你能分享你的 serverless.yml 文件的 sn-p 吗?我可以通过 cli 给你答案,但想看看 serverless.yml 是否可行。
-
添加到原始问题。整个模板实际上只是重复了类似于上面的方法,在 url 的末尾有一个输出。
标签: c# amazon-web-services caching aws-api-gateway