2016-04-11 20 views
8

JSON文字列をAPIゲートウェイにPOSTしようとしましたが、APIゲートウェイがJSONをEC2サーバーに送信しようとしています。AWS APIゲートウェイとEC2サービスプロキシ

私の問題は、これを達成するためのAmazonからの良い文書が見つかりません。私はセットアップをテストする場合

は、私は私には非常に少ないことを意味この

"<?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>" 

を取得します。私はそれがEC2に要求を送ることを試みているAPIゲートウェイの問題であると仮定し、それはこのエラーを生成することができません。したがって、おそらく私は、EC2 AWSサービスプロキシをAPIゲートウェイに間違って設定しています。 EC2インスタンスを指し示している今、私が「アクション」を設定することになっているかどうかわからないからです。ただその情報を置く場所が他にないからです。

これは本当に私が成功したラムダへの接続この事を行っているし、すべての文書に目を通していること難しいことではありません、私は見つけることができるすべてはこれです:このシナリオに役立つ未満であるhttp://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-aws-proxy.html#getting-started-aws-proxy-add-resources

。何か案は?

答えて

11

AWSサービスプロキシとHTTPサービスプロキシを混乱させると思います。

Gatewayは、バックエンドの異なるタイプのAPIコールを転送できるAPI:
- ラムダ関数
- AWSサービス(例えばhttp://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.htmlを参照)
- 既存のAPI、AWS上または施設で実行されている(あなたのユースケース)

おAPIを定義する際に、POST動詞を定義し、あなたのEC2インスタンスのURL

にエンドポイントURLを指すようにしてください私はちょうどhttp://gurujsonrpc.appspot.com/からオンラインで入手できJSON POSTサービスを使用してテストを行い、それが動作します予想通り。

私のテストAPIのSwaggerエクスポートです。

{ 
    "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" 
    } 
    } 
} 
+0

これはまさに私が混乱していたものです。ありがとう。 – wmfrancia

+0

@wmfrancia私はEC2でPHPファイルを呼び出すためにAPI Gatewayを使用したいと思っていますが、実際には "AWS Service"ではなく "Integration Type: - " "HTTP"を選択する必要があります。 –

関連する問題