こんにちわ、 cloudpack@dz_ こと大平かづみです。

Prologue – はじめに

AWS re:Invent 2014 が終わりましたが、それでもAWSのアップデートは続いていることに感心しつつ、今日はこのアップデートをチェックしてみます。

AWSブログ記事「AWS Public IP Address Ranges Now Available in JSON Form

また、取得したJSONデータのサンプルを下部に掲載しましたので、ご参考になればさいわいです。
IPアドレス範囲のJSONデータのサンプル

※正式な情報は公式サイト、公式ブログをご参照くださいますよう、よろしくお願いいたします。

要約

「AWS Public IP のアドレス範囲 が JSON形式で利用可能に」

  • 問い合わせの多いAWSサービスで使っているIPアドレス範囲を JSON 形式で取得できるようになりました。
  • 下記から取得できます。
  • このJSONからは、以下のサービスに関するIPアドレス範囲が得られるようです。
    • AMAZON
    • EC2
    • ROUTE53
    • ROUTE53_HEALTHCHECKS
    • CLOUDFRONT
  • 特に特定のサービスを気にしないのであれば、 AMAZON を参照すればよいそうです。
  • また、上記以外のサービスについては、いずれ追加予定だが、コードで適宜ご対応ください、とのこと。
  • 詳細は、AWS IP Address Ranges をご参照ください。

クイック和訳(一部)

記事冒頭

Many of our customers have asked us for a detailed list of the IP address ranges assigned to and used by AWS. While the use cases vary from customer to customer, they generally involve firewalls and other forms of network access controls. In the past we have met this need by posting human-readable information to the EC2, S3, SNS, and CloudFront Forums.

たくさんのお客様から、AWSで使用しているIPアドレス範囲の詳細についてお問い合わせをいただきます。
お客様ごとにユースケースが異なるとはいえ、それらは一般的にファイアウォールや他のネットワークアクセスコントロールの形式に影響します。

過去には、私たちは、人間が読める情報を、EC2やS3, SNS, CloudFront のフォーラムに投稿するという必要性に遭遇しました。

JSON形式によるIPレンジ

I am happy to announce that this information is now available in JSON form at https://ip-ranges.amazonaws.com/ip-ranges.json.

今日(2014/11/21)、これらの情報を JSON形式でご提供できるようになったことを、お知らせできることを嬉しく思います。
こちら「https://ip-ranges.amazonaws.com/ip-ranges.json」からご利用いただけます。

The information in this file is generated from our internal system-of-record and is authoritative. You can expect it to change several times per week and should poll accordingly.

このファイルの情報は、内部のレコードシステムが生成しており、権限をもっています。
あなたが何度か予想するように、これらのデータは週に何度か更新するので、適宜ポーリングしてください。

実際のJSONデータを参照しながら

Valid values for the service key include “AMAZON”, “EC2”, “ROUTE53”, “ROUTE53_HEALTHCHECKS”, and “CLOUDFRONT.” If you need to know all of the ranges and don’t care about the service, use the “AMAZON” entries.

サービスのキーに対する有効な値は、”AMAZON”, “EC2”, “ROUTE53”, “ROUTE53_HEALTHCHECKS”, “CLOUDFRONT” です。
もし、アドレス範囲のすべてを知りたくて、サービスに関して気にしないのであれば、”AMAZON” のエントリーを利用してください。

The other entries are subsets of this one. Also, some of the services, such as S3, are represented in “AMAZON” and do not have an entry that is specific to the service. We plan to add additional values over time; code accordingly!

他のエントリーは上記のサブセットです。
また、S3などのサービスのいくつかは、”AMAZON” に含まていて、そのサービスを指定したエントリーはありません。
いずれタイおい宇する予定ですが、コードで適宜ご対応ください。

For more information, read the documentation on AWS IP Address Ranges.

詳細は、AWS IP Address Ranges をご参照ください。

PS – By my count, there are now 10,130,200 IP addresses in the EC2 range. My code excludes the first (all zeroes) and last (all ones) address in each CIDR block.

追伸、私のカウントでは、EC2のIPアドレスは、10,1390,200 個です。
(この算出に使った)私のコードは、それぞれのCIDRブロックの先頭(0.0.0.0)と末尾(255.255.255.255)を除外しています。

サンプル

実際にIPアドレス範囲のJSONデータを取得してみました!

更新日は、Jeff さんの記事のサンプルと同じタイムスタンプでした。

AWSブログの記事中にあるように、regionには、各リージョン、およびGLOBALが指定されています。
serviceの種類についても、それぞれ確認できました。

以下は、一部抜粋したものです。

{
  "syncToken": "1416523628",
  "createDate": "2014-11-20-22-51-01",
  "prefixes": [
    {
      "ip_prefix": "50.19.0.0/16",
      "region": "us-east-1",
      "service": "AMAZON"
    },
    {
      "ip_prefix": "54.239.98.0/24",
      "region": "us-east-1",
      "service": "AMAZON"
    },
    {
      "ip_prefix": "205.251.254.0/24",
      "region": "GLOBAL",
      "service": "AMAZON"
    },
    ...
    {
      "ip_prefix": "50.19.0.0/16",
      "region": "us-east-1",
      "service": "EC2"
    },
    ...
    {
      "ip_prefix": "205.251.192.0/21",
      "region": "GLOBAL",
      "service": "ROUTE53"
    },
    {
      "ip_prefix": "54.232.40.64/26",
      "region": "sa-east-1",
      "service": "ROUTE53_HEALTHCHECKS"
    },
    ...
    {
      "ip_prefix": "54.182.0.0/16",
      "region": "GLOBAL",
      "service": "CLOUDFRONT"
    }
  ]
}

Epilogue – おわりに

JSON形式はいろんなところで使われているので、使い勝手がよさそうですね!
ただ、各自でポーリングとか、まだ含まれていないサービスはコード書いて対応してね!って、なんてチャーミングなアップデートだ、と思います(笑)