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", "..." ]