2017-09-11 50 views
0

私のアプリケーションでは、boto3を使用してAWSリソースにアクセスしています。しかし、代わりにAPI Gatewayを使用して、使用されているAWS Servicesのフロントを開いて、サービスに直接接続するのではなく、API Gatewayを介してすべての機能を活用したいと考えています。APIゲートウェイを使用してboto3のエンドポイントURLを作成

私はAPIゲートウェイを使用していますが、APIゲートウェイのエンドポイントがアクション単位で設定されているため、この新しいエンドポイントを使用するようにboto3に指示できます。つまり、ListQueuesとCreateQueueの2つがあります。

エンドポイントURLパラメータでboto3使用すると、私は、このエラーを与える:あなたのクライアントを作成する場合は

botocore.parsers.ResponseParserError: Unable to parse response (not well-formed (invalid token): line 1, column 0), invalid XML received: {"message":"Credential should be scoped to correct service: 'execute-api'. "}

+0

boto3を使用している場合、APIゲートウェイエンドポイントを使用する理由は何ですか?これはどのような利点がありますか?それは...あなたの母親に電話して、あなたの弟を自分の電話で呼ぶのではなく、兄に電話をかけるように求めるようなものです。 APIゲートウェイを介して物事を流すことで解決しようとしている問題を理解するのに役立つことができますか?私は有効なユースケースがないと言っているのではない...しかし、私はそれをまだ見ていない。 –

+0

これは、APIゲートウェイトラフィックのみを許可することで、ファイアウォールルールを単純に維持できるようにするためです。 – vonec

+0

私はあなたが無駄をなくすための運動であると思っています。エンドポイントに固定アドレスがありません。 –

答えて

0

さらに詳しい調査を行った後、実際には、boto3ライブラリは利用可能なサービスの1つとしてAPIゲートウェイをサポートしていないため、これは実際には不可能です。

はこちらを参照してください:現在boto3は、API Gatewayのリソースへの呼び出しを行うことを可能にするオープンな機能要求がある https://github.com/boto/botocore/issues/1140

:誰もが何かを知っている場合 https://github.com/boto/boto3/issues/1246

は、私にはわからないが、私を聞かせてください知っている。

1

、あなたはデフォルトのURL botocoreを上書きすることができますキーワードパラメータendpoint_urlは、ターゲット・サービスの構築でしょう渡すことができますさもないと。

import boto3 

client = boto3.client('sqs', endpoint_url="https://your.api.gateway.url.here") 

ここには、読み取り専用のAPIゲートウェイエンドポイントがあり、書き込み機能を持つように見えるので、ここでは管理が必要です。

+0

ありがとうございます。私はそれを試しましたが、API Gatewayエンドポイントのセットアップ方法について助けが必要なようです。 APIゲートウェイの設定方法に関する情報を教えてください。 – vonec

+0

どの部分が問題を起こしていますか?実際のAPIゲートウェイURLは?またはクライアントがエラーで応答していますか? – birryree

+0

APIゲートウェイは、RESTクライアントから直接アクセスするとうまくいくようですが、エンドポイントとして使用するとエラーになります(OPに追加しました) – vonec

関連する問題