arrow_back

Google Cloud Pub/Sub: Qwik Start - Python

参加 ログイン
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Google Cloud Pub/Sub: Qwik Start - Python

Lab 30分 universal_currency_alt クレジット: 1 show_chart 入門
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP094

Google Cloud セルフペース ラボ

概要

Google Cloud Pub/Sub サービスを使用すると、メッセージをアプリケーション間ですばやく確実に非同期で交換できます。これを実現するために、データのプロデューサーが Cloud Pub/Sub トピックにメッセージをパブリッシュした後、サブスクライバー クライアントがそのトピックへのサブスクリプションを作成してメッセージを受け取ります。Cloud Pub/Sub は、配信できなかったメッセージを最大 7 日間確実に保持します。

このラボでは、Cloud Pub/Sub で Python クライアント ライブラリを使ってメッセージをパブリッシュする方法を学びます。

演習内容

このラボで行うことは以下のとおりです。

  • Pub/Sub の基礎を学びます。
  • Pub/Sub トピックの作成と一覧表示を行います。
  • Pub/Sub サブスクリプションの作成と一覧表示を行います。
  • トピックにメッセージをパブリッシュします。
  • pull サブスクライバーを使用して、トピック メッセージを個別に出力します。

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。

このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。

    • [Google コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google コンソールを開く] をクリックします。 ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、[ラボの詳細] パネルから [ユーザー名] をコピーして [ログイン] ダイアログに貼り付けます。[次へ] をクリックします。

  4. [ラボの詳細] パネルから [パスワード] をコピーして [ようこそ] ダイアログに貼り付けます。[次へ] をクリックします。

    重要: 認証情報は左側のパネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  5. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後このタブで Cloud Console が開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコン

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

  2. 出力は次のようになります。

出力:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = <project_ID>

出力例:

[core] project = qwiklabs-gcp-44776a13dea667a6 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. 仮想環境を作成する

Python 仮想環境を使用して、パッケージのインストール先をシステムとは別の場所にします。

  1. virtualenv 環境をインストールします。
sudo apt-get install -y virtualenv
  1. 仮想環境をビルドします。
python3 -m venv venv
  1. 仮想環境をアクティブにします。
source venv/bin/activate

タスク 2. クライアント ライブラリをインストールする

  1. 以下を実行してクライアント ライブラリをインストールします。
pip install --upgrade google-cloud-pubsub
  1. GitHub リポジトリをクローンしてサンプルコードを入手します。
git clone https://github.com/googleapis/python-pubsub.git
  1. ディレクトリに移動します。
cd python-pubsub/samples/snippets

タスク 3. Pub/Sub - 基本情報

Google Cloud Pub/Sub は、非同期のグローバル メッセージング サービスです。Pub/Sub では、トピック、パブリッシュ、サブスクライバーという 3 つのキーワードが頻出します。

トピックは、複数のアプリケーションが共通のスレッドを通じて相互に接続できるようにする、共有文字列です。

パブリッシュは、パブリッシャーが、メッセージを Cloud Pub/Sub トピックに push することです。サブスクライバーは、トピックのスレッドへのサブスクリプションを作成し、そのトピックからメッセージを pull するか、push サブスクリプション用の webhook を構成します。すべてのサブスクライバーは、構成可能な時間の範囲内で各メッセージに確認応答を返信する必要があります。

まとめると、パブリッシャーはメッセージを作成してトピックに送信し、サブスクライバーはトピックへのサブスクリプションを作成してトピックからメッセージを受け取ります。

Google Cloud の Pub/Sub

Pub/Sub は Cloud Shell に事前にインストールされているので、このサービスを利用するために必要なインストールおよび構成はありません。このラボでは、Python を使用してトピックとサブスクライバーを作成してから、メッセージを表示します。メッセージをトピックにパブリッシュするには、gcloud コマンドを使用します。

タスク 4. トピックを作成する

Cloud Pub/Sub にデータをパブリッシュするには、トピックを作成してから、トピックへのパブリッシャーを構成します。

  1. Cloud Shell ではプロジェクト ID が自動的に環境変数 GOOGLE_CLOUD_PROJECT に格納されます。
echo $GOOGLE_CLOUD_PROJECT
  1. 出力が接続詳細のプロジェクト ID と同じであることを確認します。

