AWS CLI を使用して AWS WAFV2 IPSet を作成、リスト、取得、または更新するにはどうすればよいですか?
最終更新日: 2022 年 10 月 31 日
AWS コマンドラインインターフェイス (AWS CLI) を使用して、AWS WAFV2 で IPSet を作成、一覧表示、取得、更新するにはどうすればよいですか?
簡単な説明
IPSet は、リクエストの送信元の IP アドレスに基づいて許可または拒否するウェブリクエストを指定します。IPSet を使用すると、AWS CLI を使用してウェブアクセスコントロールリスト (ACL) の IP アドレスのセットを定義できます。
解決方法
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
この解決方法では、wafv2 CLI を使用して特定の AWS リージョンに IPSet を作成するか、Amazon CloudFront で使用するグローバル IPSet を作成します。
重要: 続行する前に、AWS CLI のデフォルトの AWS リージョンが IPSet を作成するリージョンであることを確認してください。それ以外の場合は、コマンドで IPSet に正しいリージョンを指定する必要があります (—region オプションを使用)。Amazon CloudFront を使用する場合は、米国東部 (バージニア北部) の us-east-1 リージョンで IPSet を作成する必要があります。
IPSet の作成
1. AWS CLI にサインインします。
2. create-ip-set コマンドを使用して IPSet を作成します。
注: —scope オプションは、この IPSet が Amazon CloudFront ディストリビューション用であるか、またはリージョンレベルのアプリケーション用であるかを指定します。リージョンレベルのアプリケーションには、Application Load Balancer (ALB)、Amazon API Gateway、REST API、AWS AppSync、GraphQL API、または Amazon Cognito ユーザープールが含まれます。
リージョンレベルの IPSet の例:
$ aws wafv2 create-ip-set --name ipv4-block --scope REGIONAL --ip-address-version IPV4 --addresses 10.1.1.1/32 --region us-west-1
{
"Summary": {
"Name": "ipv4-block",
"Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
"Description": "",
"LockToken": "c54cc0d5-42dc-4b4b-9335-a86c7ad784a6",
"ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b"
}
}
CloudFront の IPSet の例:
$ aws wafv2 create-ip-set --name ipv4-block-cf --scope CLOUDFRONT --ip-address-version IPV4 --addresses 10.1.1.1/32 --region us-east-1
{
"Summary": {
"Name": "ipv4-block-cf",
"Id": "1fef3860-8b6e-4201-8a56-6d8d49e93057",
"Description": "",
"LockToken": "9e9bc59e-678e-4b83-98d8-5a4c119b0123",
"ARN": "arn:aws:wafv2:us-east-1:1111222233334444:global/ipset/ipv4-block-cf/1fef3860-8b6e-4201-8a56-6d8d49e93057"
}
}
IPSet の一覧表示
IPSet を一覧表示するには、list-ip-sets コマンドを使用します。レスポンスは IPSetSummary オブジェクトの配列を返します。
リージョンレベルの IPSet の例の出力:
$ aws wafv2 list-ip-sets --scope REGIONAL --region us-west-1
{
"NextMarker": "ipv4-block",
"IPSets": [
{
"Name": "ipv4-block",
"Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
"Description": "",
"LockToken": "c54cc0d5-42dc-4b4b-9335-a86c7ad784a6",
"ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b"
}
]
}
CloudFront の IPSet の例の出力:
$ aws wafv2 list-ip-sets --scope CLOUDFRONT --region us-east-1
{
"NextMarker": "ipv4-block-cf",
"IPSets": [
{
"Name": "ipv4-block-cf",
"Id": "1fef3860-8b6e-4201-8a56-6d8d49e93057",
"Description": "",
"LockToken": "9e9bc59e-678e-4b83-98d8-5a4c119b0123",
"ARN": "arn:aws:wafv2:us-east-1:1111222233334444:global/ipset/ipv4-block-cf/1fef3860-8b6e-4201-8a56-6d8d49e93057"
}
]
}
注: [Limit] (制限) の値を指定し、この値より多くの IPSet がある場合、AWS WAFV2 は NextMarker 値を返します。「Request parameters」(リクエストパラメータ) を参照してください。
IPSet の更新
IPSet を更新するには、短縮構文または JSON ファイルを使用して、update-ip-set コマンドを使用します。
短縮構文メソッド
1. list-ip-sets コマンドを使用して、更新する IPSet の IPSet Id と LockToken を取得します。
注: AWS WAFV2 は楽観的ロックにトークンを使用します。トークンに関連付けられているエンティティを変更するには、update や deleteなどのオペレーションにトークンを提供します。WAFV2 はトークンを使用して、最後にエンティティを取得してからエンティティに変更が加えられていないことを確認します。変更が加えられている場合、更新は WAFOptimisticLockException で失敗します。このような場合は、別の list または get を実行してから、そのオペレーションによって返された新しいトークンを使用します。
短縮構文の例:
$ aws wafv2 list-ip-sets --scope REGIONAL --region us-west-1
{
"NextMarker": "ipv4-block",
"IPSets": [
{
"Name": "ipv4-block",
"Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
"Description": "",
"LockToken": "c54cc0d5-42dc-4b4b-9335-a86c7ad784a6",
"ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b"
}
]
}
2. update-ip-set コマンドを使用して、現在の IPSet 設定を、希望する新しい設定で上書きします。上記のステップ 1 で取得した IPSet Id と LockToken を含める必要があります。
例:
$ aws wafv2 update-ip-set --name ipv4-block --scope REGIONAL --id 952c5e24-2352-4a1e-a90b-01499086be1b --addresses "10.1.1.1/32" "10.1.1.2/32" --lock-token c54cc0d5-42dc-4b4b-9335-a86c7ad784a6 --region us-west-1
{
"NextLockToken": "a459c121-f160-4475-9352-fa602ff33df7"
}
3. get-ip-set コマンドを使用して、IPSet に加えられた変更を確認します。ステップ 1 の IPSet Id とステップ 2 の NextLockToken を含める必要があります。
例:
$ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --region us-west-1
{
"IPSet": {
"Name": "ipv4-block",
"Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
"ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b",
"Description": "",
"IPAddressVersion": "IPV4",
"Addresses": [
"10.1.1.2/32",
"10.1.1.1/32"
]
},
"LockToken": "a459c121-f160-4475-9352-fa602ff33df7"
}
JSON ファイルメソッド
1. 更新リクエストの構文を使用して JSON ファイル (ip.json など) を作成します。任意のエディタでこれを実行します。
例:
$ nano ip.json
{
"Addresses": ["10.1.1.0/24", "10.1.2.0/24", "10.1.3.0/24"]
}
2. list-ip-sets または get-ip-set コマンドを使用して、更新する IPSet の IPSet Id と LockToken を取得します。
例:
$ aws wafv2 list-ip-sets --scope REGIONAL --region us-west-1
{
"NextMarker": "ipv4-block",
"IPSets": [
{
"Name": "ipv4-block",
"Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
"Description": "",
"LockToken": "238872dc-fcfb-4a45-93fd-115cfcc94480",
"ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b"
}
]
}
3. update-ip-set コマンドを使用して、現在の IPSet 設定を、希望する新しい設定で上書きします。アドレスをインラインで含めるのではなく、ステップ 2 で作成した「ip.json」ファイルを参照します。上記のステップ 2 で取得した IPSet Id と LockToken を含める必要があります。
例:
$ aws wafv2 update-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --lock-token a459c121-f160-4475-9352-fa602ff33df7 --region us-west-1 --cli-input-json file://ip.json
{
"NextLockToken": "238872dc-fcfb-4a45-93fd-115cfcc94480"
}
4. get-ip-set コマンドを使用して、IPSet に加えられた変更を確認します。ステップ 2 の IPSet Id とステップ 3 の NextLockToken を含める必要があります。
例:
$ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --region us-west-1
{
"IPSet": {
"Name": "ipv4-block",
"Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
"ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b",
"Description": "",
"IPAddressVersion": "IPV4",
"Addresses": [
"10.1.1.0/24",
"10.1.2.0/24",
"10.1.3.0/24"
]
},
"LockToken": "238872dc-fcfb-4a45-93fd-115cfcc94480"
}