AWSのIPアドレスを知りたい


AWSの公式ページに各サービスのIPアドレスについて説明があります。
https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws-ip-ranges.html

ただ、実際のIPアドレス範囲はJSON形式になっています。

機械で処理する分には便利ですが、サクッと見たいときには不便なのでスクリプト化していつでも最新の範囲を表示できるスクリプトを備忘録として残します。

確認したのは PowerShell Core です。

ip-ranges.json

Invoke-WebRequestでダウンロードします。wgetやcurlでもお好みで。

Invoke-WebRequest https://ip-ranges.amazonaws.com/ip-ranges.json -OutFile ip-ranges.json

抽出

まずJSON形式をオブジェクトへコンバートする。
CloudFrontとAPI GatewayのIPv4範囲をピックアップしてみました。ソートや形式などはお好みで。

Get-Content -Path .\ip-ranges.json |
  ConvertFrom-Json |
  ForEach-Object prefixes |
  Where-Object {($_.service -eq "CLOUDFRONT") -or ($_.service -eq "API_GATEWAY")} |
  Where-Object {($_.region -eq "GLOBAL") -or ($_.region -eq "ap-northeast-1")} |
  Sort-Object service,region,ip_prefix |
  Format-Table service,region,ip_prefix

IPv6

ForEach-Object prefixes の代わりに ForEach-Object ipv6_prefixes になります。

CSV化

出力段を Format-Table ・・・ ではなく ConvertTo-CSV に置き換えるとCSV形式になるのでファイル保存して加工には便利かも。