最近公司大牛组织培训了一些有关aws的serverless培训,小编把整理后的PPT带过来了,有需要的一起来看看吧!
内容主要分为两个板块,第一是PPT介绍,第二是手动操作指导。
PPT部分结束
下面是练习指引部分:
登录地址:
AWS无服务器计算应用动手实验
前提条件
- AWS账号或CIO AWS环境访问权限(仅限公司内部)
- VPN账号访问权限(仅限公司内部)
第一章 简介
(略)
第二章 创建静态Web站点
- 创建S3 Bucket并命名<姓名全拼>-chatapp(如cuichikun-chatapp),为S3 Bucket配置公开访问权限。
- 将Policy中的s3-bucket.json文件内容拷贝到"Permissions"标签页"Bucket Policy"文本框中并替换Bucket名字。
- 将Site文件夹内容上传到S3。
- 在"属性(Properties)"标签页选择"Static web hosting",填写默认文档(index document)后保存。
- 使用"Static Web Hosting"中的Endpoint URL访问站点。
第三章 创建API
- 选择IAM服务
- 为Lambda创建Role来访问S3中的会话文件
- 创建Policy
- 服务选择S3
- 动作选择GetObject
- 输入Bucket名称及选择任意(any)对象
- 为Policy命名Lambda-S3-Access
- 创建Role
- 服务选择Lambda
- 查找并添加Lambda-S3-Access
- 查找并添加AWSLambdaBasicExecutionRole
- 为Role命名Lambda-Data
- 选择Lambda服务
- 创建代理Lambda方法
- 选择"Author from scratch"
- 填写名称Chat-Proxy,Runtime选择"Node.js 6.10",Role选择"Choose an existing role",Existing Role选择Lambda-Data
- 创建方法
- 将Lambda\Chat-Proxy.js文件内容复制到代码文本框中,替换Bucket名称。
- 创建测试事件(test event)
- 测试
- 创建API,选择API Gateway服务
- 新建API并命名Chat-API。
- 在API根(\)上创建资源(Create Resouce),勾选"Configure as proxy resource"并创建资源。
- 在Lambda Function中选择步骤2中创建的Lambda方法名并保存。
- 创建API测试。
- 测试。
- 部署API
- 选择资源"/{proxy+}"后在Actions列表中选择Enable CORS。
- Deploy API并创建名为"prod“的stage。
- 将API Endpoint复制到剪切板。
- 更新代码
- 打开Site\js\config.js文件替换API Endpoint。
- 上传Site\js文件夹到S3。
- 通过网站URL在浏览器中打开网站,使用开发者工具查看API调用及返回结果。
第四章使用DynamoDB存储
- 选择DynamoDB服务
- 创建表Chat-Messages
- Primary key为ConversationId类型string
- Sort key为Timestamp类型number
- 取消'Use default settings'勾选
- 取消'Read Capacity'和'Write Capacity'勾选
- Read capacity units和Write capacity units都填写1
- 创建
- 创建表Chat-Conversations
- Primary key为ConversationId类型string
- Sort Key为Username类型string
- 创建Partation Key为Username,Sort Key为ConversationId的Index
- 取消'Use default settings'勾选
- 取消'Read Capacity'和'Write Capacity'勾选
- Read capacity units和Write capacity units都填写1
- 创建
- 创建测试数据
- Chat-Messages表增加两个字段Sender和Message类型string,添加测试数据。
- Chat-Conversations表添加测试数据。
- 创建Policy(Lambda访问DynamoDB)
- 复制Policies\lambda-data.json文件内容到Policy文本框
- 给Policy命名为Lambda-Data-Access
- 在IAM里面找到角色(Role)"Lambda-Data",搜索并添加"Lambda-Data-Access" 到角色中。
- 更新Lambda代码
- 将Lambda\Chat-Proxy.js文件内容替换原Lambda方法代码并保存。
- 测试Lambda方法。
- 更新网站代码
- 将Site中文件更新S3静态站点。
- 在浏览器中测试静态站点。
第五章 拆解单块应用
- 选择Lambda服务
- 根据Lambda\Chat-Conversation-GET.js文件内容创建Chat-Conversation-GET方法并测试
- 根据Lambda\Chat-Messages-GET.js文件内容创建Chat-Messages-GET方法并测试
- 根据Lambda\Chat-Messages-POST.js文件内容创建Chat-Messages-POST方法并测试
- 选择API Gateway服务并选择Chat-API
- 选择Models,按Models文件夹下各文件内容创建Conversation、ConversationList和NewMessage三个Model。
- 选择左侧菜单Resources
- 删除资源/{proxy+}
- 创建Conversation GET方法
- 创建资源(Resource)“conversations",路径"/conversations"
- 添加GET方法,指向Chat-Conversation-GET方法
- 在Method Response里面为200状态选择ConversationList模板
- 测试API
- 创建Messages GET方法
- 在资源(Resource)"conversations"下面创建资源"messages",路径"/{id}"
- 添加GET方法,指向Chat-Messages-GET方法
- 导航到Integration Request > Mapping Templates > Request body passthrough
- 选择"When there are no templates defined (recommended)"
- 向Content-Type添加application/json
- 将Mapping Templates\Chat-Messages-GET-Input.vtl文件内容复制到模板中保存返回
- 在Response Method里面为200状态选择Conversation模板
- 测试API
- 创建Messages POST方法
- 为资源"messages"添加POST方法,指向Chat-Messages-POST方法
- 导航到Method Request > Request Body为application/json(Content-Type)添加NewMessage模板
- 导航到Integration Request > Mapping Templates > Request body passthrough
- 选择"When there are no templates defined (recommended)"
- 向Content-Type添加application/json
- 将Mapping Templates\Chat-Messages-POST-Input.vtl文件内容复制到模板中保存返回
- 测试API
- 更新网站代码
- 将Site中文件更新S3静态站点。
- 在浏览器中测试静态站点。
第六章 添加用户身份验证
- 创建用户池(User Pool)
- 用户池名称ChatPool
- 选择Step through settings
- 勾选allow login with emaill,允许使用email登录,required attributes选择email。
- 创建AppClient,输入appclient 名字website, 取消 generate client secret勾选, 在attributes中只勾选和email相关的三个字段,取消其它字段勾选。
- 创建Policy
- 以文件Policies\lambda-cognito.json内容创建Policy,命名Lambda-Cognito
- 创建角色(Role)
- 创建角色Lambda-Cognito
- 添加Lambda-Cognito策略和AWSLambdaBasicExecutionRole策略。
- 创建Lambda方法
- 创建新的Lambda方法Chat-Users-GET
- 选择角色Lambda-Cognito
- 复制Lambda\Chat-Users-GET.js 代码到方法文本框
- 创建API
- 通过Models\UserList.json文件内容在API Gateway中创建新的Model命名UserList
- 在根(/)下创建新资源users,路径"/users"。
- 向资源添加GET 方法,并选择Chat-Users-GET方法。
- 在Method Response中为200状态选择UserList模板。
- 为资源/users执行Enable CORS
- Deploy API到prod命名的stage
- 下载API JavaScript SDK
- 解压缩后将文件夹添加到S3 Bucket中js文件夹下。