テクめも

プログラミング関連のちょっとしたTipsなどを書いています。

AWSのIPアドレスを取得する

AWSのIPアドレス帯はJSON形式で公開されています。

https://ip-ranges.amazonaws.com/ip-ranges.json

jqを使うと、IPアドレスを抽出できます。

curl -s https://ip-ranges.amazonaws.com/ip-ranges.json \
  | jq -r '.prefixes[] | .ip_prefix'
13.248.118.0/24
18.208.0.0/13
52.95.245.0/24
54.240.17.0/24
99.77.142.0/24
52.194.0.0/15
54.155.0.0/16
54.196.0.0/15
99.78.170.0/23
52.94.22.0/24
...

CloudFrontで使用されているIPアドレスのみを取得することもできます。

curl -s https://ip-ranges.amazonaws.com/ip-ranges.json \
  | jq -r '.prefixes[] | select(.service=="CLOUDFRONT")'
{
  "ip_prefix": "144.220.0.0/16",
  "region": "GLOBAL",
  "service": "CLOUDFRONT"
}
{
  "ip_prefix": "52.124.128.0/17",
  "region": "GLOBAL",
  "service": "CLOUDFRONT"
}

S3のバケットポリシーにCloudFrontのIPアドレスを指定するときは、配列形式にするとコピペするだけで楽です。

curl -s https://ip-ranges.amazonaws.com/ip-ranges.json \
  | jq -r '[ .prefixes[] | select(.service=="CLOUDFRONT") | .ip_prefix ]'
[
  "144.220.0.0/16",
  "52.124.128.0/17",
  "54.230.0.0/16",
  "54.239.128.0/18",
  "52.82.128.0/19",
  "99.84.0.0/16",
  "204.246.172.0/24",
  "205.251.192.0/19",
  "54.239.192.0/19",
  "..."
]

参考

aws.amazon.com