EC2 インスタンスをエンドポイントに指定した AWS Global Accelerator を AWS CLI で作成してみた
アクセラレーターエンドポイントとして追加するリソースの要件 - AWS Global Accelerator
Amazon EC2 インスタンスエンドポイント
EC2 インスタンスの作成から AWS CLI でやってみました。
前提
- AWS CLI の実行環境: CloudShell
- EC2 インスタンスのセキュリティグループはデフォルトのセキュリティグループ
01. EC2 インスタンスの作成
$ nano userdata-tokyo.sh
# 以下の内容を書き込んで保存
#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello from Tokyo Region!</h1>" > /var/www/html/index.html
echo "<p>Server: $(hostname)</p>" >> /var/www/html/index.html
echo "<p>Region: ap-northeast-1 (Tokyo)</p>" >> /var/www/html/index.html
# 東京リージョンで EC2 インスタンスを作成
$ aws ec2 run-instances \
--image-id ami-0f95ad36d6d54ceba \
--instance-type t2.micro \
--user-data file://userdata-tokyo.sh \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=GlobalAccelerator-Tokyo}]'
$ nano userdata-virginia.sh
# 以下の内容を書き込んで保存
#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello from Virginia Region!</h1>" > /var/www/html/index.html
echo "<p>Server: $(hostname)</p>" >> /var/www/html/index.html
echo "<p>Region: us-east-1 (Virginia)</p>" >> /var/www/html/index.html
# バージニア北部リージョンで EC2 インスタンスを作成
$ aws ec2 run-instances \
--image-id ami-0150ccaf51ab55a51 \
--instance-type t2.micro \
--user-data file://userdata-virginia.sh \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=GlobalAccelerator-Virginia}]'
--region us-east-1
02. セキュリティグループの設定
Global Accelerator から EC2 インスタンスにアクセスするために EC2 インスタンスのセキュリティグループで 80 番ポートを許可します。
$ aws ec2 authorize-security-group-ingress \
--group-id $(aws ec2 describe-security-groups --filters "Name=group-name,Values=default" --query 'SecurityGroups[0].GroupId' --output text) \
--protocol tcp \
--port 80 \
--cidr 0.0.0.0/0
$ aws ec2 authorize-security-group-ingress \
--group-id $(aws ec2 describe-security-groups --region ue-east-1 --filters "Name=group-name,Values=default" --query 'SecurityGroups[0].GroupId' --output text) \
--protocol tcp \
--port 80 \
--cidr 0.0.0.0/0
--region us-east-1
03. Global Accelerator の作成
create-accelerator — AWS CLI 2.27.52 Command Reference
Global Accelerator is a global service that supports endpoints in multiple Amazon Web Services Regions but you must specify the US West (Oregon) Region to create, update, or otherwise work with accelerators. That is, for example, specify --region us-west-2 on Amazon Web Services CLI commands.
Global Accelerator を作成する場合、us-west-2 リージョンを明示的に指定する必要がある点に注意してください。
# Global Accelerator の作成
$ aws globalaccelerator create-accelerator \
--name "MyFirstAccelerator" \
--ip-address-type IPV4 \
--enabled \
--region us-west-2
# リスナーの作成
$ aws globalaccelerator create-listener \
--accelerator-arn <Global Accelerator の ARN> \
--protocol TCP \
--port-ranges FromPort=80,ToPort=80 \
--region us-west-2
# エンドポイントグループの作成
$ aws globalaccelerator create-endpoint-group \
--listener-arn <リスナーの ARN> \
--endpoint-group-region ap-northeast-1 \
--endpoint-configurations EndpointId=<東京リージョンの EC2 インスタンス ID>,Weight=128
--region us-west-2
$ aws globalaccelerator create-endpoint-group \
--listener-arn <リスナーの ARN> \
--endpoint-group-region us-east-1 \
--endpoint-configurations EndpointId=<バージニア北部リージョンの EC2 インスタンス ID>,Weight=128
--region us-west-2
04. 動作確認
# Global Accelerator の IP アドレスを取得
$ aws globalaccelerator describe-accelerator \
--accelerator-arn <Global Accelerator の ARN> \
--region us-west-2
--query 'Accelerator.IpSets[0].IpAddresses'
# 取得できた IP アドレス
[
"166.117.110.244",
"15.197.85.81"
]
# Global Accelerator の IP アドレスにリクエスト
$ curl http://166.117.110.244
<h1>Hello from Tokyo Region!</h1>
<p>Server: ip-172-31-15-113.ap-northeast-1.compute.internal</p>
<p>Region: ap-northeast-1 (Tokyo)</p>
$ curl http://15.197.85.81
<h1>Hello from Tokyo Region!</h1>
<p>Server: ip-172-31-15-113.ap-northeast-1.compute.internal</p>
<p>Region: ap-northeast-1 (Tokyo)</p>
05. 東京リージョンの EC2 インスタンスを停止してみる
$ aws ec2 stop-instances \
--instance-ids <東京リージョンの EC2 インスタンス ID>
# 2 ~ 3 分経過後に Global Accelerator の IP アドレスにリクエスト
$ curl http://166.117.110.244
<h1>Hello from Virginia Region!</h1>
<p>Server: ip-172-31-85-234.ec2.internal</p>
<p>Region: us-east-1 (Virginia)</p>
東京リージョンの EC2 インスタンスを停止した場合、バージニア北部リージョンの EC2 インスタンスに接続されることを確認できました。
まとめ
今回は EC2 インスタンスをエンドポイントに指定した AWS Global Accelerator を AWS CLI で作成してみました。
どなたかの参考になれば幸いです。
Discussion