如何使用AWS SAM、TypeScript构建原生Android应用?求搭建部署入门指引
AWS SAM + Node.js/TypeScript 后端搭建、测试、部署指引
一、仓库搭建
- 先安装AWS SAM CLI和Node.js(16+版本),然后初始化SAM项目:
初始化过程中选择TypeScript作为开发语言(SAM原生支持TS模板选项)。sam init --runtime nodejs18.x --app-template hello-world --name android-backend --package-type Zip - 调整项目结构:
- 将TS源码放在
src/目录,编译后的JS输出到dist/ - 修改
template.yml中Lambda函数的CodeUri为dist/,确保SAM能识别编译后的代码
- 将TS源码放在
- 配置TS编译:
- 在
package.json中添加build脚本:"build": "tsc" - 编辑
tsconfig.json,设置outDir: "./dist"、target: "es2020"(匹配Node.js 18的支持版本)
- 在
- 仓库管理:
- 若和Android代码同仓,根目录存放后端代码,Android代码放在
android/子目录 - 配置
.gitignore,包含node_modules/、dist/、Android的build/等目录
- 若和Android代码同仓,根目录存放后端代码,Android代码放在
二、本地测试
- 测试Lambda函数:
先编译TS代码:npm run build,然后单独调用函数:sam local invoke HelloWorldFunction --event events/event.jsonevent.json可自定义请求参数,模拟Android端的请求格式 - 启动本地API网关:
用curl测试端点:sam local start-apicurl http://localhost:3000/hello - Android端本地联调:
用adb端口转发让模拟器访问本地API:adb reverse tcp:3000 tcp:3000,之后Android代码中请求http://localhost:3000/hello即可 - 单元测试:
用Jest编写TS单元测试,覆盖Lambda的业务逻辑(比如参数校验、响应生成),运行测试:npm test
三、部署到AWS
- 准备S3桶:先在AWS控制台或用CLI创建一个S3桶(用于存放SAM打包后的代码)
- 打包项目:
sam package --output-template-file packaged.yml --s3-bucket YOUR_BUCKET_NAME - 部署栈:
部署完成后,控制台会输出API Gateway的访问域名sam deploy --template-file packaged.yml --stack-name android-backend-stack --capabilities CAPABILITY_IAM - 配置Android端:把线上API域名替换到Android代码的请求地址中,比如
https://xxxxxx.execute-api.us-east-1.amazonaws.com/Prod/hello - 验证部署:用Postman或curl调用线上API,确认响应正常后,测试Android端的线上访问
四、实用技巧
- 环境变量管理:不要硬编码配置,用SAM的
Parameters或AWS Secrets Manager管理敏感信息(比如数据库密钥),在Lambda中通过process.env读取 - 日志调试:部署后用CloudWatch查看Lambda日志,命令:
sam logs -n HelloWorldFunction --stack-name android-backend-stack --tail - CI/CD自动化:可以配置GitHub Actions,每次push到main分支自动执行build、测试、部署流程,减少手动操作
内容的提问来源于stack exchange,提问作者lowkeyhuman
相关产品推荐
相关产品推荐

