AWS Lambda 是一种无服务器、事件推动的运算服务,而 Amazon API Gateway 可以让开发人员轻松地建立、发布、维护、监控和保护任何规模的 API,使用 API Gateway 可以建立 RESTful API 和 WebSocket API,以启用即时双向通讯应用程序。本篇就是介绍如何结合这两个 AWS 服务,透过 Amazon API Gateway 来推动 AWS Lambda。
步骤 1. 进入 AWS Lambda 控制台
登录 AWS 控制台画面後选择进入 AWS Lambda 控制台,单击左边功能导览列中的函式,会进入函式画面,注意所在区域,本范例以东京区域为例,如下图所示,单击建立函式按钮。
AWS Lambda 函式控制台画面
步骤 2. 建立 Lambda 函式
在建立函式画面中,设定如下:
配置完毕後单击右下方的建立函式即可,如下图所示。
建立 Lambda 函式配置
步骤 3. 新增触发条件
进入 Lambda 函式的编辑画面後,首先先单击 +新增触发 按钮,用来指定 API Gateway 触发这个 Lambda 函式,配置选项如下:
将 API Gateway 新增至 Lambda 函数,以建立可叫用函数的 HTTP 端点,而 API Gateway支援两种类型的 RESTful API︰HTTP API 和 REST API。HTTP API 是轻量级、低延迟的 RESTful API,较新推出并内建於 API Gateway version 2 API;REST API 是可以高度客制化的 RESTful API。
CORS 需要从不在相同网域托管的网页叫用您的 API。勾选跨原始资源共用 (CORS) 选项可在所有回应中新增 Access-Control-Allow-Origin 标头,以启用任何网域的跨原始资源共用 (CORS)。此外,Lambda 会增加 Amazon API Gateway 的必要权限,以便用这个触发条件叫用您的 Lambda 函式。这点可以透过检视 IAM 来观察增加的权限。
配置完毕後单击 新增 按钮,如下图所示。
新增 API Gateway 触发条件配置
步骤 4. 修改程序码
修改 Lambda 程序码以便於後续观察 API Gateway 是如何传递 HTTP 的请求,所以以下代码将传入参数 event 显示出来,修改完程序码後记得单击 Deploy 按钮,这才会把这代码布署到云端,如下图所示。
import json
def lambda_handler(event, context):
# TODO implement
return {
'statusCode': 200,
'body': json.dumps(event, indent=4, default=str)
}
修改 Lambda 程序码
步骤 5. 透过 API Gateway 触发 Lambda 函式
单击上图的 API Gateway 或是 组态 页签後选择 触发 功能画面,会看到步骤 3 所建立的 API Gateway端点,单击 API 终端节点 就可以透过 API Gateway 触发 Lambda 函式,如下图所示。
API 终端节点触发 Lambda 函式
下图显示呼叫 API Gateway 的结果,因为使用者的请求为 GET ,可以在 ["requestContext"]["http"]这个键值中找到使用者的请求内容。
Lambda 函式运行结果
步骤 6. 使用 curl 呼叫 API Gateway
因为 RESTful API 通常都是透过程序调用,所以我们试着用 curl 透过 get 与 post 方法来传资料给後端的 Lambda 函式,观察在 API Gateway 後方的Lambda 函式,会接收到怎样的请求格式。
# GET request
curl "https://j98fukyxs3.execute-api.ap-northeast-1.amazonaws.com/default/lambda2api?say=Hi&to=Mon"
# POST request
curl "https://j98fukyxs3.execute-api.ap-northeast-1.amazonaws.com/default/lambda2api" \
-X POST \
-d "{\"say\":\"Hi\",\"to\":\"Mon\"}" \
-H "content-type: application/json"
当 API Gateway 收到 curl 的 get 请求时,传过来的资料会在 ["rawQueryString"] 这个栏位中,标头在 ["requestContext"]["http"] 这个栏位,如下图所示。
API Gateway 发出 GET 请求
当 API Gateway 收到 curl 的 post 请求时,传过来的资料会在 ["body"] 这个栏位中,标头在 ["requestContext"]["http"] 与 ["headers"] 这两个栏位,如下图所示。
API Gateway 发出 POST 请求
<<: 诠释 behavioral, creational and structural pattern 的概念
>>: 使用 KubeEye 为你的 K8s 集群安全保驾护航
Export Modules 汇出程序模组 在React中可以透过 Export 语法来汇出程序模组...
介绍影像辨识的处理流程 - Day 10 所有影像辨识的问题都会面临以下几个问题:图片中有几个要辨识...
在上一篇我们已经知道MVC路由和静态资源导入的方式 因此起手式 从新增专案.net core空专案到...
Laravel Dusk提供了一个自动化的测试API, 不用安装Selenium等软件, 直接用独立...
我把从第一天到现在每天的 Home 目录都放上 GitHub 了,README.md 里面有说明 ...