本文承接lambda发布api,前面我们已经部署好了函数,这里我们开始将函数发布到公网,提供给前端使用.
进入api gateway服务,进不去的需要检查一下自己的权限....
选择创建API,选择rest类型,并命名,创建以后,在操作中选择创建方法,我们例子用的是post.
[图片上传中...(image.png-79ef92-1555496005697-0)]
集成环境为lambda函数,区域即为我们在创建lambda时,网络中的子网组,二选一即可,这里会影响将来发布的域名名称。
函数为我们在lambda中创建的函数名。保存即可。
方便测试,所以我们并没有设置接口的auth类型,实际上是需要设置的,这里先不设置。左侧的测试功能方便我们测试apigateway调用lambda函数是否正常。
方法创建以后,在操作下拉选择中,选择部署api,一旦部署以后,会立即生效,后面若有修改api相关的改动,需要重新部署api以覆盖前面的版本。
上面会显示发布的url地址,我们可以在相应的接口调试工具中调试该地址
至此,一个简单的无校验api发布成功。下面补充一下api auth方法.
在资源中,选择我们的方法,选中请求类型,点击方法请求,选择授权类型为AWS_IAM,这个类型意思就是通过aws账户生成的AccessKey与SecretKey去访问你的api,当然还有其他更复杂的验证条件。
选择之后保存,再次部署api到test阶段,覆盖我们的上一个版本。
再次请求,就会提示缺失token,这里使用的是postman,Authorization中带有Aws signature方式。
Accesskey与SecretKey在IAM中创建生成即可,AWS Region和Service Name在url上自动带出,域名规则为随机字符.{Service Name}.{AWS Region}.amazonaws.com.cn/{functionName},加上已后,调用成功.
那么如何在页面上去实现aws signature的方法呢?
官方提供了相关的js脚本: https://docs.aws.amazon.com/zh_cn/apigateway/latest/developerguide/how-to-generate-sdk-javascript.html ,经测试后确实可用。
以上aws serverless部署java api完成。