AWS IP アドレスの範囲 - AWS 全般のリファレンス

AWS IP アドレスの範囲

アマゾン ウェブ サービス (AWS) は、その現在の IP アドレス範囲を JSON 形式で公開します。現在の範囲を参照するには、.json ファイルをダウンロードします。履歴を管理するには、連続したバージョンの .json ファイルをシステムに保存します。ファイルを最後に保存してから変更があるかどうかを確認するには、現在のファイルの公開時刻を確認し、それを最後に保存したファイルの公開時刻と比較します。

独自の IP アドレスの持ち込み (BYOIP) を通じて AWS に持ち込む IP アドレス範囲は、.json ファイルには含まれていません。

ダウンロード

ip-ranges.json をダウンロードします。

プログラムを使用してこのファイルにアクセスする場合、サーバーが提供した TLS 証明書を正しく確認した後にアプリケーションがファイルをダウンロードすることを保証する必要があります。

構文

ip-ranges.json の構文は次のとおりです。

{ "syncToken": "0123456789", "createDate": "yyyy-mm-dd-hh-mm-ss", "prefixes": [ { "ip_prefix": "cidr", "region": "region", "network_border_group": "network_border_group", "service": "subset" } ], "ipv6_prefixes": [ { "ipv6_prefix": "cidr", "region": "region", "network_border_group": "network_border_group", "service": "subset" } ] }
syncToken

UNIX エポック時刻形式での公開時刻。

型: 文字列

例: "syncToken": "1416435608"

createDate

発行日時 (UTC YY-MM-DD-hh-mm-ss 形式)。

型: 文字列

例: "createDate": "2014-11-19-23-29-02"

prefixes

IPv4 アドレス範囲の IP プレフィックス。

型: 配列

ipv6_prefixes

IPv6 アドレス範囲の IP プレフィックス。

型: 配列

ip_prefix

CIDR 表記でのパブリック IPv4 アドレス範囲。AWS はさらに特定の範囲でプレフィックスをアドバタイズする場合があります。たとえば、プレフィックス 96.127.0.0/17 が含まれるファイルでは、96.127.0.0/21、96.127.8.0/21、96.127.32.0/19、および 96.127.64.0/18 としてアドバタイズされる場合があります。

型: 文字列

例: "ip_prefix": "198.51.100.2/24"

ipv6_prefix

CIDR 表記でのパブリック IPv6 アドレス範囲。AWS はさらに特定の範囲でプレフィックスをアドバタイズする場合があります。

型: 文字列

例: "ipv6_prefix": "2001:db8:1234::/64"

network_border_group

AWS がパブリック IP アドレスをアドバタイズするアベイラビリティーゾーンまたは Local Zones の一意のセットであるネットワーク境界グループの名前です。

型: 文字列

例: "network_border_group": "us-west-2-lax-1"

region

AWS リージョンまたはエッジロケーションの GLOBALCLOUDFRONT および ROUTE53 の範囲は GLOBAL です。

タイプ: 文字列

有効な値: ap-east-1 | ap-northeast-1 | ap-northeast-2 | ap-northeast-3 | ap-south-1 | ap-southeast-1 | ap-southeast-2 | ca-central-1 | cn-north-1 | cn-northwest-1 | eu-central-1 | eu-central-2 | eu-north-1 | eu-south-1 | eu-south-2 | 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 | GLOBAL

例: "region": "us-east-1"

サービス

IP アドレス範囲のサブセット。API_GATEWAY にリストされているアドレスは送信専用です。すべての IP アドレス範囲を取得する場合は、AMAZON を指定します (つまり、すべてのサブセットも AMAZON サブセットに含まれます)。ただし、一部の IP アドレス範囲は AMAZON サブセット内にしかありません (つまり、別のサブセットでは使用できません)。

タイプ: 文字列

有効な値: AMAZON | AMAZON_APPFLOW | AMAZON_CONNECT | API_GATEWAY | CHIME_MEETINGS | CHIME_VOICECONNECTOR | CLOUD9 | CLOUDFRONT | CLOUDFRONT_ORIGIN_FACING | CODEBUILD | DYNAMODB | EBS | EC2 | EC2_INSTANCE_CONNECT | GLOBALACCELERATOR | KINESIS_VIDEO_STREAMS | ROUTE53 | ROUTE53_HEALTHCHECKS | ROUTE53_HEALTHCHECKS_PUBLISHING | ROUTE53_RESOLVER | S3 | WORKSPACES_GATEWAYS

