ablog

不器用で落着きのない技術者のメモ

AWS の各リージョンとコードの対応表

2020/5/16 時点

リージョンエンドポイント
ほとんどの Amazon Web Services では、リクエストの実行に使用できるリージョンのエンドポイントを提供しています。リージョンエンドポイントの一般的な構文は次のとおりです。

protocol://service-code.region-code.amazonaws.com

たとえば、https://dynamodb.us-west-2.amazonaws.com は 米国西部 (オレゴン) リージョンの Amazon DynamoDB サービスのエンドポイントです。

次の表は、各リージョンの名前とコードの一覧です。

名前 コード
米国東部 (オハイオ) us-east-2
米国東部(バージニア北部) us-east-1
米国西部 (北カリフォルニア) us-west-1
米国西部 (オレゴン) us-west-2
アフリカ (ケープタウン) af-south-1
アジアパシフィック (香港) ap-east-1
アジアパシフィック (ムンバイ) ap-south-1
アジアパシフィック (大阪: ローカル) ap-northeast-3
アジアパシフィック (ソウル) ap-northeast-2
アジアパシフィック (シンガポール) ap-southeast-1
アジアパシフィック (シドニー) ap-southeast-2
アジアパシフィック (東京) ap-northeast-1
カナダ (中部) ca-central-1
欧州 (フランクフルト) eu-central-1
欧州 (アイルランド) eu-west-1
欧州 (ロンドン) eu-west-2
欧州 (パリ) eu-west-3
欧州 (ストックホルム) eu-north-1
中東 (バーレーン) me-south-1
南米 (サンパウロ) sa-east-1
AWSサービスエンドポイント - AWS 全般のリファレンス

dig で IP アドレスだけを出力する

digコマンドに+shortオプションを指定して正引きするとIPアドレスだけを取得できます。

$ dig example.com +short
93.184.216.119

Understanding the dig commandで知りました。
dig(1): DNS lookup utility - Linux man pageでは

  1. [no]short

Provide a terse answer. The default is to print the answer in a verbose form.

としか書いてないです。
|

digでIPアドレスだけを出力する - Qiita

Route53 を使って同一 AZ のリードレプリカ障害時に別 AZ にフェイルオーバーする

要件

  • Aurora のリードレプリカを AZ1 と AZ2 に作成、正常時は AZ1 の AP サーバ on EC2 から AZ1 のリードレプリカに接続(同一AZのほうがレイテンシが低いため)、AZ1 障害時のみ AZ2 のリードレプリカに接続したい。

実装方式

  • Route53 の DNS フェイルオーバーで、正常時は AZ1 のエンドポイントに接続、障害時のみ AZ2 に接続するよう設定。
  • インスタンスがクエリを実行できない状況になっていても TCP ポートに接続できると正常と判断される。
  • AZ1 のインスタンス識別子の変更、または Route53 のホストゾーンの「フェイルオーバーレコードタイプ」のセカンダリとプライマリを入替えるなどで手動フェイルオーバーすることができる。

設定

Aurora クラスター作成
  • Aurora クラスターを作成する。
  • リードレプリカを ap-northeast-1a と ap-northeast-1a に作成する。
  • セキュリティグループのインバウンドで Route53 ヘルスチェッカーの IP アドレス(以下)から TCP 3306 ポートを許可する。
$ curl -s https://ip-ranges.amazonaws.com/ip-ranges.json|jq -r '.prefixes[]|select(.service=="ROUTE53_HEALTHCHECKS" and ( .region=="ap-northeast-1" or .region=="ap-southeast-1" or .region=="ap-southeast-2"))|@text "\(.region)\t\(.ip_prefix)"'|sort
ap-northeast-1	54.248.220.0/26
ap-northeast-1	54.250.253.192/26
ap-southeast-1	54.251.31.128/26
ap-southeast-1	54.255.254.192/26
ap-southeast-2	54.252.254.192/26
ap-southeast-2	54.252.79.128/26
Route53 でヘルスチェックを作成
Route53 でプライベートホストゾーン作成
Route53 でレコードセット作成
  • 名前: ap-northeast-1a.aurora-rr-priv.a2z.work. ★同じ名前にする
    • エイリアス: いいえ
    • TTL: 10
    • 値: aurora-mysql57-instance-1-ap-northeast-1a.******.ap-northeast-1.rds.amazonaws.com
    • ルーティングポリシー: フェイルオーバー
    • フェイルオーバーレコードタイプ: プライマリ
    • セット ID: primary
    • ヘルスチェックとの関連付け: はい
    • 関連付けるヘルスチェック: aurora-fo-rr-1a
  • 名前: ap-northeast-1a.aurora-rr-priv.a2z.work. ★同じ名前にする
    • エイリアス: いいえ
    • TTL: 10
    • 値: aurora-mysql57-instance-1-ap-northeast-1c.******.ap-northeast-1.rds.amazonaws.com
    • ルーティングポリシー: フェイルオーバー
    • フェイルオーバーレコードタイプ: セカンダリ
    • セット ID: secondary
    • ヘルスチェックとの関連付け: はい
    • 関連付けるヘルスチェック: aurora-fo-rr-1c

