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

article/2025/11/1 14:11:18

你将创建一个私有的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的一些问题了。


http://chatgpt.dhexx.cn/article/mjrsgKYM.shtml

相关文章

AWS Lambda 搭配 Amazon API Gateway (REST API)

AWS Lambda 搭配 Amazon API Gateway (REST API) AWS Lambda 是一种无伺服器、事件推动的运算服务,而 Amazon API Gateway 可以让开发人员轻松地建立、发布、维护、监控和保护任何规模的 API,使用 API Gateway 可以建立 RESTful API 和 WebSocket API&a…

AWS API Gateway与AWS Lambda代理集成构建REST API

项目地址 https://github.com/JessicaWin/aws lambda分支为自动创建API Gateway REST API资源的部署方式apigateway分支为自定义API Gateway REST API资源的部署方式 创建Lambda Handler 创建父模块 使用idea创建一个maven工程: File->New->Project 在左侧菜单栏中…

基于 Amazon API Gateway 的跨账号跨网络的私有 API 集成

一、背景介绍 本文主要讨论的问题是在使用 Amazon API Gateway,通过 Private Integration、Private API 来完成私有网络环境下的跨账号或跨网络的 API 集成。API 管理平台会被设计在单独的账号中(亚马逊云科技提供的是多租户的环境),因为客观上不同业务…

AWS Lambda 搭配 Amazon API Gateway (HTTP API)

AWS Lambda 搭配 Amazon API Gateway (HTTP API) AWS Lambda 是一种无伺服器、事件推动的运算服务,而 Amazon API Gateway 可以让开发人员轻松地建立、发布、维护、监控和保护任何规模的 API,使用 API Gateway 可以建立 RESTful API 和 WebSocket API&a…

AWS API gateway api CORS错误处理方法

我们开发了一个 AWS lambda 函数,然后我们使用 AWS API gateway服务将它上线。 我们已经测试 API 并验证它是否按照我们的预期工作,看起来真的很棒。 现在我们准备好将 API 端点发送到我们的前端并从网站调用它。 一旦我们这样做了,我们就…

API管理的正确姿势--API Gateway

转载本文需注明出处:微信公众号EAWorld,违者必究。 数字化生态,以创新客户体验为核心,所有我们身边能感知到的变化都来自于渐近的创新。这些创新需要试错,需要不断的升级,并且创新往往与我们熟知的功能分离…

AWS——API Gateway

文章目录 APIHTTP API构建操作*路由*授权集成部署——阶段 REST API构建操作*资源*阶段授权方 自定义域名ACM证书?API 映射 VPC链接REST APIHTTP API子网?安全组? API 选择创建API的类型时,创建的是对公访问的gateway方式&#x…

使用AWS的API Gateway实现websocket

问题 最近业务上面需要使用到WebSocket长连接来解决某些业务场景。 一图胜千言 注意:这里承担WebSocket服务器的是AWS API Gateway;后面的EC2业务服务,其实都是REST接口服务。 这里主要关注API Gateway和REST业务服务怎么实现API Gateway要…

使用API Gateway

使用API Gateway 转自:http://www.open-open.com/lib/view/open1436089902667.html 它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选择。 当你决定将应用作为一组微服务时,需要决定应用客户端…

aws api gateway 创建

在这个章节中,你将创建一个无服务器API。无服务器API让你专注于你的应用,而不是花时间配置和管理服务器。 首先,你使用AWS Lambda控制台创建一个Lambda函数。接下来,你使用API网关控制台创建一个HTTP API。然后,你调用…

微服务实践(二):使用API Gateway

【编者的话】本系列的第一篇介绍了微服务架构模式。它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选择。 点击这里获取云原生干货 当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互。…

AWS API GATEWAY的使用

AWS API GATEWAY 文章目录 1、Create Vpc endpoint2、Target Groups与Load Balancer2.1、Create target type为Instances的Target Groups2.2、Create Application Load Balancer2.3、Create target type为Application Load Balancer的Target Groups2.4、Create Network Load Ba…

API Gateway简介

Amazon API Gateway可以让开发人员创建、发布、维护、监控和保护任何规模的API。你可以创建能够访问 AWS、其他 Web 服务以及存储在 AWS 云中的数据的API。 API Gateway没有最低使用成本,我们用多少服务内容就花费多少。 比如在最新的A Cloud Guru的serverless 会…

API Gateway介绍

使用微服务架构开发应用后,每个微服务都将拥有自己的API,设计应用外部API的任务因客户端的多样性而变得更具有挑战性。不同客户端通常需要不同的数据。通常基于PC浏览器的用户界面显示的信息要远多于移动设备的用户界面。此外,不同的客户端通…

API 网关 ( API gateway )

前言 在 IOT ( 物联网 )中,当我们的一些设备。例如( 监控、传感器等 )需要将收集到的数据和信息进行汇总时,我们就需要一个 API 网关来接收从千百个终端发出的请求,它实现对外统一接口&#xf…

【学习笔记】API网关(GateWay)

项目场景 提示:这里可以添加本文要记录的大概内容: 微服务将一个大型工程转成了诺干个微服务,每个微服务都是一个独立的项目因此每一个项目都有不同的端口,那我们怎样在前端发送请求的时候能精确的发送到我们所需要的服务里。 提…

APIGateway简介

综合了一下网上的APIGateway教学,总结了一下(所有图片来源于网络): 目录 1.什么是APIGateway 2.APIGateway的作用 3.APIGateway的重要功能 1.什么是APIGateway APIGateway 即API网关是一个服务器,所有请求首先会经过这个网关…

java 中 ajax 的学习

1、原生 ajax 实现 首先在 web 工程下创建一个 .jsp 文件,用来与前台 ajax 进行数据传递 在创建的 .jsp 文件中->引入 jquery-1.8.3.min.js 文件(可直接粘贴至 web 目录下,也可新建一个 js 文件夹,然后粘贴进去) …

Java要学到什么程度?

在刚开始学习Java的同学都关心这么一个问题:到底把Java学到何种程度才能找到第一份工作呢?大部分人的目标是一致的,也比较现实,都是为了能找到像别人高薪的工作。那到底一个Java初学者要学多少Java知识,才能找到第一份…

学了python再学java要多久,有java基础学python要多久

python的学习难度如何,已经掌握java的话,想学习python批量处理文件的脚本,大概需要多长时间? 谷歌人工智能写作项目:小发猫 学会python大概要多久? 系统的学习,大概6个月就够了vue哪个版本支持…