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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

このチュートリアルでは、安全なプライベートネットワーク経由で Amazon SQSキューにメッセージを送信する方法について説明します。このネットワークは、Amazon EC2 インスタンスを含むVPCで構成されます。インスタンスは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の形式でエンドポイントを指定する必要があります。

  • プライベートDNS は、queue.amazonaws.com.rproxy.goskope.comus-east-2.queue.amazonaws.comなどのレガシーエンドポイントをサポートしていません。

ステップ1:Amazon EC2 キーペアを作成する

キーペアを使用すると、Amazon EC2 インスタンスに接続することができます。これは、ログイン情報を暗号化するパブリックキーと、その復号に使用されるプライベートキーで構成されます。

  1. Amazon EC2 コンソールにサインインします。

  2. ナビゲーションメニューの [ネットワーク & セキュリティ] で、[キーペア] を選択します。

  3. [キーペアの作成] を選択します。

  4. [キーペア作成] ダイアログボックスの [キーペア名] に SQS-VPCE-Tutorial-Key-Pair を入力し、[作成] を選択します。

  5. ブラウザによってプライベートキーファイルSQS-VPCE-Tutorial-Key-Pair.pemが自動的にダウンロードされます。

    重要

    このファイルを安全な場所に保存します。EC2は、2回目に同じキーペアに対して.pemファイルを生成しません。

  6. SSHクライアントに EC2 インスタンスへの接続を許可するには、相手のユーザーのみが読み取り権限を持つことができるように、プライベートキーファイルのアクセス許可を設定します。例:

    chmod 400 SQS-VPCE-Tutorial-Key-Pair.pem

ステップ 2: AWS リソースを作成する

必要なインフラストラクチャを設定するには、テンプレート を使用する必要があります。これは、Amazon EC2 AWS CloudFormation インスタンスや Amazon SQS キューなどの AWS リソースで構成されるスタックを作成するための設計図です。

このチュートリアルのスタックには、次のリソースが含まれます:

  • VPCおよび関連するネットワーキングリソース(サブネット、セキュリティグループ、インターネットゲートウェイ、およびルートテーブルを含む)。

  • VPCサブネット内に起動されたAmazon EC2インスタンス

  • Amazon SQSキュー

  1. SQS-VPCE-Tutorial-CloudFormation.yaml から という名前の AWS CloudFormation テンプレートをダウンロードしますGitHub。

  2. AWS CloudFormation コンソール にサインインします。

  3. [スタックの作成] を選択します。

  4. [テンプレートの選択] ページで、[テンプレートを Amazon S3 にアップロード] を選択してから、SQS-VPCE-SQS-Tutorial-CloudFormation.yamlファイルを選択して [次へ] を選択します。

  5. [詳細の指定] ページで、以下の作業を行います。

    1. [スタック名] に「SQS-VPCE-Tutorial-Stack」と入力します。

    2. にはKeyNameSQS-VPCE-Tutorial-Key-Pair を選択します。

    3. [次へ] をクリックします。

  6. [Options(オプション)] ページで、[Next(次へ)] を選択します。

  7. 「確認」ページの「機能」セクションで、 がカスタム名で IAM リソースを作成する AWS CloudFormation 可能性があることを承認し、の作成」を選択します。

AWS CloudFormation はスタックの作成を開始し、CREATE_IN_PROGRESS ステータスを表示します。プロセスが完了すると、 AWS CloudFormation に [CREATE_COMPLETE]ステータスが表示されます。

ステップ 3: EC2 インスタンスがパブリックアクセス可能ではないことを確認する