テスト

  • Aurora と同じ VPC に EC2 インスタンスを作成してプライマリに接続されることを確認する。
$ mysql -h ap-northeast-1a.aurora-rr-priv.a2z.work -u awsuser -p

MySQL [(none)]> show variables like 'hostname';
+---------------+--------------+
| Variable_name | Value        |
+---------------+--------------+
| hostname      | ip-10-7-1-22 |
+---------------+--------------+
1 row in set (0.01 sec)
  • AZ1 のリードレプリカを削除する。
  • AZ2 のリードレプリカに接続されることを確認する。
$ mysql -h ap-northeast-1a.aurora-rr-priv.a2z.work -u awsuser -p

MySQL [(none)]> show variables like 'hostname';
+---------------+--------------+
| Variable_name | Value        |
+---------------+--------------+
| hostname      | ip-10-7-2-27 |
+---------------+--------------+
1 row in set (0.00 sec)

Route 53 ヘルスチェッカーの IP アドレス範囲を調べる

Route 53 のRoute 53 ヘルスチェッカーの IP アドレス範囲を調べる。

$ curl https://ip-ranges.amazonaws.com/ip-ranges.json|jq -r '.prefixes[]|select(.service=="ROUTE53_HEALTHCHECKS")|@text "\(.region)\t\(.ip_prefix)"'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  469k  100  469k    0     0   977k      0 --:--:-- --:--:-- --:--:--  978k
ap-southeast-2	54.252.254.192/26
sa-east-1	177.71.207.128/26
ap-southeast-1	54.255.254.192/26
us-west-2	54.244.52.192/26
ap-southeast-1	54.251.31.128/26
us-west-1	54.241.32.64/26
us-west-2	54.245.168.0/26
sa-east-1	54.232.40.64/26
ap-northeast-1	54.248.220.0/26
eu-west-1	176.34.159.192/26
ap-southeast-2	54.252.79.128/26
us-west-1	54.183.255.128/26
ap-northeast-1	54.250.253.192/26
GLOBAL	15.177.0.0/18
eu-west-1	54.228.16.0/26
us-east-1	107.23.255.0/26
us-east-1	54.243.31.192/26

Aurora のカスタムエンドポイント

Aurora レプリカは、使用不可になっても、カスタムエンドポイントに関連付けられたままになります。たとえば、異常、停止、再起動などに伴って、カスタムエンドポイントの一部として残ります。ただし、レプリカが再度使用可能になるまでは、これらのエンドポイントを通じてレプリカに接続することはできません。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.Endpoints.html:tilte
$ for i in {1..100}
do
    sudo killall -HUP mDNSResponder
    dig +short aurora-mysql57-rr.cluster-custom-******.ap-northeast-1.rds.amazonaws.com
done|perl -nle '/^\d+\./ and print'|sort|uniq -c

49 18.***.**.175
51 52.***.***.127

macOS に mysql クライアントをインストールする

インストール

  • インストールする
$ brew install mysql mysql-client
  • バージョンを確認する
$ mysql -V
mysql  Ver 8.0.19 for osx10.14 on x86_64 (Homebrew)

接続する

$ mysql -h aurora-mysql57.cluster-******.ap-northeast-1.rds.amazonaws.com -u awsuser -p

環境

参考


追記:
Amazon Linux の場合

$ sudo yum -y install mysql mysql-client