Amazon Web Services (AWS) からのアクセスを特定したい場合にIPアドレスで判定する方法がある。
AWSはその時点のIPアドレス範囲をJSON形式で公開しているので割りと簡単にできる。
https://ip-ranges.amazonaws.com/ip-ranges.json
このURLからJSONを取得するとこういう形式のデータが入っている。
{
"syncToken": "1493252534",
"createDate": "2017-04-27-00-22-14",
"prefixes": [
{
"ip_prefix": "13.32.0.0/15",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "13.54.0.0/15",
"region": "ap-southeast-2",
"service": "AMAZON"
},
/* 省略 */
}
IPアドレスだけでなく、リージョンの情報もついているので、IPアドレスだけ欲しい場合はjqとかでフィルタして使う。
curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes | .[].ip_prefix'
またIPアドレスの範囲が変わった場合にSNSで通知を受け取ることも出来る。
AWS IP アドレスの範囲 – アマゾン ウェブ サービス
AWS の IP アドレス範囲の通知を受信登録するには
https://console.aws.amazon.com/sns/v2/home にある Amazon SNS コンソールを開きます。
ナビゲーションバーで、必要に応じてリージョンを [米国東部(バージニア北部)] に変更します。購読する SNS 通知がこのリージョンで作成されているため、このリージョンを選択する必要があります。
ナビゲーションペインで [Subscriptions] を選択します。
[Create subscription] を選択します。
[Create subscription] ダイアログボックスで、次の操作を行います。
トピックの ARN には、以下の Amazon リソースネーム (ARN) をコピーします。
Copyarn:aws:sns:us-east-1:806199016981:AmazonIpSpaceChanged
プロトコルには、使用するプロトコルを選択します (たとえば、
エンドポイントには、通知を受け取るエンドポイントを入力します (たとえば、E メールアドレス)。
[Create subscription] を選択します。
指定したエンドポイントに接続されて、登録を確認するように求められます。たとえば、E メールアドレスを指定した場合は、件名に
AWS Notification - Subscription Confirmation
と表示された E メールメッセージが届きます。指示に沿って操作し、登録を確認します。通知はエンドポイントの可用性によって異なります。そのため、JSON ファイルを定期的に確認して、常に最新の範囲を入手した方がよいでしょう。Amazon SNS の信頼性について詳しくは、https://aws.amazon.com/sns/faqs/#Reliability を参照してください。