publisher.py は、Cloud Pub/Sub API を使ってトピックに対して基本的なオペレーションを実行する方法を示すスクリプトです。次のコマンドで publisher スクリプトの内容を確認します。

cat publisher.py 注: 代わりに、Cloud Shell にインストールされている nano や vim などの shell エディタを使用するか、Cloud Shell コードエディタを使用して python-pubsub/samples/snippets/publisher.py を表示できます。
  1. publisher スクリプトについて詳しくは、次のコマンドを実行してください。
python publisher.py -h

出力例:

usage: publisher.py [-h] project {list,create,delete,publish,publish-with-custom-attributes,publish-with-futures,publish-with-error-handler,publish-with-batch-settings} ... このアプリケーションは Cloud Pub/Sub API を使ってトピックに対して基本的なオペレーションを実行する方法を示します。 詳細については、/pubsub の下にある README.md と、https://cloud.google.com/pubsub/docs にあるドキュメントをご覧ください。 positional arguments: project Google Cloud プロジェクト ID {list,create,delete,publish,publish-with-custom-attributes,publish-with-futures,publish-with-error-handler,publish-with-batch-settings} list 指定したプロジェクト内のすべての Pub/Sub トピックを一覧表示します。 create 新しい Pub/Sub トピックを作成します。 delete 既存の Pub/Sub トピックを削除します。 publish 複数のメッセージを Pub/Sub トピックにパブリッシュします。 publish-with-custom-attributes カスタム属性を使用して、複数のメッセージを Pub/Sub トピックに パブリッシュします。 publish-with-futures 複数のメッセージを Pub/Sub トピックにパブリッシュして、 メッセージ ID を出力します。 publish-with-error-handler エラーハンドラを使用して複数のメッセージを Pub/Sub トピックに パブリッシュします。 publish-with-batch-settings 一括設定を使用して複数のメッセージを Pub/Sub トピックに パブリッシュします。 optional arguments: -h, --help このヘルプ メッセージを表示して終了します。
  1. publisher スクリプトを実行して Pub/Sub トピックを作成します。
python publisher.py $GOOGLE_CLOUD_PROJECT create MyTopic

出力例:

Topic created: name: "projects/qwiklabs-gcp-fe27729bc161fb22/topics/MyTopic"

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。Cloud Pub/Sub トピックが正常に作成されている場合は、評価スコアが表示されます。

トピックを作成します。
  1. このコマンドは、指定したプロジェクトのすべての Pub/Sub トピックのリストを返します。
python publisher.py $GOOGLE_CLOUD_PROJECT list

出力例:

name: "projects/qwiklabs-gcp-fe27729bc161fb22/topics/MyTopic"

作成したトピックを Cloud コンソールで確認することもできます。

  1. ナビゲーション メニュー > [Pub/Sub] > [トピック] に移動します。

MyTopic が表示されます。

タスク 5. サブスクリプションを作成する

  1. subscriber.py スクリプトを使用して、トピックの Pub/Sub サブスクリプションを作成します。
python subscriber.py $GOOGLE_CLOUD_PROJECT create MyTopic MySub

完了したタスクをテストする

[進行状況を確認] をクリックして、実行したタスクを確認します。Cloud Pub/Sub サブスクリプションが正常に作成されている場合は、評価スコアが表示されます。

サブスクリプションを作成する
  1. このコマンドは、指定したプロジェクトのサブスクライバーのリストを返します。
python subscriber.py $GOOGLE_CLOUD_PROJECT list-in-project

作成したサブスクリプションが 1 つなので、表示されるサブスクリプションは 1 つだけです。

出力例:

projects/qwiklabs-gcp-7877af129f04d8b3/subscriptions/MySub
  1. 作成したサブスクリプションをコンソールで確認します。左側のペインで [サブスクリプション] をクリックします。サブスクリプション名とその他の詳細情報が表示されます。

  2. subscriber スクリプトについて詳しくは、次のコマンドを実行します。

python subscriber.py -h

出力:

