SQS をVPC エンドポイント経由で使用する
概要
- インターネットへ接続できないAWS 環境からSQS へアクセスする必要があり、VPC エンドポイントを利用しました。ポイントを記載します。
- 先ずインターネットへ接続できないEC2 からSQS へアクセスした場合、Connect timeout となります。
Connect timeout on endpoint URL: “https://ap-northeast-1.queue.amazonaws.com/"
SQS のVPC エンドポイントを作成する
- VPC エンドポイント (com.amazonaws.ap-northeast-1.sqs) を作成します。VPC、サブネットを選択、DNS 名を有効化を選択します。
- 検証のため、セキュリティグループはインバウンドにVPC CIDR からすべてのトラフィックを許可し、VPC エンドポイントポリシーはフルアクセス(デフォルト) を設定しています。
- EC2 からdig コマンドを打った結果、sqs.ap-northeast-1.amazonaws.com のプライベートIP アドレスが返ります。
[ec2-user@ip-172-31-105-255 ~]$ dig sqs.ap-northeast-1.amazonaws.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.amzn2.13.9 <<>> sqs.ap-northeast-1.amazonaws.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23074
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;sqs.ap-northeast-1.amazonaws.com. IN A
;; ANSWER SECTION:
sqs.ap-northeast-1.amazonaws.com. 60 IN A 172.31.103.70
sqs.ap-northeast-1.amazonaws.com. 60 IN A 172.31.80.22
;; Query time: 4 msec
;; SERVER: 172.31.0.2#53(172.31.0.2)
;; WHEN: Tue Jan 14 04:49:15 UTC 2025
;; MSG SIZE rcvd: 93
- EC2 からaws cli を使用し、SQS へアクセスします。なお、EC2 には、SQS へアクセスするためのIAM 権限が必要です。
- ポイントは、aws sqs コマンドに、–endpoint-url オプションを指定することです。
[ec2-user@ip-172-31-105-255 ~]$ QUEUE_NAME=niikawa-test-sqs
[ec2-user@ip-172-31-105-255 ~]$ aws sqs list-queues --queue-name-prefix ${QUEUE_NAME} --region ap-northeast-1 --endpoint-url https://sqs.ap-northeast-1.amazonaws.com
{
"QueueUrls": [
"https://sqs.ap-northeast-1.amazonaws.com/111111111111/niikawa-test-sqs"
]
}
参考資料