例: "service": "AMAZON"

JSON ファイルのフィルタリング

情報をフィルターして目的のものを見つけやすくするコマンドラインツールをダウンロードできます。

Windows

AWS Tools for Windows PowerShell には、この JSON ファイルを解析するコマンドレット Get-AWSPublicIpAddressRange が含まれています。以下はその使用例です。詳細については、「Querying the Public IP Address Ranges for AWS」および「Get-AWSPublicIpAddressRange」を参照してください。

例 1. 作成日を取得します
PS C:\> Get-AWSPublicIpAddressRange -OutputPublicationDate Wednesday, August 22, 2018 9:22:35 PM
例 2. 特定のリージョンの情報を取得します
PS C:\> Get-AWSPublicIpAddressRange -Region us-east-1 IpPrefix Region NetworkBorderGroup Service -------- ------ ------- ------- 23.20.0.0/14 us-east-1 us-east-1 AMAZON 50.16.0.0/15 us-east-1 us-east-1 AMAZON 50.19.0.0/16 us-east-1 us-east-1 AMAZON ...
例 3. すべての IP アドレスを取得します
PS C:\> (Get-AWSPublicIpAddressRange).IpPrefix 23.20.0.0/14 27.0.0.0/22 43.250.192.0/24 ... 2406:da00:ff00::/64 2600:1fff:6000::/40 2a01:578:3::/64 2600:9000::/28
例 4. すべての IPv4 アドレスを取得します
PS C:\> Get-AWSPublicIpAddressRange | where {$_.IpAddressFormat -eq "Ipv4"} | select IpPrefix IpPrefix -------- 23.20.0.0/14 27.0.0.0/22 43.250.192.0/24 ...
例 5. すべての IPv6 アドレスを取得します
PS C:\> Get-AWSPublicIpAddressRange | where {$_.IpAddressFormat -eq "Ipv6"} | select IpPrefix IpPrefix -------- 2a05:d07c:2000::/40 2a05:d000:8000::/40 2406:dafe:2000::/40 ...
例 6. 特定のサービスのすべての IP アドレスを取得します
PS C:\> Get-AWSPublicIpAddressRange -ServiceKey CODEBUILD | select IpPrefix IpPrefix -------- 52.47.73.72/29 13.55.255.216/29 52.15.247.208/29 ...

Linux

以下のサンプルコマンドは jq ツールを使用して JSON ファイルのローカルコピーを解析しています。

例 1. 作成日を取得します
$ jq .createDate < ip-ranges.json "2016-02-18-17-22-15"
例 2. 特定のリージョンの情報を取得します
$ jq '.prefixes[] | select(.region=="us-east-1")' < ip-ranges.json { "ip_prefix": "23.20.0.0/14", "region": "us-east-1", "network_border_group": "us-east-1", "service": "AMAZON" }, { "ip_prefix": "50.16.0.0/15", "region": "us-east-1", "network_border_group": "us-east-1", "service": "AMAZON" }, { "ip_prefix": "50.19.0.0/16", "region": "us-east-1", "network_border_group": "us-east-1", "service": "AMAZON" }, ...
例 3. すべての IPv4 アドレスを取得します
$ jq -r '.prefixes | .[].ip_prefix' < ip-ranges.json 23.20.0.0/14 27.0.0.0/22 43.250.192.0/24 ...
例 4. すべての IPv6 アドレスを取得します
$ jq -r '.ipv6_prefixes | .[].ipv6_prefix' < ip-ranges.json 2a05:d07c:2000::/40 2a05:d000:8000::/40 2406:dafe:2000::/40 ...
例 5. 特定のサービスのすべての IPv4 アドレスを取得します
$ jq -r '.prefixes[] | select(.service=="CODEBUILD") | .ip_prefix' < ip-ranges.json 52.47.73.72/29 13.55.255.216/29 52.15.247.208/29 ...
例 6. 特定のリージョンで、サービスのすべての IPv4 アドレスを取得します
$ jq -r '.prefixes[] | select(.region=="us-east-1") | select(.service=="CODEBUILD") | .ip_prefix' < ip-ranges.json 34.228.4.208/28
例 7. 特定のネットワーク境界グループの情報を取得する
$ jq -r '.prefixes[] | select(.region=="us-west-2") | select(.network_border_group=="us-west-2-lax-1") | .ip_prefix' < ip-ranges.json 70.224.192.0/18 52.95.230.0/24 15.253.0.0/16 ...

