创建第一个API Gateway

本节我们将从头创建API Gateway, 并使用Lambda做为它的后端:

image-20220401153912769

创建API Gateway

在AWS 控制台搜索API Gateway,进入页面

image-20220331162940879

在API Gateway的页面,我们看到有四种类型的API:

  • HTTP API
  • WebSocket API
  • REST API
  • REST API Private

选择REST API类型:

image-20220331163019661

选择New API, API命名为first-api:

image-20220331163106543

点击Create API进行创建。

创建Lambda

在创建完API Gateway之后,并不能直接对外提供服务,先提前准备一个Lambda做为它的后台。

进入Lambda页面,点击Create Function,函数名为function-for-apigateway-root-get, 运行时选择Python3.9:

image-20220331163434060

创建完成后,编辑Code,替换内容如下,并进行部署:

import json

def lambda_handler(event, context):
    
    return {
        'statusCode': 200,
        'body': json.dumps("Hello from root path")
    }

创建Get Method

有了 Lambda做为后台后,我们为根路径创建一个Get Method, 并绑定使用这个函数。

点击Create Method

image-20220331163245132

选择GET方式,并确认:

image-20220331163308437

使用上一步创建的Lambda函数function-for-apigateway-root-get

image-20220331163812009

注意到API Gateway默认的超时时间为29s,而Lambda最大执行时间为900s。这个值可以进行自定义设置

点击确认后会弹出确认框, 给API Gateway授权调用Lambda:

image-20220331163829427

此时回到Lambda页面,进入Configuration -> Permissions,在底部能够发现自动创建好一条Resource Policy,以允许API Gateway调用此函数:

image-20220331163857916

image-20220331163925297

测试及部署上线

创建好Get Method后,可以点击闪电图标测试该接口:

image-20220331164012780

从结果中看到,API Gateway把Lambda函数的执行结果返回:

image-20220331170220419

部署API:

image-20220331164042578

创建新的Stage,命名为dev, 并进行Deploy:

image-20220331164116607

部署完成后,会出现Invoke URL:

image-20220331164130849

在浏览器访问Invoke URL,Lambda后端此时能够被公网访问:

image-20220331170232411

创建其他API

image-20220401165208063

image-20220401165602269