AWS API网关方法从S3 Bucket提供静态内容

时间:2015-11-27 09:25:28

标签: amazon-web-services amazon-s3 aws-api-gateway

我想通过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 个答案:

答案 0 :(得分:8)

不幸的是,使用TestInvoke和API网关代理同一区域内的Amazon S3(以及其他一些AWS服务)时存在限制。部署后情况并非如此,但如果您想从控制台进行测试,则需要在不同区域使用存储桶。

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

答案 1 :(得分:0)

在我的一个设置中,我将CloudFront分配放在API网关和S3存储桶的前面,它们都配置为源。

我主要是为了能够使用AWS证书管理员颁发的SSL证书,该证书只能在独立的CloudFront发行版上设置,而不能在API网关上设置。

答案 2 :(得分:0)

我刚刚遇到了类似的错误,但原因完全不同:如果s3存储桶名称包含句点(如data.example.com或类似),则proxz请求将因ssl认证问题而挽救!