AWS CloudFormation テンプレートは、VPC SQS-VPCE-Tutorial-EC2-Instanceに という名前の EC2 インスタンスを起動します。このEC2 インスタンスはアウトバウンドトラフィックを許可せず、 Amazon SQS にメッセージを送信することができません。これを確認するには、インスタンスに接続し、パブリックエンドポイントへの接続を試行してからメッセージAmazon SQSを送信してみる必要があります。

  1. Amazon EC2 コンソールにサインインします。

  2. ナビゲーションメニューで、[インスタンス] の下にある [インスタンス] を選択します。

  3. SQS-VPCE-Tutorial-EC2Instance を選択します。

  4. [パブリック DNS (IPv4)] の下でホスト名をコピーします。例、ec2-203-0-113-0.us-west-2.compute.amazonaws.com

  5. 先に作成したキーペアが格納されているディレクトリから次のコマンドを使用してインスタンスに接続します、例:

    ssh -i SQS-VPCE-Tutorial-Key-Pair.pem ec2-user@ec2-203-0-113-0.us-east-2.compute.amazonaws.com
  6. パブリックエンドポイントに接続を試みます、例:

    ping amazon.com

    接続の試行は予期したとおりに失敗します。

  7. Amazon SQSコンソールにサインインします。

  8. キューのリストから、VPCE-SQS-Tutorial-Stack-CFQueue-1ABCDEFGH2IJK など、 AWS CloudFormation テンプレートによって作成されたキューを選択します。

  9. 詳細 テーブルで、URL をコピーします、例、 https://sqs.us-east-2.amazonaws.com/123456789012/

  10. EC2 インスタンスから、次のコマンドを使用して、キューにメッセージを発行してみます、例:

    aws sqs send-message --region us-east-2 --endpoint-url https://sqs.us-east-2.amazonaws.com/ --queue-url https://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 サービスとエンドポイントには引き続きアクセスできません。

  1. Amazon VPC コンソールにサインインします。

  2. ナビゲーションメニューで [エンドポイント] を選択します。

  3. [エンドポイントの作成] を選択します。

  4. {エンドポイントの作成} ページの [サービス名] で、 Amazon SQS のサービス名を選択します。

    注記

    サービス名は、現在の AWS リージョンによって異なります。たとえば、米国東部(オハイオ) にいる場合、サービス名は com.amazonaws.us-east-2.sqs になります。

  5. [VPC] には、SQS-VPCE-Tutorial-VPC を選択します。

  6. [サブネット] には、[サブネット ID] にSQS-VPCE-Tutorial-Subnetを含むサブネットを選択します。

  7. [セキュリティグループ] の場合は [セキュリティグループの選択] を選択し、[グループ名] にSQS VPCE Tutorial Security Groupを含むセキュリティグループを選択します。

  8. [エンドポイントの作成] を選択します。

    インターフェイス VPC エンドポイントが作成され、その ID が表示されます。例: vpce-0ab1cdef2ghi3j456k

  9. [閉じる] を選択します。

    Amazon VPC コンソールの [エンドポイント] ページを開きます。

Amazon VPCがエンドポイントの作成を開始し、{保留中] ステータスが表示されます。プロセスが完了すると、Amazon VPCに {利用可能} ステータスが表示されます。

ステップ5:Amazon SQSキューにメッセージを送信する

これで VPCに Amazon SQSのエンドポイントが含まれたので、EC2 インスタンスに接続して、キューにメッセージを送信できます。

  1. EC2インスタンスに再接続します、例:

    ssh -i SQS-VPCE-Tutorial-Key-Pair.pem ec2-user@ec2-203-0-113-0.us-east-2.compute.amazonaws.com
  2. 次のコマンドを使用して、もう一度キューにメッセージを発行してみます、例:

    aws sqs send-message --region us-east-2 --endpoint-url https://sqs.us-east-2.amazonaws.com/ --queue-url https://sqs.us-east-2.amazonaws.com/123456789012/ --message-body "Hello from Amazon SQS."

    送信の試行が成功し、メッセージ本文のMD5ダイジェストとメッセージ ID が表示されます、例:

    { "MD5OfMessageBody": "a1bcd2ef3g45hi678j90klmn12p34qr5", "MessageId": "12345a67-8901-2345-bc67-d890123e45fg" }

AWS CloudFormation テンプレートによって作成されたキュー (VPCE-SQS-Tutorial-Stack-CFQueue-1ABCDEFGH2IJK など) からのメッセージの受信と削除については、「」を参照してくださいAmazon SQS でのメッセージの受信と削除

リソースの削除の詳細については、以下を参照してください。