本日のお題
Serverless Framework(以下「SFW」)において、API GatewayのAPIキーを作成する方法、及びその際の注意点について。
なお今回は長くなりそうなので、下記のように前編と後編の2回に分けています。
- 前編:作成方法(今回はココ)
- 後編:注意点と対策(これは次回)
参考
TL; DR
provider.apiGateway.apiKeys
に定義する- 使用料プランごとに定義できる。(使用料プランが複数ある場合)
- APIキーの値を設定する場合、APIキー名は設定しないことが推奨されている
APIキーを作成する方法
provider.apiGateway.apiKeys
セクションに配列で定義を行うことで、作成できる。
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で構築する話」という内容でお話しさせて頂くことになりました。
内容ですが、YAPC::Kyoto 2023でお話しした内容をベースに、もう少し開発者よりな話をしたいと思いますので、皆様よろしくお願いします。
今回はちょっと短めですが、後編の「注意点と対策」が長くなりそうなので、今回はこの辺で。
*1:この辺は人やシステムによって考え方があると思うので、ここではそこまで言及しません