{SQS}チュートリアル:Amazon Virtual Private Cloud から Amazon SQSキューにメッセージを送信する

https://docs.aws.amazon.com/ja_jp/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-sending-messages-from-vpc.html

https://www.it-ouji.com/2021/11/02/aws-sqs%E3%82%AD%E3%83%A5%E3%83%BC%E3%81%B8%E3%81%AE%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E9%80%81%E5%8F%97%E4%BF%A1%E3%82%92%E3%82%A8%E3%83%B3%E3%83%89%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88/


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ログインして実行


ping amazon.com

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