AWSのIPアドレス範囲を確認する

いろいろやり方など出尽くしてるネタだと思いますが、必要があり調査したのでメモとして残しておきます。


AWSのIPアドレス範囲は公式でjson形式で公開されています

その情報をもとにcurlとjqコマンドを使って必要なIPアドレス範囲を抽出するコマンドを作成しました。(csv形式で表示するコマンドにしています)


全リージョン・全サービスを取得

curl https://ip-ranges.amazonaws.com/ip-ranges.json \
 |jq -r '.prefixes' \
 |jq 'sort_by(.region, .service, .ip_prefix) | .[]' \
 |jq -r 'select(has("ip_prefix")) | [.region, .service, .ip_prefix, .network_border_group] | @csv'

リージョンを指定

AWS_REGION_PREFIX=ap-northeast # 取得するリージョンのプレフィックス

curl https://ip-ranges.amazonaws.com/ip-ranges.json \
 |jq -r '.prefixes' \
 |jq 'sort_by(.region, .service, .ip_prefix) | .[]' \
 |jq --arg region ${AWS_REGION_PREFIX} -r 'select(has("ip_prefix")) |select(.region |test($region)) | [.region, .service, .ip_prefix, .network_border_group] | @csv'

サービスを指定

AWS_SERVICE_PREFIX=EC2 # 取得するサービスのプレフィックス

curl https://ip-ranges.amazonaws.com/ip-ranges.json \
 |jq -r '.prefixes' \
 |jq 'sort_by(.region, .service, .ip_prefix) | .[]' \
 |jq --arg service ${AWS_SERVICE_PREFIX} -r 'select(has("ip_prefix")) |select(.service |test($service)) | [.region, .service, .ip_prefix, .network_border_group] | @csv'

リージョン・サービスを指定​

AWS_REGION_PREFIX=ap-northeast
AWS_SERVICE_PREFIX=EC2

curl https://ip-ranges.amazonaws.com/ip-ranges.json \
 |jq -r '.prefixes' \
 |jq 'sort_by(.region, .service, .ip_prefix) | .[]' \
 |jq --arg region ${AWS_REGION_PREFIX} --arg service ${AWS_SERVICE_PREFIX} -r 'select(has("ip_prefix")) |select(.region |test($region)) |select(.service |test($service)) |[.region, .service, .ip_prefix, .network_border_group] |@csv'

指定できるリージョン・サービスを取得

# リージョン
curl https://ip-ranges.amazonaws.com/ip-ranges.json |jq -r '.prefixes' |jq 'sort_by(.region) |.[] |.region' |jq -s 'unique |.[]'

# サービス
curl https://ip-ranges.amazonaws.com/ip-ranges.json |jq -r '.prefixes' |jq 'sort_by(.service) |.[] |.service' |jq -s 'unique |.[]'​

2020-12-21現在、以下のリージョン・サービスが返ってきます。

$ curl https://ip-ranges.amazonaws.com/ip-ranges.json |jq -r '.prefixes' |jq 'sort_by(.region) |.[] |.region' |jq -s 'unique |.[]'
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
100  662k  100  662k    0     0  4361k      0 --:--:-- --:--:-- --:--:-- 4361k
"GLOBAL"
"af-south-1"
"ap-east-1"
"ap-northeast-1"
"ap-northeast-2"
"ap-northeast-3"
"ap-south-1"
"ap-south-2"
"ap-southeast-1"
"ap-southeast-2"
"ap-southeast-3"
"ca-central-1"
"cn-north-1"
"cn-northwest-1"
"eu-central-1"
"eu-north-1"
"eu-south-1"
"eu-west-1"
"eu-west-2"
"eu-west-3"
"me-central-1"
"me-south-1"
"sa-east-1"
"us-east-1"
"us-east-2"
"us-gov-east-1"
"us-gov-west-1"
"us-west-1"
"us-west-2"
$ curl https://ip-ranges.amazonaws.com/ip-ranges.json |jq -r '.prefixes' |jq 'sort_by(.service) |.[] |.service' |jq -s 'unique |.[]'
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
100  662k  100  662k    0     0  3564k      0 --:--:-- --:--:-- --:--:-- 3564k
"AMAZON"
"AMAZON_APPFLOW"
"AMAZON_CONNECT"
"API_GATEWAY"
"CHIME_MEETINGS"
"CHIME_VOICECONNECTOR"
"CLOUD9"
"CLOUDFRONT"
"CODEBUILD"
"DYNAMODB"
"EC2"
"EC2_INSTANCE_CONNECT"
"GLOBALACCELERATOR"
"KINESIS_VIDEO_STREAMS"
"ROUTE53"
"ROUTE53_HEALTHCHECKS"
"ROUTE53_HEALTHCHECKS_PUBLISHING"
"S3"
"WORKSPACES_GATEWAYS"


この記事が気に入ったらサポートをしてみませんか?