チュートリアル:Amazon Virtual Private Cloud から Amazon SQSキューにメッセージを送信する
このチュートリアルでは、安全なプライベートネットワーク経由で Amazon SQS キューにメッセージを送信する方法について説明します。ネットワークには以下が含まれます。
-
Amazon EC2 インスタンスを含む VPC。
-
Amazon EC2 インスタンスがパブリックインターネットを使用せずに Amazon SQS に接続できるようにするインターフェイス VPC エンドポイント。
完全プライベートネットワークでも、Amazon EC2 インスタンスに接続し、Amazon SQS キューにメッセージを送信できます。詳細については、「Amazon SQSのAmazon Virtual Private Cloud エンドポイント」を参照してください。
重要
-
Amazon Virtual Private Cloud は HTTPS Amazon SQSエンドポイントでのみ使用できます。
-
Amazon VPC からメッセージを送信するように Amazon SQS を設定する場合、プライベート DNS を有効にして、デュアルスタックエンドポイントでは
sqs.またはus-east-2.amazonaws.com.rproxy.govskope.casqs.の形式でエンドポイントを指定する必要があります。us-east-2.api.aws Amazon SQS は、
com.amazonaws.region.sqs-fipsエンドポイントサービスを使用した PrivateLink を介した FIPS エンドポイントもサポートしています。sqs-fips.region.amazonaws.com形式の FIPS エンドポイントに接続できます。Amazon Virtual Private Cloud でデュアルスタックエンドポイントを使用する場合、リクエストは IPv4 と IPv6 を使用して送信されます。
-
プライベートDNS は、
queue.amazonaws.comやなどのレガシーエンドポイントをサポートしていません。us-east-2.queue.amazonaws.com
ステップ 1: Amazon EC2 キーペアを作成する
キーペアを使用すると、Amazon EC2 インスタンスに接続することができます。これは、ログイン情報を暗号化するパブリックキーと、その復号に使用されるプライベートキーで構成されます。
-
Amazon EC2 コンソール
にサインインします。 -
ナビゲーションメニューの [ネットワーク & セキュリティ] で、[キーペア] を選択します。
-
[キーペアの作成] を選択します。
-
[キーペア作成] ダイアログボックスの [キーペア名] に
SQS-VPCE-Tutorial-Key-Pairを入力し、[作成] を選択します。 -
ブラウザによってプライベートキーファイル
SQS-VPCE-Tutorial-Key-Pair.pemが自動的にダウンロードされます。重要
このファイルを安全な場所に保存します。EC2は、2回目に同じキーペアに対して
.pemファイルを生成しません。 -
SSHクライアントに EC2 インスタンスへの接続を許可するには、相手のユーザーのみが読み取り権限を持つことができるように、プライベートキーファイルのアクセス許可を設定します。例:
chmod 400 SQS-VPCE-Tutorial-Key-Pair.pem
ステップ2:AWSリソースを作成する
必要なインフラストラクチャを設定するには、Amazon EC2 インスタンスや Amazon SQSキューなどのリソースで構成されるスタック作成するため設計図になるAWSCloudFormation テンプレートを使用する必要があります。
このチュートリアルのスタックには、次のリソースが含まれます:
-
VPCおよび関連するネットワーキングリソース(サブネット、セキュリティグループ、インターネットゲートウェイ、およびルートテーブルを含む)。
-
VPCサブネット内に起動されたAmazon EC2インスタンス
-
Amazon SQSキュー
-
GitHubから
SQS-VPCE-Tutorial-CloudFormation.yamlという名のCloudFormation テンプレートをダウンロードします。 -
CloudFormation コンソール
にサインインします。 -
[スタックの作成] を選択します。
-
[テンプレートの選択] ページで、[テンプレートを Amazon S3 にアップロード] を選択してから、
SQS-VPCE-SQS-Tutorial-CloudFormation.yamlファイルを選択して [次へ] を選択します。 -
[詳細の指定] ページで、以下の作業を行います。
-
[スタック名] に「
SQS-VPCE-Tutorial-Stack」と入力します。 -
[KeyName] には、[SQS-VPCE-Tutorial-Key-Pair] を選択します。
-
[次へ] を選択します。
-
-
[オプション] ページで、[次へ] を選択します。
-
{レビュー}ページの [機能] セクションで、[ CloudFormationによってカスタム名のついたIAMリソースが作成される場合があることを承認しますAWS] そして[作成] を選択します。
CloudFormation はスタックの作成を開始し、[CREATE_IN_PROGRESS] のステータスが表示されます。プロセスが完了すると、CloudFormationに [CREATE_COMPLETE]ステータスが表示されます。
ステップ 3: EC2 インスタンスがパブリックアクセス可能ではないことを確認する
CloudFormationテンプレートにより、SQS-VPCE-Tutorial-EC2-Instanceという名前のEC2 インスタンスが VPC で起動されます。このEC2 インスタンスはアウトバウンドトラフィックを許可せず、 Amazon SQS にメッセージを送信することができません。これを確認するには、インスタンスに接続し、パブリックエンドポイントへの接続を試行してからメッセージAmazon SQSを送信してみる必要があります。
-
Amazon EC2 コンソール
にサインインします。 -
ナビゲーションメニューで、[インスタンス] の下にある [インスタンス] を選択します。
-
[SQS-VPCE-Tutorial-EC2Instance] を選択します。
-
[パブリック DNS] の下でホスト名をコピーします (例: ec2-203-0-113-0.us-west-2.compute.amazonaws.com)。
-
先に作成したキーペアが格納されているディレクトリから次のコマンドを使用してインスタンスに接続します、例:
ssh -i SQS-VPCE-Tutorial-Key-Pair.pem ec2-user@ec2-203-0-113-0.us-east-2.compute.amazonaws.com -
パブリックエンドポイントに接続を試みます、例:
ping amazon.com接続の試行は予期したとおりに失敗します。
-
Amazon SQSコンソール
にサインインします。 -
キューの一覧から、CloudFormationテンプレートで作成したキューを選択します。例: VPCE-SQS-Tutorial-Stack-CFQueue-1ABCDEFGH2IJK。
-
詳細 テーブルで、URL をコピーします、例、 https://sqs.us-east-2.amazonaws.com/123456789012/。
-
EC2 インスタンスから、次のコマンドを使用して、キューにメッセージを発行してみます、例:
aws sqs send-message --regionus-east-2--endpoint-urlhttps://sqs.us-east-2.amazonaws.com/--queue-urlhttps://sqs.us-east-2.amazonaws.com/123456789012/--message-body "Hello from Amazon SQS."送信の試行は予期したとおりに失敗します。
重要
後で Amazon SQSのVPC エンドポイントを作成するときに、送信の試行は成功します。
ステップ4: Amazon SQSの Amazon VPC エンドポイントを作成する
VPCを Amazon SQSに接続するには、インターフェイス VPC エンドポイントを定義します。エンドポイントを追加した後、VPC内のEC2 インスタンスから Amazon SQS API を使用できます。これにより、パブリックインターネットと交差せずにAWSネットワーク内でキューにメッセージを送信できます。
注記
EC2 インスタンスはその他のAWSサービスやインターネットのエンドポイントにアクセスできません。
-
Amazon VPC コンソール
にサインインします。 -
ナビゲーションメニューで [エンドポイント] を選択します。
-
[エンドポイントの作成] を選択します。
-
{エンドポイントの作成} ページの [サービス名] で、 Amazon SQS のサービス名を選択します。
注記
このサービス名は、現在のAWS リージョンによって異なります。たとえば、米国東部(オハイオ) にいる場合、サービス名は
com.amazonaws.us-east-2.sqs になります。 -
[VPC] には、SQS-VPCE-Tutorial-VPC を選択します。
-
[サブネット] には、[サブネット ID] にSQS-VPCE-Tutorial-Subnetを含むサブネットを選択します。
-
[セキュリティグループ] の場合は [セキュリティグループの選択] を選択し、[グループ名] にSQS VPCE Tutorial Security Groupを含むセキュリティグループを選択します。
-
[エンドポイントの作成] を選択します。
インターフェイス VPC エンドポイントが作成され、その ID が表示されます。例: vpce-0ab1cdef2ghi3j456k。
-
[閉じる] を選択します。
Amazon VPC コンソールの [エンドポイント] ページを開きます。
Amazon VPCがエンドポイントの作成を開始し、{保留中] ステータスが表示されます。プロセスが完了すると、Amazon VPCに {利用可能} ステータスが表示されます。
ステップ5:Amazon SQSキューにメッセージを送信する
これで VPCに Amazon SQSのエンドポイントが含まれたので、EC2 インスタンスに接続して、キューにメッセージを送信できます。
-
EC2インスタンスに再接続します、例:
ssh -i SQS-VPCE-Tutorial-Key-Pair.pem ec2-user@ec2-203-0-113-0.us-east-2.compute.amazonaws.com -
次のコマンドを使用して、もう一度キューにメッセージを発行してみます、例:
aws sqs send-message --regionus-east-2--endpoint-urlhttps://sqs.us-east-2.amazonaws.com/--queue-urlhttps://sqs.us-east-2.amazonaws.com/123456789012/--message-body "Hello from Amazon SQS."送信の試行が成功し、メッセージ本文のMD5ダイジェストとメッセージ ID が表示されます、例:
{ "MD5OfMessageBody": "a1bcd2ef3g45hi678j90klmn12p34qr5", "MessageId": "12345a67-8901-2345-bc67-d890123e45fg" }
CloudFormation テンプレート (例: VPCE-SQS-Tutorial-Stack-CFQueue-1ABCDEFGH2IJK) によって作成されたキューからのメッセージの受信と削除の詳細については、「Amazon SQS でのメッセージの受信と削除 」を参照してください。
リソースの削除の詳細については、以下を参照してください。
-
VPC エンドポイントの削除のAmazon VPC User Guide
-
「Amazon EC2 ユーザーガイド」の「インスタンスの終了」
-
「Amazon VPC ユーザーガイド」の「VPC を削除する」
-
「AWS CloudFormation ユーザーガイド」の「CloudFormation コンソールからスタックを削除する」
-
「Amazon EC2 ユーザーガイド」の「キーペアの削除」