问题标签 [aws-api-gateway]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3661 浏览

amazon-web-services - 通过 CloudFront 提供 S3 存储桶和 API 网关

我想通过这个 url 的 S3 存储桶为 Web 应用程序的前端提供服务:www.acme.com

同时,我希望从 API Gateway 阶段(lambda 函数在后面运行)在此 url 提供后端服务:(www.acme.com/api我没有api.acme.comurl 以避免不得不处理损坏的同源策略)。

此时,我可以设置 Cloudfront 来为 S3 存储桶或 API 网关阶段提供服务,但不能一起使用。

我尝试将两者声明为资源(首先是存储桶,然后是 API 网关)和两个行为路径(存储桶的默认路径和网关的第二个 /api)。存储桶服务良好,但 GETwww.acme.com/api/users导致:

感谢您提供有关如何解决此问题的所有线索。

0 投票
5 回答
38089 浏览

amazon-web-services - API网关前面怎么加CloudFront

API Gateway (APIG),虽然它使用 CloudFront (CF),但它不支持 CDN 边缘缓存。当我将 CF 分发配置为使用 APIG 作为自定义源时,我收到权限被拒绝错误。

如何配置 CF 来解决这个问题?

0 投票
1 回答
7181 浏览

authentication - AWS API Gateway 的客户端证书

我正在尝试为 aws api 网关和我的服务器之间的通信实现相互身份验证。我想使用亚马逊提供的客户端证书进行身份验证。我知道我的服务器配置正确,因为之前我使用的是 lambda 函数并且相互身份验证正在工作。

我已导出 (.PEM) 证书并将其添加到信任库中。我已将我的 Jetty 服务器配置为使用该信任库进行身份验证。我已将客户端身份验证设置为:需要。我知道我的服务器设置正确,因为它正在使用我自己实现的相互 SSL。我所做的只是更改信任库。当我测试我的方法网关时返回 200: { "message": "Unknown endpoint error."}

这是服务器日志文件的摘录。服务器端握手似乎已完成,但客户端证书出现错误。

pConnection@3a0a2e84{FILLING} 服务器端握手完成 2015-09-28 13:04:29,856 调试 [qtp1980278840-19] oejiChannelEndPoint - 刷新 45 SelectChannelEndPoint@2c05eeb2{ec2-xx-xxx-xxx-x.compute-1.amazonaws .com/5x.xxx.xxx.x:43942<->4000,Open,in,out,-,-,0/200000,SslConnection}{io=0,kio=0,kro=1} 2015-09- 28 13:04:29,856 调试 [qtp1980278840-19] oejisSslConnection - SslConnection@50e2de43{NOT_HANDSHAKING,eio=0/0,di=-1} -> HttpConnection@3a0a2e84{FILLING} 冲洗退出,消耗 0 2015-09-28 13 :04:29,856 DEBUG [qtp1980278840-19] oejisSslConnection - SslConnection@50e2de43{NOT_HANDSHAKING,eio=0/-1,di=-1} -> HttpConnection@3a0a2e84{FILLING} 解开状态 = BUFFER_UNDERFLOW HandshakeStatus = NOT_HANDSHAKING

0 投票
2 回答
6123 浏览

amazon-iam - API网关如何从REST客户端传递AWS IAM授权

我正在尝试从其他客户端测试经过身份验证的 API 网关端点。发出请求时如何生成/设置“AWS_IAM”授权标头?

0 投票
1 回答
859 浏览

amazon-web-services - AWS Api Gateway - Lambda 函数客户端证书

我们在 API 网关中创建了一个客户端证书。使用代理时,证书被正确发送到端点。

但是,当使用 lambda 时,我们无法使用 https 包( require('https'); )访问和/或重新发送/转发 https 请求的证书。

我们如何在 lambda 函数中使用 API Gateway 客户端证书?

0 投票
4 回答
4802 浏览

amazon-web-services - AWS API Gateway 不会打开

我创建了一个“hello world”lambda 函数,然后使用 AWS 的API Gateway将其部署到端点:

配置设置

所有非常基本的设置,但我确定将安全性更改为“打开”,虽然我被告知可能需要 15 分钟才能解析域,但我发现即使在 30 分钟之后,我也收到了来自“开放”端点:

我错过了一些明显的东西吗?这不应该与我所做的一样吗?


请注意,有人指出此图像是 PUT 而不是 GET。我都试过了,都回来了错误。只是为了检查我是否通过Postman运行了 GET 和 PUT并获得了类似但不相同的响应:

放

然后得到...

得到

当我在控制台中测试 lambda 函数时,它运行成功,但在 API Gateway 中运行它给了我对相同错误的不同表述:

2015 年 9 月 29 日星期二 20:57:43 UTC:由于配置错误,执行失败:Lambda 函数的权限无效

但是我使用了控制台建议的默认权限。lambda 函数本身非常基础,可以在这里找到:code

0 投票
1 回答
77 浏览

javascript - 授予对 s3 目录的 Web 访问权限的最佳方法

我正在尝试使用 s3 存储桶作为网站来构建 cms。我有一个存储桶策略,允许公共/匿名访问除 /_admin 目录之外的所有目录。为了获得后端访问权限,我希望用户能够提供用户名/密码,这将更改存储桶策略以允许 /_admin 基于用户 IP 地址进行访问。

实现这一目标的最佳方法是什么?

*我正在考虑使用 API Gateway 调用一个检查用户名/密码然后更改策略的 Lambda 函数。然后,成功的结果将重定向到后端。

0 投票
1 回答
1609 浏览

amazon-web-services - 映射模板的默认 Content-Type

不幸的是,我正在为我的项目与一个不符合任何标准的数据提供者合作,因此在请求的标头中没有指定内容类型。实际上它是指定的,但与内容类型不同的键。

POST 请求的有效负载是 xml 格式,据我了解,我们需要使用映射模板将有效负载包装在 json 对象中。当我们将 content-type 指定为集成请求部分中的设置类型之一时,所有这些都非常有用。

现在据我了解,如果请求标头中未指定内容类型,则它应默认为“应用程序/json”并执行与该类型关联的映射模板。在我们的例子中,它的行为就像它忽略了映射模板,这反过来导致返回以下错误:

{"Type":"User","message":"无法将请求正文解析为 json。"}

刚才提到,请求被发送到 AWS Lambda 进行处理。

有什么想法可以让我们发挥作用吗?

编辑:如果没有在标题中设置 Content-Type,我已经确认默认值为 'application/json'。在那种情况下,我假设我遇到的是一个错误。

0 投票
5 回答
15436 浏览

angularjs - 带有 Angular 的 AWS API 网关

有没有人让 AWS API Gateway 与 Angular.js 前端一起工作?我有一个通过 API Gateway 中的 POST 方法公开的 lambda 函数。我按照此文档的指示设置了标题:http: //docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

我在 Postman 中对其进行了测试,效果很好。我不需要做任何特别的事情,但是当我$http.post()打电话时,我只得到No 'Access-Control-Allow-Origin'请求的资源上存在标头。http://localhost:9000因此不允许Origin访问。响应HTTP status code 500.作为响应。

0 投票
1 回答
6849 浏览

c# - AWS API 网关签名

我正在尝试签署我对亚马逊网关的请求。但是每次我尝试发送 POST 请求时,它都会告诉我我的签名已过期。任何想法将不胜感激。