web-dev-qa-db-ja.com

Amazon API GatewayでAPIキーを使用する

APIキーを作成し、関数に追加しました。その後、私はAPIを展開してテストしましたが、まだ取得しています:

"message": "Forbidden"

"x-api-key": "theKey"を使用しているときにJSONリクエストでAPIキーを渡すにはどうすればよいですか?

34
cdub

x-api-keyパラメーターは、HTTPヘッダーパラメーターとして渡されます(つまり、JSON本文に追加されません)。 HTTPヘッダーを渡す方法は、使用するHTTPクライアントによって異なります。

たとえば、curlを使用し、POST JSONペイロードを想定すると、リクエストは次のようになります([api-id]を実際のIDに、[region]をAWSリージョンに置き換えます) APIの):

$ curl -X POST -H "x-api-key: theKey" -H "Content-Type: application/json" -d '{"key":"val"}' https://[api-id].execute-api.[region].amazonaws.com
34
matsev

API使用プランを追加してから、プランをAPIステージにリンクする必要がありました。

これがキーをAPIにリンクする唯一の方法であるように思えますが、これがAWSでの最近の変更であるかどうかはわかりません。

41
TimoSolo

「APIキーが必要」オプションをtrueに設定した場合は、以下を確認してください。

  1. 「x-api-key」HTTPヘッダーパラメーターをAPI Gatewayに渡す必要があります。

  2. APIキーを作成する必要がありました。

  3. さらに、API GatewayコンソールでAPIキーの使用計画を確認する必要があります。

16

APIキーとAPIをリンクするのを忘れていないことを願っています API-Gateway Configuration

15
Partha

「API」キーをtrueに設定する場合、APIキーをヘッダーとして渡す必要があります。

APIキーはヘッダーフィールド「x-api-key」として渡されます。このフィールドをヘッダーに追加した後でも、この問題が発生する場合があります。その場合、以下の点を検証してください

  1. 使用計画はありますか?作成する必要がない場合。
  2. APIを使用プランにリンクします。ステージを追加するには、APIをリンクします
  3. APIキーはありますか?そうでない場合は、APIキーを作成して有効にする必要があります。
  4. APIにリンクされている使用プランをこのAPIキーに追加します。そのために、使用計画を追加します。
4
bisw

Postmanネイティブアプリの以下の設定を使用して、Lambdaから正常な応答を得ることができました-

認可タブの下(ヘッダーの下で同じパラメータを渡したとき、何らかの理由でこれは機能しませんでした)

キー:x-api-key

値:your-api-key-value

追加先:ヘッダー

1

パブリックDNSを介してアクセスされるプライベートAPIゲートウェイの場合、「x-apigw-api-id」の追加ヘッダーと、設定されている場合は「x-api-key」をapi idとともに渡す必要があります。

curl -v https:// {vpce-id} .execute-api。{region} .vpce.amazonaws.com/test -H 'x-apigw-api-id:{api-id}'

以下に文書化され、

https://docs.aws.Amazon.com/apigateway/latest/developerguide/apigateway-private-api-test-invoke-url.html#w20aac13c16c28c11

0
msounthar