我想通过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
我是完全错误的道路还是我错过了一些配置?
答案 0 :(得分:8)
不幸的是,使用TestInvoke和API网关代理同一区域内的Amazon S3(以及其他一些AWS服务)时存在限制。部署后情况并非如此,但如果您想从控制台进行测试,则需要在不同区域使用存储桶。
我们知道这个问题,但我不能承诺何时解决这个问题。
答案 1 :(得分:0)
在我的一个设置中,我将CloudFront分配放在API网关和S3存储桶的前面,它们都配置为源。
我主要是为了能够使用AWS证书管理员颁发的SSL证书,该证书只能在独立的CloudFront发行版上设置,而不能在API网关上设置。
答案 2 :(得分:0)
我刚刚遇到了类似的错误,但原因完全不同:如果s3存储桶名称包含句点(如data.example.com或类似),则proxz请求将因ssl认证问题而挽救!