出口側のコントロールの実装

インスタンスに AWS のサービスのみへのアクセスを許可するには、AMAZON リスト内の CIDR ブロックで、EC2 リストにもリストされている CIDR ブロック以外のものに対するアウトバウンドトラフィックを許可するルールを使ってセキュリティグループを作成します。EC2 リストの IP アドレスは、EC2 インスタンスに割り当てることができます。

Windows PowerShell

以下の PowerShell の例では、AMAZON リストに含まれるが、EC2 リストには含まれない IP アドレスの取得方法を示します。スクリプトをコピーし、Select_address.ps1 という名前のファイルに保存します。

$amazon_addresses = Get-AWSPublicIpAddressRange -ServiceKey amazon $ec2_addresses = Get-AWSPublicIpAddressRange -ServiceKey ec2 ForEach ($address in $amazon_addresses) { if( $ec2_addresses.IpPrefix -notcontains $address.IpPrefix) { ($address).IpPrefix } }

このスクリプトは次のように実行できます。

PS C:\> .\Select_address.ps1 13.32.0.0/15 13.35.0.0/16 13.248.0.0/20 13.248.16.0/21 13.248.24.0/22 13.248.28.0/22 27.0.0.0/22 43.250.192.0/24 43.250.193.0/24 ...

jq

以下の例では、すべてのリージョンで、AMAZON リストに含まれるが、EC2 リストには含まれない IP アドレスの取得方法を示します。

jq -r '[.prefixes[] | select(.service=="AMAZON").ip_prefix] - [.prefixes[] | select(.service=="EC2").ip_prefix] | .[]' < ip-ranges.json 52.94.22.0/24 52.94.17.0/24 52.95.154.0/23 52.95.212.0/22 54.239.0.240/28 54.239.54.0/23 52.119.224.0/21 ...

次の例では、1 つのリージョンに結果を限定するフィルターを適用する方法を示します。

jq -r '[.prefixes[] | select(.region=="us-east-1" and .service=="AMAZON").ip_prefix] - [.prefixes[] | select(.region=="us-east-1" and .service=="EC2").ip_prefix] | .[]' < ip-ranges.json

Python

以下の python スクリプトは、AMAZON リストに含まれるが、EC2 リストには含まれない IP アドレスの取得方法を示します。スクリプトをコピーし、get_ips.py という名前のファイルに保存します。

#!/usr/bin/env python import requests ip_ranges = requests.get('https://ip-ranges.amazonaws.com/ip-ranges.json').json()['prefixes'] amazon_ips = [item['ip_prefix'] for item in ip_ranges if item["service"] == "AMAZON"] ec2_ips = [item['ip_prefix'] for item in ip_ranges if item["service"] == "EC2"] amazon_ips_less_ec2=[] for ip in amazon_ips: if ip not in ec2_ips: amazon_ips_less_ec2.append(ip) for ip in amazon_ips_less_ec2: print(str(ip))

このスクリプトは次のように実行できます。

$ python ./get_ips.py 13.32.0.0/15 13.35.0.0/16 13.248.0.0/20 13.248.16.0/21 13.248.24.0/22 13.248.28.0/22 27.0.0.0/22 43.250.192.0/24 43.250.193.0/24 ...

AWS の IP アドレス範囲の通知

AWS の IP アドレス範囲が変更される場合は常に、AmazonIpSpaceChanged トピックのサブスクライバーに通知が送信されます。ペイロードには次の形式の情報が含まれています。

{ "create-time":"yyyy-mm-ddThh:mm:ss+00:00", "synctoken":"0123456789", "md5":"6a45316e8bc9463c9e926d5d37836d33", "url":"https://ip-ranges.amazonaws.com/ip-ranges.json" }
create-time

作成日時。

通知は、誤った順序で配信される場合があります。したがって、正しい順序を保証するためにタイムスタンプを確認することをお勧めします。

synctoken

UNIX エポック時刻形式での公開時刻。

md5

ip-ranges.json ファイルの暗号ハッシュ値。この値を使用して、ダウンロードしたファイルが破損しているかどうかを確認できます。

