AWS-Serverless Web 应用(动静分离)独角兽代码实现

本文是基于S3 + API gateway + Lambda + DynamoDB的一个serverless应用搭建!该应用为serverless架构,您无需管理任何服务器,只需进行应用代码编写和一些简单的配置,即可实现一个动态伸缩、高可用、按实际使用量付费的架构!

1 . Amazon S3静态网站托管

- 创建S3存储桶aws-serverless-wildrydes-lxq
- 上传网页文件
链接:https://pan.baidu.com/s/11O6KCpdVuqQUgUE_lIfnZA 密码:up6l
解压缩后把tutorial文件夹(不包含tutorial文件夹)内的所有内容通过网页控制台上传到刚才创建的S3存储桶内

- 添加存储桶允许公开访问
选择存储桶,选择权限选项卡,选择公有访问设置选项卡。取消“管理此存储桶的公有存储桶策略“的两个勾选。
在这里插入图片描述
选择存储桶策略,在存储桶策略编辑器中粘贴如下代码示例,确保在Resource中替换您存储桶的名字,点击保存
在这里插入图片描述
- 开启静态网站托管
在桶的属性中选择静态网站托管,配置如下:
在这里插入图片描述
打开后可以看到我们网站托管的内容,恭喜您,已经成功托管了一个静态网站在AWS上!!!

2.搭建无服务器后台

- 创建DynamoDB表结构
表名称:Rides(注意大小写敏感)
主键(分区键):RideId(注意大小写敏感),类型选择为“字符串”
表设置: 勾选“使用默认设置”
在这里插入图片描述
在表详细信息栏里获取资源名称 ARN , 把对应的值记录下来将会用在下一个操作在这里插入图片描述
Amazon 资源名称 (ARN) arn:aws:dynamodb:us-east-2:993501560978:table/Rides
- 创建 Lambda 函数需要使用的 IAM 角色
每个Lambda函数都有一个与之关联的IAM角色。此角色定义允许Lambda函数访问其他相关的AWS服务。您需要创建一个IAM角色,授予您的Lambda函数权限,以便并访问DynamoDB表,以及写入日志到CloudWatchLogs。
1在AWS管理控制台中,单击“服务”,然后在“安全性&身份”部分中选择IAM
2在左侧导航栏中选择“角色”,然后选择“创建角色”
3从AWS服务组中为角色类型选择Lambda,然后单击“下一步:权限”
在这里插入图片描述
4在“Attach权限策略”中,通过搜索栏键入“AWSLambdaBasicExecutionRole”,当搜索结果出来后勾选此项,并点击“下一步:审核”在这里插入图片描述
5在审核信息中填入如下内容 角色名称:WildRydesLambda
在这里插入图片描述
6创建完成后可以通过角色搜索栏搜索“WildRydesLambda-liu”,点击进去查看角色摘要在这里插入图片描述
7点击“权限”选项页里右侧的“添加内联策略”创建允许往DynamoDB写的权限
8在“可视化编辑器”中填写如下信息
o 服务:DynamoDB
o 操作:PutItem,可在搜索栏上筛选PutItem
o 资源:选择“特定”,点击“添加ARN”,输入刚才创建DynamoDB表后记录下来的ARN信息
o 填写完ARN后,Region, Account, Table name这三个字段会自动填充。
在这里插入图片描述
9点击“添加”,然后“查看策略”
10输入名称“DynamoDBWriteAccess-liu”,然后点击“Create Policy”
11创建结束后在“权限”选项页里可以看到已经成功添加了“DynamoDBWriteAccess-liu”策略在这里插入图片描述
- 创建用于处理请求的Lambda函数
o 名称:RequestUnicorn-liu
o 运行语言:Node.js12.0
o 角色:选择现有角色
o 现有角色:WildRydesLamdba-liu
将index.js代码编辑器中的现有代码替换为aws-serverless-workshop.zip压缩包下lambda文件夹的index.js代码

  • 验证Lambda函数
    在功能的主编辑屏幕中,从“选择测试事件 …”下拉列表中选择“配置测试事件”。
    在这里插入图片描述
    最后测试成功。
    在这里插入图片描述

3 集成API Gateway 构建RESTful APIs

  • 选择“API Gateway”服务。创建名为WildRydes-liu的API
  • 创建 API Resource (资源)和 Method(请求方法)
    在API中创建名为 /ride 的新资源, 然后为该资源创建一个 POST 方法,并将其配置为 Lambda RequestUnicorn 函数代理集成
    左侧导航栏中,单击WildRydes API下的“资源”。 api
    从“操作”下拉列表中选择“创建资源”。
    在“新建子资源”页面上填入如下信息
    o 资源名:ride
    o 资源路径:/ride
    o 勾选“启用API Gateway CORS”
    在这里插入图片描述
    击“创建资源”
    选择新创建的 /ride 资源后,从“操作”下拉列表中选择“创建方法”
    选中显示的新下拉列表中的POST方法
    击“POST”方法进入设置页面,填入如下信息
    o 集成环境:Lambda函数
    o 勾选 “使用Lambda代理集成”
    o Lambda区域:us-east-2
    o Lambda函数:RequestUnicorn-liu
    o 勾选“使用默认超时”
    在“操作”下拉列表中,选择“部署API” api
    在部署API页面中填入如下信息 o 部署阶段:新阶段
    o 阶段名称:prod-liu
    点击“部署”
    记录“prod-liu阶段编辑器”的调用URL,这个URL就是API暴露到公网的访问地址。后续需要用到(如下图所示)。
    在这里插入图片描述
  • 更新网页应用的配置
    修改/tutorial/js/config.js 文件,将刚才部署的API调用URL填入invokeUrl
    window._config = {
    api: {
    invokeUrl: ‘[https://2sdx64a490.execute-api.us-east-2.amazonaws.com/prod-liu]’
    }
    };
  • 验证集成实现
    在AWS管理控制台中,单击“服务”,然后在“存储和内容分发”下选择“S3”
    选择实验创建的存储桶,选择“属性”,选择“静态网站托管”
    点击终端节点跳转到网页应用执行验证在这里插入图片描述

http://aws-serverless-wildrydes-lxq.s3-website.us-east-2.amazonaws.com/
最后结果:
在这里插入图片描述

在这里插入图片描述
数据库中可看到我们的操作记录。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值