Amazon web services AWS API网关和EC2服务代理
我试图将一个json字符串发布到API网关,然后让API网关将json发送到EC2服务器 我的问题是我无法从Amazon上找到关于如何实现这一点的好文档 当我测试设置时,我得到了这个Amazon web services AWS API网关和EC2服务代理,amazon-web-services,amazon-ec2,aws-api-gateway,Amazon Web Services,Amazon Ec2,Aws Api Gateway,我试图将一个json字符串发布到API网关,然后让API网关将json发送到EC2服务器 我的问题是我无法从Amazon上找到关于如何实现这一点的好文档 当我测试设置时,我得到了这个 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Response><Errors><Error><Code>InvalidHttpRequest</Code><Message>The HT
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Response><Errors><Error><Code>InvalidHttpRequest</Code><Message>The HTTP request is invalid. Reason: Unable to parse request</Message></Error></Errors><RequestID>1fa47f52-d75c-4ff8-8992-3eac11a79015</RequestID></Response>"
这对我来说意义不大。我假设API网关试图将请求发送到EC2时出现问题,但它无法发送请求,因此它会生成此错误。因此,我可能在API网关中错误地设置了EC2 AWS服务代理。这可能是因为我不知道我现在应该设置什么“Action”,我让它指向EC2实例,只是因为我没有看到任何其他地方可以放置该信息
这真的不应该那么难,我已经成功地完成了连接到Lambda的工作,并且查看了所有文档,我能找到的只有以下内容:
这对这个场景没有多大帮助。有什么想法吗?我想你把AWS服务代理和HTTP服务代理搞混了 API网关可以将API调用转发到不同类型的后端:
-lambda函数
-AWS服务(参见示例)
-在AWS或本地(您的用例)上运行的现有API 定义API时,请确保定义POST谓词并将端点URL指向EC2实例URL 我刚刚使用在线提供的JSON POST服务做了一个测试,它按预期工作 下面是我的测试API的夸张导出
{
"swagger": "2.0",
"info": {
"version": "2016-04-11T20:46:13Z",
"title": "test"
},
"host": "c22wfjg4d7.execute-api.eu-west-1.amazonaws.com",
"basePath": "/prod",
"schemes": [
"https"
],
"paths": {
"/": {
"post": {
"produces": [
"application/json"
],
"responses": {
"200": {
"description": "200 response",
"schema": {
"$ref": "#/definitions/Empty"
}
}
},
"x-amazon-apigateway-integration": {
"responses": {
"default": {
"statusCode": "200"
}
},
"uri": "http://gurujsonrpc.appspot.com/guru",
"httpMethod": "POST",
"type": "http"
}
}
}
},
"definitions": {
"Empty": {
"type": "object"
}
}
}
是的,这正是我所困惑的。谢谢。@wmfrancia所以,你们是说,如果我想使用API网关在我的EC2上调用PHP文件,我实际上必须选择“集成类型:->“HTTP”,而不是“AWS服务”?@NinoŠkopac-没错,“AWS服务”“表示内置服务,如AWS S3@RichVel,这意味着如果我重新启动ec2实例,我需要手动向API集成请求插入一个新的IP。有没有办法解决这个问题?@Shakedk-最好问一个新问题,答案很可能包括创建一个域名,映射到分配给EC2实例的弹性IP