url

ip-ranges.json ファイルの場所。

AWS の IP アドレス範囲が変更されるたびに通知を受け取るには、次にあるように、Amazon SNS を使用して通知を受け取るようにサブスクライブできます。

AWS の IP アドレス範囲の通知をサブスクライブするには
  1. Amazon SNS コンソール(https://console.aws.amazon.com/sns/v3/home)を開きます。

  2. ナビゲーションバーで、必要に応じて、リージョンを [米国東部 (バージニア北部)] に変更します。サブスクライブする SNS 通知がこのリージョンで作成されているため、このリージョンを選択する必要があります。

  3. ナビゲーションペインで [Subscriptions] を選択します。

  4. [Create subscription] を選択します。

  5. [Create subscription] ダイアログボックスで、次の操作を行います。

    1. トピックの ARN には、以下の Amazon リソースネーム (ARN) をコピーします。

      arn:aws:sns:us-east-1:806199016981:AmazonIpSpaceChanged
    2. プロトコルには、使用するプロトコルを選択します (たとえば、Email)。

    3. エンドポイントには、通知を受け取るエンドポイントを入力します (たとえば、E メールアドレス)。

    4. [Create subscription] を選択します。

  6. 指定したエンドポイントに接続されて、登録を確認するように求められます。たとえば、E メールアドレスを指定した場合は、件名に AWS Notification - Subscription Confirmation と表示された E メールメッセージが届きます。指示に沿って操作し、登録を確認します。

通知はエンドポイントの可用性によって異なります。そのため、JSON ファイルを定期的に確認して、常に最新の範囲を入手した方がよいでしょう。Amazon SNS の信頼性について詳しくは、 を参照してくださいhttp://aws.amazon.com/sns/faqs/#Reliability

通知が不要になった場合は、次の手順で受信登録を解除します。

AWS の IP アドレス範囲の通知へのサブスクリプションを解除するには
  1. Amazon SNS コンソール(https://console.aws.amazon.com/sns/v3/home)を開きます。

  2. ナビゲーションペインで [Subscriptions] (サブスクリプション) を選択します。

  3. サブスクリプションのチェックボックスをオンにします。

  4. [Actions]、[Delete subscriptions] の順に選択します。

  5. 確認を求めるメッセージが表示されたら、[削除] を選択します。

詳細については、Amazon SNS、Amazon Simple Notification Service Developer Guide を参照してください。

リリースノート

次の表では ip-ranges.json の構文に対する更新について説明します。リージョンの開始ごとに、新しいリージョンコードが追加されています。

説明 リリース日
CLOUDFRONT_ORIGIN_FACING サービスコードが追加されました。 2021 年 10 月 12 日
ROUTE53_RESOLVER サービスコードが追加されました。 2021 年 6 月 24 日
EBS サービスコードが追加されました。 2021 年 5 月 12 日
KINESIS_VIDEO_STREAMS サービスコードが追加されました。 2020 年 11 月 19 日
サービスコードとして CHIME_MEETINGSCHIME_VOICECONNECTOR を追加しました。 2020 年 6 月 19 日
AMAZON_APPFLOW サービスコードが追加されました。 2020 年 6 月 9 日
ネットワーク境界グループのサポートを追加します。 2020 年 4 月 7 日
WORKSPACES_GATEWAYS サービスコードが追加されました。 2020 年 3 月 30 日
ROUTE53_HEALTHCHECK_PUBLISHING サービスコードが追加されました。 2020 年 1 月 30 日
API_GATEWAY サービスコードが追加されました。 2019 年 9 月 26 日
EC2_INSTANCE_CONNECT サービスコードが追加されました。 2019 年 6 月 26 日
DYNAMODB サービスコードが追加されました。 2019 年 4 月 25 日
GLOBALACCELERATOR サービスコードが追加されました。 2018 年 12 月 20 日
AMAZON_CONNECT サービスコードが追加されました。 2018 年 20 月 6 日
CLOUD9 サービスコードが追加されました。 2018 年 20 月 6 日
CODEBUILD サービスコードが追加されました。 2018 年 4 月 19 日
S3 サービスコードが追加されました。 2017 年 2 月 28 日
IPv6 アドレス範囲のサポートが追加されました。 2016 年 8 月 22 日
初回リリース 2014 年 11 月 19 日

詳細