Amazon SQS を設定して Amazon VPC からメッセージを送信する場合、
プライベート DNS を有効にして、sqs.us-east-2.amazonaws.com の形式でエンドポイントを指定する必要があります。
-- 1. コマンド等のインストール
-- 1.1 aws cli version 2 インストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
-- 1.2 jqインストール
sudo yum -y install jq
-- 2. SQSキュー作成
aws sqs create-queue \
--queue-name qu01
aws sqs list-queues
-- 3. サブネットの作成
aws ec2 create-subnet \
--availability-zone ap-northeast-1a \
--cidr-block 172.31.48.0/20 \
--vpc-id vpc-11111111111111111
aws ec2 describe-subnets
aws ec2 describe-subnets | jq -r '.Subnets.SubnetId'
-- 4. ルートテーブルの作成
aws ec2 create-route-table \
--vpc-id vpc-11111111111111111
aws ec2 describe-route-tables
aws ec2 describe-route-tables | jq -r '.RouteTables.RouteTableId'
-- 5. ルートテーブルのサブネットへのアタッチ
aws ec2 associate-route-table \
--route-table-id rtb-22222222222222222 \
--subnet-id subnet-33333333333333333
-- 6. EC2インスタンス作成
aws ec2 run-instances \
--image-id ami-0404778e217f54308 \
--instance-type t3.nano \
--key-name key1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=instance01}]' \
--subnet-id subnet-33333333333333333
-- 7. EC2インスタンスがパブリックアクセス可能ではないことを確認する
-- 作成したEC2インスタンスにSSHログインして実行
aws sqs send-message \
--endpoint-url https://sqs.ap-northeast-1.amazonaws.com/ \
--queue-url https://sqs.ap-northeast-1.amazonaws.com/999999999999/qu01 \
--message-body "Hello from Amazon SQS."
-- 8. Amazon SQS 用の Amazon VPC エンドポイントを作成
aws ec2 create-vpc-endpoint \
--vpc-endpoint-type Interface \
--vpc-id vpc-11111111111111111 \
--service-name com.amazonaws.ap-northeast-1.sqs \
--subnet-ids "subnet-33333333333333333" \
--security-group-ids "sg-44444444444444444" \
--private-dns-enabled
aws ec2 describe-vpc-endpoints
-- 9. Amazon SQS キューにメッセージを送信する
-- 作成したEC2インスタンスにSSHログインして実行
aws sqs send-message \
--endpoint-url https://sqs.ap-northeast-1.amazonaws.com/ \
--queue-url https://sqs.ap-northeast-1.amazonaws.com/999999999999/qu01 \
--message-body "Hello from Amazon SQS."
-- 10. クリーンアップ
-- インタフェースエンドポイントの削除
aws ec2 describe-vpc-endpoints
aws ec2 delete-vpc-endpoints \
--vpc-endpoint-ids vpce-55555555555555555
-- EC2インスタンスの削除
aws ec2 describe-instances
aws ec2 terminate-instances --instance-ids i-66666666666666666
-- ルートテーブルの削除
aws ec2 disassociate-route-table \
--association-id rtbassoc-77777777777777777
aws ec2 describe-route-tables
aws ec2 describe-route-tables | jq -r '.RouteTables.RouteTableId'
aws ec2 delete-route-table \
--route-table-id rtb-22222222222222222
-- サブネットの削除
aws ec2 describe-subnets
aws ec2 describe-subnets | jq -r '.Subnets.SubnetId'
aws ec2 delete-subnet \
--subnet-id subnet-33333333333333333
-- SQSキュー削除
aws sqs list-queues
aws sqs delete-queue \
--queue-url https://sqs.ap-northeast-1.amazonaws.com/999999999999/qu01