AWS上に作成したAPI GATEWAYに特定のIPアドレスの端末のみアクセスできるようにようにしてみました。
template.yamlを実装する時のポイントは、以下の2点です。
では、実装に実装しているのでコードを添付します。
- アクセスできるIPアドレスリストを定義する。
Mappings→ConfigにアクセスできるIPアドレスのリスト(allowIps)を定義しています。
AWSTemplateFormatVersion: '2010-09-09'Description: >python3.10Sample SAM TemplateGlobals:Function:Timeout: 900Parameters:EnvName:Type: StringDefault: devMappings:EnvName:dev:allowIps:- "XXX.XXX.XXX.11"- "XXX.XXX.XXX.12"stg:allowIps:- "XXX.XXX.XXX.11"- "XXX.XXX.XXX.12" - IPアドレスリストをAPI GATEWAYのリソースポリシーに設定する。
IPアドレスリストをAPI GATEWAYのAuth→ResourcePolicy→CustomStatements→Condition→NotIpAddressに設定します。これはEffectがDenyのポリシーに設定しているので、拒否しないIPアドレスという意味になります。
Resources:RestApiGateway:Properties:StageName: !Ref EnvNameAuth:ResourcePolicy:CustomStatements: [{"Effect": "Allow","Principal": "*",},{"Effect": "Deny","Principal": "*","Condition": {"NotIpAddress": {}}}]