aws api gateway 构建一个私有的REST API

你将创建一个私有的REST API。客户只能从你的亚马逊VPC内访问该API。该API与公共互联网隔离,这是一个常见的安全要求。
首先,你使用AWS CloudFormation模板来创建一个亚马逊VPC、一个VPC端点、一个AWS Lambda函数,并启动一个亚马逊EC2实例,你将用它来测试你的API。接下来,你使用AWS管理控制台创建一个私有API,并附加一个资源策略,只允许从你的VPC端点访问。最后,你测试你的API。
在这里插入图片描述

第1步:创建依赖性

下载并解压这个AWS CloudFormation模板。您可以使用该模板为您的私有API创建所有的依赖项,包括Amazon VPC、VPC端点和作为API后台的Lambda函数。稍后您将创建私有API。
创建一个AWS CloudFormation栈
1.在https://console.aws.amazon.com/cloudformation,打开AWS CloudFormation控制台。
2.选择创建堆栈,然后选择使用新资源(标准)。
3.对于指定模板,选择上传一个模板文件。
4.选择你下载的模板。
5.选择下一步。
6.对于堆栈名称,输入private-api-tutorial,然后选择下一步。
7.对于配置堆栈选项,选择下一步。
8.对于Capabilities,确认AWS CloudFormation可以在你的账户中创建IAM资源。
9.选择创建堆栈。
AWS CloudFormation为你的API提供依赖性,这可能需要几分钟时间。当你的AWS CloudFormation栈的状态是CREATE_COMPLETE时,选择输出。注意你的VPC端点ID。在本教程的后面步骤中你需要它。

第2步:创建一个私有API

你创建一个私有API,只允许你的VPC内的客户访问它。
创建一个私有的API
1.登录API网关控制台,https://console.aws.amazon.com/apigateway。
2.选择创建API,然后在REST API中选择构建。
3.对于API名称,输入private-api-tutorial。
4.对于端点类型,选择私有。
5.对于VPC端点ID,从你的AWS CloudFormation栈的输出中输入VPC端点ID。
6.选择创建。

第3步:创建一个方法和整合

你创建了一个GET方法和Lambda集成来处理对你的API的GET请求。当客户端调用你的API时,API Gateway将请求发送到你在步骤1中创建的Lambda函数,然后向客户端返回一个响应。
创建一个方法和集成
1.登录到API网关控制台,https://console.aws.amazon.com/apigateway。
2.选择你的API。
3.选择行动,然后选择创建方法。
4.选择GET,然后选择复选标记来确认你的选择。
5.对于集成类型,选择Lambda函数
6.选择使用Lambda代理集成。通过Lambda代理集成,API Gateway将一个具有定义结构的事件发送到Lambda,并将你的Lambda函数的响应转换为HTTP响应。
7.对于Lambda函数,选择你在步骤1中用AWS CloudFormation模板创建的函数。该函数的名称以private-api-tutorial开头。
8.选择 “保存”,然后选择 “确定”,确认你授予API Gateway调用你的Lambda函数的权限。

第4步:附加一个资源政策

你给你的API附加一个资源策略,允许客户只通过你的VPC端点调用你的API。为了进一步限制对你的API的访问,你也可以为你的VPC端点配置一个VPC端点策略,但在本教程中没有必要。
附加一个资源策略
1.登录API网关控制台:https://console.aws.amazon.com/apigateway。
2.选择你的API。
3.选择资源策略。
4.输入以下策略。将vpceID替换为AWS CloudFormation栈输出中的VPC端点ID。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "execute-api:/*",
            "Condition": {
                "StringNotEquals": {
                    "aws:sourceVpce": "vpceID"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "execute-api:/*"
        }
    ]
}

5.选择保存。

第5步:部署你的API

接下来,你部署你的API,使其对你的亚马逊VPC中的客户可用。
部署一个API
1.登录API网关控制台,https://console.aws.amazon.com/apigateway。
2.选择你的API。
3.选择行动,然后选择部署API。
4.对于部署阶段,选择新阶段。
5.在阶段名称中,输入test。
6.选择部署。
现在你已经准备好测试你的API了。

第6步:验证你的API没有被公开访问

使用curl来验证你不能从亚马逊VPC之外调用你的API。
测试你的API
1.登录到API网关控制台,https://console.aws.amazon.com/apigateway。
2.选择你的API。
3.选择阶段,然后选择测试阶段。
4.复制你的API的URL。该URL看起来像https://abcdef123.execute-api.us-west-2.amazonaws.com/test。你在步骤1中创建的VPC端点已经启用了私有DNS,所以你可以使用提供的URL来调用你的API。
5.使用curl来尝试从你的VPC外部调用你的API。

curl https://abcdef123.execute-api.us-west-2.amazonaws.com/test

Curl表明你的API的端点不能被解决。如果你得到一个不同的响应,请回到步骤2,并确保你为你的API的端点类型选择私人。

curl: (6) Could not resolve host: abcdef123.execute-api.us-west-2.amazonaws.com/test

接下来,你连接到VPC中的亚马逊EC2实例来调用你的API。

第7步:连接到你的VPC中的一个实例并调用你的API

接下来,你从你的亚马逊VPC内测试你的API。要访问你的私有API,你要连接到VPC中的亚马逊EC2实例,然后使用curl来调用你的API。你使用Systems Manager Session Manger在浏览器中连接到你的实例。
测试你的API
1.打开亚马逊EC2控制台,https://console.aws.amazon.com/ec2/。
2.选择实例。
3.选择你在步骤1中用AWS CloudFormation模板创建的名为private-api-tutorial的实例。
4.选择连接,然后选择会话管理器。
5.选择 "连接 "以启动一个基于浏览器的会话到您的实例。
6.在您的会话管理器会话中,使用 curl 来调用您的 API。您可以调用您的 API,因为您正在使用 Amazon VPC 中的一个实例。

curl https://abcdef123.execute-api.us-west-2.amazonaws.com/test

验证你是否从Lambda那里得到了Hello的回应!。
在这里插入图片描述
你成功地创建了一个只能从你的亚马逊VPC内部访问的API,然后验证了它的工作。
以上就是构建一个私有的REST API的一些问题了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值