API Gateway×AWS SDK PHPでAPIKeyを作成

プログラミング

PHPプログラム側からAWS API GatewayのAPI Keyを発行してアカウント毎のAPIリクエスト数を制限したいことがあったので記録。

aws-sdk-php ver3.1を使用

CONTENTS

最初に

use Aws\ApiGateway\ApiGatewayClient;
use Aws\Exception\AwsException;  

$apiClient = new ApiGatewayClient([
      'profile' => '${クレデンシャル設定名}',
      'version' => 'latest',
      'region' => '${リージョン}'
]);

で使用準備。
API Gatewayの操作が可能なユーザーを作成してcredentialsに追加するのは忘れずに。
参考ドキュメントはこちら

API Keyの作成

すでにAPIはできてるものとして進めていく。

$res = $apiClient->createApiKey([
    'description' => '株式会社〇〇用API Key',//API Keyの説明
    'enabled' => true,
    'name' => '株式会社〇〇',//API Keyの識別名
    'stageKeys' => [ //stageの紐付け
        [
            'restApiId' => '${APIのID}※1',
            'stageName' => 'dev',//APIのstage名
        ],
     ],
    // 'customerId' => '<string>',
    // 'generateDistinctId' => true || false,※2
    // 'tags' => ['<string>', ...],
    // 'value' => '<string>'※3
]);

※1 stageKeysの’restApiId’に指定する値はAPI名の隣の()内とかARNとかについてるもの。
arn:aws:execute-api:{リージョン}:000000000000:{ここがID}/*/{アクションタイプ}/{メソッド名}
※2 generateDistinctIdは非推奨らしい
※3 valueは指定しなければランダムなAPI Keyが発行される

戻り値は作成されたAPI Keyの詳細情報が格納されてる。作成されたAPI Keyの値は返り値でも確認できる。

echo $res["id"]//API Gatewayで識別用のID
echo $res["value"]//API Key これがあればアクセスできる

API Keyの削除

$res = $apiClient->deleteApiKey([
  'apiKey' =>'${api_key}',//API keyの『id』
]);

渡す’apiKey’はAPI GatewayでのAPI Key識別用のIDであり、API Keyそのものではなかったので注意..

API Keyに使用量プランを紐づける

$res = $apiClient->createUsagePlanKey([
    'keyId' => ${key_id},//必須※1
    'keyType' =>"API_KEY",//必須※2
    'usagePlanId' =>${plan_id}//必須※3
]);


※1 keyIdはdeleteApiKeyの時と同じでAPI Key識別用のIDのほうを与える
※2 keyTypeは”API_KEY”で。
※3 usagePlanIdは紐付けたい使用量プランのIDを。

使用量手軽に切り分けられて便利だけど,API Key上限が1アカウント、1リージョンあたり500までみたいなので注意🐹

タイトルとURLをコピーしました