AWS API 网关方法:从 S3 存储桶提供静态内容

6
我想通过API Gateway为我的Lambda微服务提供服务,这似乎不是一个大问题。
我的每个微服务都有一个JSON-Schema资源规范。由于它是一个静态文件,我希望从S3 Bucket中提供它,而不是运行一个lambda函数来提供它。
因此,在...
GET,POST,PUT,DELETE http://api.domain.com/ressources

应该将其转发到一个 lambda 函数。我希望
GET http://api.domain.com/ressources/schema

我希望能从S3中提供我的schema.json。

我的第一个尝试是设置“/v1/contracts/schema - GET - Integration Request”的资源和方法,并将其配置为使用HTTP代理行为,端点URL直接指向合同JSON-Schema。结果出现了500-内部服务器错误。

                    Execution log for request test-request
Fri Nov 27 09:24:02 UTC 2015 : Starting execution for request: test-invoke-request
Fri Nov 27 09:24:02 UTC 2015 : API Key: test-invoke-api-key
Fri Nov 27 09:24:02 UTC 2015 : Method request path: {}
Fri Nov 27 09:24:02 UTC 2015 : Method request query string: {}
Fri Nov 27 09:24:02 UTC 2015 : Method request headers: {}
Fri Nov 27 09:24:02 UTC 2015 : Method request body before transformations: null
Fri Nov 27 09:24:02 UTC 2015 : Execution failed due to configuration error: Invalid endpoint address

我是走错了完全的路还是只是缺少一些配置?

3个回答

8

很遗憾,当在API Gateway代理到同一地区的Amazon S3(以及其他一些AWS服务)时,使用TestInvoke存在限制。一旦部署后,这种情况就不会再出现,但如果您想从控制台进行测试,则需要在不同地区使用存储桶。

我们知道这个问题,但我不能承诺何时解决这个问题。


谢谢提供信息。无论我使用HTTP代理还是AWS服务选项,这个问题都会是一样的,对吗? - Dukeatcoding
4
非常烦人。刚刚花了一个上午的时间,试图追踪亚马逊教程中仅存在于测试环境中的一个问题。 - QuantumTiger
1
@BobKinney,这个问题已经解决了吗? - Joseph Carroll
很遗憾,@JosephCarroll不行。 - Bob Kinney
@MatanKadosh 请提供详细信息开启支持案例或在我们的论坛上发布,我们会跟进。 - Bob Kinney
显示剩余2条评论

0

我刚遇到了一个类似的错误,但原因完全不同:如果S3存储桶名称包含句点(例如data.example.com或类似名称),则代理请求将因SSL证书问题而失败!


0
在我的其中一个设置中,我在API网关和S3存储桶之前放置了一个CloudFront分发,它们都被配置为源。
我主要这样做是为了能够利用由AWS证书管理器颁发的SSL证书,该证书只能设置在独立的CloudFront分发上,而不能设置在API网关上。

1
当然可以使用CloudFront,但我认为您无法获得相同级别的详细路由。或者我错了。您只需拥有不同的子域名,一个指向S3,另一个指向API Gateway。 - Dukeatcoding

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接