echo("備忘録");

IT技術やプログラミング関連など、技術系の事を備忘録的にまとめています。

【Serverless Framework】APIキーの作成方法と注意点(前編:作成方法)

本日のお題

Serverless Framework(以下「SFW」)において、API GatewayAPIキーを作成する方法、及びその際の注意点について。

なお今回は長くなりそうなので、下記のように前編と後編の2回に分けています。

  • 前編:作成方法(今回はココ)
  • 後編:注意点と対策(これは次回)

参考

TL; DR

  • provider.apiGateway.apiKeysに定義する
  • 使用料プランごとに定義できる。(使用料プランが複数ある場合)
  • APIキーの値を設定する場合、APIキー名は設定しないことが推奨されている

APIキーを作成する方法

provider.apiGateway.apiKeys セクションに配列で定義を行うことで、作成できる。

https://www.serverless.com/framework/docs/providers/aws/events/apigateway#setting-api-keys-for-your-rest-api

provider:
  apiGateway:
    apiKeys:
      # プロパティ名省略時は、name(=APIキー名)が設定される
      - hogehogeKey
      - fugafugaKey-${opt:stage, 'dev'}
      # プロパティ名を指定することで、複数のプロパティを一括で指定できる
      - name: piyopiyoKey
        value: piyopiyoXYZ
        description: piyopiyoの用途で使用するAPIキー

使用料プラン(usagePlan)を複数作成した場合、使用料プラン単位で紐づけるAPIキーを作成できる。(使用料プランが1つしかない場合は、自動でその使用料プランにAPIキーが紐づけられる)

provider:
  apiGateway:
    apiKeys:
      - normal:
          - normalKey
      - primary:
          - primaryKey
    usagePlan:
      - normal:
          quota:
            limit: 1000
            offset: 2
            period: MONTH
          throttle:
            burstLimit: 20
            rateLimit: 10
      - primary:
          quota:
            limit: 10000
            offset: 1
            period: MONTH
          throttle:
            burstLimit: 200
            rateLimit: 100

なお、apiKeysで設定できるプロパティ名は以下の通り。(すべて任意項目ですが、どれか一つは指定する必要があります)

プロパティ名 説明 未指定時の値 備考
name APIキーの名前 自動生成 実際のAPIキーの値(「x-api-key」ヘッダで設定する値)ではない。
value 実際のAPIキーの値(「x-api-key」ヘッダで設定する値) 自動生成 任意の値にしたい場合に設定する。
description APIキーの説明 なし
enabled APIキーの有効/無効の設定 true(=有効) enabled:falseのキーでの認証は不可
customerId AWS Marketplaceの顧客ID なし AWS Marketplaceと統合する場合に設定する

なお、注意点は下記になります

  • valueを設定する場合、name は設定しないことが推奨されている
  • valueはセンシティブな値なので、取り扱いには注意。*1

これを設定することで、CloudFormationの AWS::ApiGateway::ApiKey、及び(使用料プランを作成していれば) AWS::ApiGateway::UsagePlanKey が作成されます。

告知

来週の2023/6/24(土) (AWS Dev Day 2023の翌日)に開催される「Reject Day 2023」(主催:JAWS-UG&AWS Startup Community)において「Mobageの監視環境をAWSで構築する話」という内容でお話しさせて頂くことになりました。

connpass.com

内容ですが、YAPC::Kyoto 2023でお話しした内容をベースに、もう少し開発者よりな話をしたいと思いますので、皆様よろしくお願いします。

今回はちょっと短めですが、後編の「注意点と対策」が長くなりそうなので、今回はこの辺で。

*1:この辺は人やシステムによって考え方があると思うので、ここではそこまで言及しません