usage: subscriber.py [-h] project {list_in_topic,list_in_project,create,create-push,delete,update,receive,receive-custom-attributes,receive-flow-control,receive-synchronously,listen_for_errors} ... このアプリケーションは Cloud Pub/Sub API を使ってサブスクリプションに対して基本的なオペレーションを実行する方法を示します。 詳細については、/pubsub の下にある README.md と、https://cloud.google.com/pubsub/docs にあるドキュメントをご覧ください。 positional arguments: project Google Cloud プロジェクト ID {list_in_topic,list_in_project,create,create-push,delete,update,receive,receive-custom-attributes,receive-flow-control,receive-synchronously,listen_for_errors} list_in_topic 指定したトピックのすべてのサブスクリプションを一覧表示します。 list_in_project 現在のプロジェクト内のすべてのサブスクリプションを一覧表示します。 create 指定したトピックに新しい pull サブスクリプションを作成します。 create-push 指定したトピックに新しい push サブスクリプションを作成します。 delete 既存の Pub/Sub トピックを削除します。 update 既存の Pub/Sub サブスクリプションの push エンドポイント URL を更新します。トピックなど、サブスクリプションの 特定のプロパティは変更できないことに注意してください。 receive pull サブスクリプションからメッセージを受け取ります。 receive-custom-attributes pull サブスクリプションからメッセージを受け取ります。 receive-flow-control フロー制御を使用して pull サブスクリプションからメッセージを 受け取ります。 receive-synchronously メッセージを同時に pull します。 listen_for_errors pull サブスクリプションからメッセージを受け取り、エラーを キャッチします。 optional arguments: -h, --help このヘルプ メッセージを表示して終了します。

タスク 6. メッセージをパブリッシュする

MyTopic(トピック)と MyTopic へのサブスクリプション(MySub)の設定が完了したので、gcloud コマンドを使って MyTopic にメッセージをパブリッシュしてみます。

  1. MyTopic にメッセージ「Hello」をパブリッシュします。
gcloud pubsub topics publish MyTopic --message "Hello"
  1. さらにいくつかメッセージを MyTopic にパブリッシュするために、次のコマンドを実行します(<YOUR NAME> はご自分の名前、<FOOD> は好きな食べ物に置き換えます)。
gcloud pubsub topics publish MyTopic --message "パブリッシャーの名前は <YOUR NAME> です" gcloud pubsub topics publish MyTopic --message "パブリッシャーの好きな食べ物は <FOOD> です" gcloud pubsub topics publish MyTopic --message "パブリッシャーは Pub/Sub を高く評価しています"

タスク 7. メッセージを表示する

MyTopic にメッセージをパブリッシュできたので、MySub を使ってメッセージを pull して表示します。

  1. MySub を使って MyTopic からメッセージを pull します。
python subscriber.py $GOOGLE_CLOUD_PROJECT receive MySub

出力例:

Listening for messages on projects/qwiklabs-gcp-7877af129f04d8b3/subscriptions/MySub Received message: Message { data: 'パブリッシャーは Pub/Sub を高く評価しています' attributes: {} } Received message: Message { data: 'Hello' attributes: {} } Received message: Message { data: "パブリッシャーの名前はカオルです" attributes: {} } Received message: Message { data: 'パブリッシャーの好きな食べ物はチーズです' attributes: {} }
  1. リッスンを停止するには Ctrl+C キーを押します。

タスク 8. 理解度チェック

今回のラボで学習した内容の理解を深めていただくため、以下の多肢選択式問題を用意しました。正解を目指して頑張ってください。

お疲れさまでした

Python を使用して Pub/Sub トピックを作成してトピックにパブリッシュし、サブスクリプションを作成しました。次に、サブスクリプションを使用して、トピックからデータを pull しました。

クエストを完了する

このセルフペース ラボは、「Baseline: Infrastructure」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、完了すると成果が認められてバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、こちらのクエストまたはこのラボが含まれるクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能なすべてのクエストについては、Google Cloud Skills Boost カタログをご覧ください。

次のラボを受講する

Pub/Sub Lite: Qwik StartPub/Sub Lite は、予測可能なトラフィック パターンを持つメッセージング システム用のゾーンサービスとして Pub/Sub を補完します。1 秒あたり 1 MiB~1 GiB のメッセージをパブリッシュする場合は、Pub/Sub Lite のほうが、大量のイベントを取り込むコストが低くなります。

次のステップと詳細情報

このラボは Qwik Start と呼ばれるラボシリーズの一部です。これらのラボでは、Google Cloud で利用できる多くの機能を体験できます。Google Cloud Skills Boost カタログで「Qwik Start」を検索し、興味のあるラボを探してみてください。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2023 年 9 月 22 日

ラボの最終テスト日: 2023 年 9 月 22 日

Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。