aws api gateway 创建一个REST API作为Amazon S3代理

article/2025/11/1 14:15:59

你可能想把样本API导入为Amazon S3的代理,如样本API作为Amazon S3代理的OpenAPI定义所示。关于如何使用OpenAPI定义导入API的说明,请参阅使用OpenAPI配置REST API。

创建API资源来代表Amazon S3资源

我们将使用API的根(/)资源作为认证调用者的Amazon S3桶的容器。我们还将创建一个文件夹和项目资源,分别代表一个特定的Amazon S3桶和一个特定的Amazon S3对象。文件夹名称和对象密钥将由调用者以路径参数的形式指定,作为请求URL的一部分。
创建一个暴露Amazon S3服务特性的API资源
1.在API网关控制台,创建一个名为MyS3的API。这个API的根资源(/)代表Amazon S3服务。
2.在API的根资源下,创建一个名为Folder的子资源,并将所需的资源路径设置为/{folder}。
3.对于API的Folder资源,创建一个Item子资源。将所需的资源路径设置为/{item}。 在这里插入图片描述

暴露一个API方法来列出调用者的Amazon S3桶。

获取调用者的Amazon S3桶的列表包括调用Amazon S3上的GET服务动作。在API的根资源上,(/),创建GET方法。配置GET方法,使其与Amazon S3集成。
创建并初始化API的GET/方法
1.从资源面板右上角的行动下拉菜单中选择在根节点(/)上创建方法。
2.从HTTP动词的下拉列表中选择GET,并选择复选标记图标,开始创建方法。
在这里插入图片描述
3.在/-GET-设置窗格中,为集成类型选择AWS服务。
4.从列表中,为AWS区域选择一个区域(例如,us-west-2)。
5.从AWS服务中,选择S3。
6.对于AWS Subdomain,留空。
7.在HTTP方法中,选择GET。
8.对于行动类型,选择使用路径覆盖。使用路径覆盖,API Gateway将客户端请求转发给Amazon S3,作为相应的Amazon S3 REST API路径式请求,其中Amazon S3资源由s3-host-name/bucket/key模式的资源路径表示。API Gateway设置s3-host-name,并将客户端指定的bucket和key从客户端传递到Amazon S3。
9.(可选)在路径覆盖类型/。
10.复制先前创建的IAM角色的ARN(来自IAM控制台),并将其粘贴到Execution角色中。
11.将其他设置保留为默认值。
12.选择 "保存 “来完成此方法的设置。
这种设置将前台的GET https://your-api-host/stage/请求与后台的GET https://your-s3-host/整合起来。
控制谁可以调用我们的API的这个方法,我们打开了方法授权标志,并将其设置为AWS_IAM。
启用IAM来控制对GET /方法的访问
1.从方法执行中,选择方法请求。
2.选择授权旁边的铅笔图标
3.从下拉列表中选择AWS_IAM。
4.选择复选标记图标以保存设置。
在这里插入图片描述
为了让我们的API正确地将成功的响应和异常返回给调用者,让我们在Method Response中声明200、400和500响应。我们使用200响应的默认映射,这样,没有在这里声明的状态代码的后端响应就会作为200响应返回给调用者。
GET /方法声明响应类型
1.从方法执行窗格中,选择方法响应框。API网关默认声明的是200响应。
2.选择添加响应,在输入文本框中输入400,然后选择复选标记,完成声明。
3.重复上面的步骤,声明500响应类型。最后的设置显示如下。
在这里插入图片描述
因为来自Amazon S3的成功集成响应将水桶列表作为XML有效载荷返回,而来自API Gateway的默认方法响应将返回JSON有效载荷,我们必须将后端Content-Type头的参数值映射到前端的对应值。否则,当响应体实际上是一个XML字符串时,客户端将收到application/json作为内容类型。下面的程序显示了如何设置。此外,我们还想向客户端显示其他头参数,如Date和Content-Length。
为GET /方法设置响应头映射
1.在API网关控制台,选择方法响应。添加200响应类型的Content-Type标头。
在这里插入图片描述
2.在 "集成响应 “中,对于 “Content-Type”,键入集成.响应.header.Content-Type的方法响应。
在这里插入图片描述
通过上述头的映射,API Gateway将把后台的Date头翻译成客户端的Timestamp头。
3.还是在集成响应中,选择添加集成响应,在HTTP状态regex文本框中为剩余的方法响应状态输入一个适当的正则表达式。重复以上步骤,直到覆盖所有的方法响应状态。
在这里插入图片描述
作为一个良好的做法,让我们测试一下我们到目前为止配置的API。
测试API根资源上的GET方法
1.回到 “方法执行”,从客户框中选择 “测试”。
2.在GET / - 方法测试窗格中选择测试。一个例子的结果显示如下。
在这里插入图片描述

暴露API方法来访问Amazon S3桶

为了与Amazon S3桶一起工作,我们在/{folder}资源上公开了GET、PUT和DELETE方法,以列出桶中的对象,创建一个新的桶,并删除现有的桶。这些说明与《暴露API方法以列出调用者的Amazon S3桶》中所描述的类似。在下面的讨论中,我们概述了一般的任务并强调了相关的差异。
在文件夹资源上公开GET、PUT和DELETE方法
1.在资源树的/{folder}节点上,逐一创建DELETE、GET和PUT方法。
2.设置每个创建的方法与相应的Amazon S3端点的初始整合。下面的屏幕截图说明了PUT /{folder}方法的设置。对于DELETE /{folder}和GET /{folder}方法,用DELETE和GET分别替换HTTP方法中的PUT值。
在这里插入图片描述
注意,我们在Amazon S3端点的URL中使用了{bucket}路径参数来指定桶。我们将需要把方法请求的{文件夹}路径参数映射到集成请求的{bucket}路径参数。
3.把{folder}映射到{bucket}。
a.选择方法执行,然后选择集成请求。
b.展开URL路径参数,选择添加路径
c.在名称栏中输入bucket,在映射自栏中输入method.request.path.folder。选择复选标记图标来保存映射。
在这里插入图片描述
4.在方法请求中,将Content-Type添加到HTTP请求头信息部分。
在这里插入图片描述

