使用AWS Toolkit for VS2017创建的Serverless API部署后CloudFormation参数异常咨询
部署Lambda上ASP.NET Core 2 Web API代理S3的实操经验
我之前正好用AWS Toolkit for Visual Studio 2017自带的模板,搭建过托管在AWS Lambda上的无服务器ASP.NET Core 2 Web API,用来代理S3存储桶。整个部署流程用dotnet lambda deploy-serverless命令就能搞定,所有部署参数都存在aws-lambda-tools-defaults.json文件里,大部分功能都跑很顺畅,唯独CloudFormation模板相关的参数配置需要多留意几个点:
CloudFormation模板参数配置注意事项
- 首先得确认
aws-lambda-tools-defaults.json里有没有包含CloudFormation相关的关键参数,比如template(指定自定义CFN模板路径)、stack-name(堆栈名称)这些。默认模板会带一些预设值,但得根据你S3代理的实际需求调整。 - 如果要修改默认的CFN模板,一定要保证模板里的Lambda执行角色有足够的S3权限——比如你的API需要读取S3文件,就得加
s3:GetObject权限;要是需要列出桶内容,就得加s3:ListBucket权限,权限不够肯定会导致代理失败。 - 要是部署时需要传递自定义的CFN参数,不用每次都手动敲一大串命令,要么直接在
aws-lambda-tools-defaults.json里加,要么在部署命令后用--parameter-overrides指定,比如:dotnet lambda deploy-serverless --parameter-overrides S3BucketName=my-proxy-bucket LambdaRoleArn=arn:aws:iam::123456789012:role/my-lambda-role - 检查
aws-lambda-tools-defaults.json的结构是否完整,给你个参考示例:{
"Information" : [ "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI." ],
"profile" : "default",
"region" : "us-east-1",
"configuration" : "Release",
"template" : "serverless.template",
"stack-name" : "my-s3-proxy-api-stack",
"s3-bucket" : "my-deployment-bucket",
"function-runtime" : "dotnetcore2.1"
} - 部署完之后,记得去AWS CloudFormation控制台看看堆栈状态,要是部署失败,直接看事件日志里的错误信息,十有八九是权限配置错了或者模板语法有问题,顺着排查就行。
内容的提问来源于stack exchange,提问作者DaMightyMouse
相关产品推荐
相关产品推荐