这主要是在测试中需要的,当使用API网关控制台时,你必须为XML有效载荷指定application/xml。
5.在Integration Request中,按照Expose an API method to list the caller’s S3 buckets中的说明,设置Content-Type header与method.request.header.Content-Type的映射。
6.要测试PUT方法,在方法执行的客户端框中选择测试,并输入以下内容作为测试的输入。
a.在文件夹中,输入一个桶的名称。
b.在Content-Type头中,键入application/xml。
c.在请求正文中,提供水桶区域作为位置约束,在一个XML片段中声明为请求有效载荷。比如说。
在这里插入图片描述
7.重复前面的步骤,在API的/{folder}资源上创建并配置GET和DELETE方法。
上面的例子说明了如何在指定区域创建一个新的bucket,查看bucket中的对象列表,以及删除bucket。其他Amazon S3 bucket操作允许您处理桶的元数据或属性。例如,你可以设置你的API来调用Amazon S3的PUT /?notification操作来设置桶上的通知,调用PUT /?acl来设置桶上的访问控制列表,等等。API的设置是类似的,只是你必须在Amazon S3的端点URL上附加适当的查询参数。在运行时,你必须向方法请求提供适当的XML有效载荷。对于支持Amazon S3桶上的其他GET和DELETE操作,也可以这么说。更多关于Amazon S3对桶的可能操作的信息,请看Amazon S3对桶的操作。

暴露API方法来访问桶中的Amazon S3对象

Amazon S3支持GET、DELETE、HEAD、OPTIONS、POST和PUT操作来访问和管理特定桶中的对象。关于支持的操作的完整列表,请参阅Amazon S3对对象的操作。

在本教程中,我们通过PUT /{folder}/{item}、GET /{folder}/{item}、HEAD /{folder}/{item}和DELETE /{folder}/{item}的API方法分别公开了PUT对象操作、GET对象操作、HEAD对象操作和DELETE对象操作。

在/{folder}/{item}上的PUT、GET和DELETE方法的API设置与/{folder}上的类似,如访问Amazon S3桶的Expose API方法所规定。一个主要的区别是,与对象相关的请求路径有一个额外的路径参数{item},这个路径参数必须被映射到{object}的集成请求路径参数。
在这里插入图片描述
对于GET和DELETE方法也是如此。

作为说明,下面的屏幕截图显示了使用API Gateway控制台对{folder}/{item}资源测试GET方法时的输出。该请求正确地将纯文本(“Welcome to README.txt”)作为指定文件(README.txt)的内容返回给定的Amazon S3桶(apig-demo)中。
在这里插入图片描述
要下载或上传二进制文件,在API Gateway中被认为是utf-8编码的JSON内容以外的任何东西,需要额外的API设置。这一点概述如下。
要从S3下载或上传二进制文件
1.将受影响文件的媒体类型注册到API的binaryMediaTypes。你可以在控制台中这样做。
a.选择API的设置。
b.在二进制媒体类型下,选择添加二进制媒体类型。
c.输入所需的媒体类型,例如,图像/PNG。
d.选择 "保存更改 "来保存设置。
2.在方法请求中添加Content-Type(用于上传)和/或Accept(用于下载)头,要求客户端指定所需的二进制媒体类型,并将它们映射到集成请求中。
3.在集成请求(用于上传)和集成响应(用于下载)中,将内容处理设置为穿透。确保没有为受影响的内容类型定义映射模板。欲了解更多信息,请参阅集成穿透行为和选择VTL映射模板。
有效载荷大小限制为10MB。参见配置和运行REST API的API网关配额。
确保Amazon S3上的文件有正确的内容类型作为文件的元数据添加。对于可流媒体内容,Content-Disposition:inline可能也需要被添加到元数据中。
关于API Gateway中的二进制支持的更多信息,请参阅API Gateway中的内容类型转换。
以上就是创建一个REST API作为Amazon S3代理的一些问题了。


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

相关文章

【AWS系列】第七讲: AWS Serverless之API Gateway

目录 序言 一、基本介绍 1.1 RESTful API 1.2 HTTP API 1.3 WebSocket API 2、使用介绍 2.1 新建 2.2 选类型 2.3 点击构建 2.4 输入参数 2.5 点击创建 2.6 新建方法 2.6 方法测试 三、总结 序言 初步研究一下API Gateway,加油 一、基本介绍 Amazon AP…

一文搞懂 Service Mesh 和 API Gateway 关系和区别

公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 关于Service Mesh和API Gateway之间的关系,这个问题过去两年间经常被问起,社区也有不少文章和资料给出解答。其中不乏 Christian Posta 这样的网红给出过深度…

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

你将创建一个私有的REST API。客户只能从你的亚马逊VPC内访问该API。该API与公共互联网隔离,这是一个常见的安全要求。 首先,你使用AWS CloudFormation模板来创建一个亚马逊VPC、一个VPC端点、一个AWS Lambda函数,并启动一个亚马逊EC2实例&am…

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网关是一个服务器,所有请求首先会经过这个网关…