チェックポイント
Create a topic
/ 50
Create a subscription
/ 50
Pub/Sub: Qwik Start - Python
GSP094
概要
Pub/Sub サービスを使用すると、アプリケーションはメッセージを非同期で、確実かつ迅速に交換できます。仕組みとしては、データのプロデューサーが Cloud Pub/Sub トピックにメッセージをパブリッシュした後、サブスクライバー クライアントがそのトピックへのサブスクリプションを作成してメッセージを受け取ります。Cloud Pub/Sub は、配信できなかったメッセージを最大 7 日間確実に保持します。
このラボでは、Pub/Sub で Python クライアント ライブラリを使ってメッセージをパブリッシュする方法を学びます。
演習内容
このラボで行うことは以下のとおりです。
- Pub/Sub の基礎を学ぶ
- Pub/Sub トピックとサブスクリプションを作成、削除、一覧表示する
- トピックにメッセージをパブリッシュする
- pull サブスクライバーを使用して、トピック メッセージを個別に出力します
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
タスク 1. 仮想環境を作成する
Python 仮想環境を使用して、パッケージのインストール先をシステムとは別の場所にします。
-
virtualenv
環境をインストールします。
- 仮想環境をビルドします。
- 仮想環境をアクティブにします。
タスク 2. クライアント ライブラリをインストールする
- 以下を実行してクライアント ライブラリをインストールします。
- GitHub リポジトリをクローンしてサンプルコードを入手します。
- ディレクトリに移動します。
タスク 3. Pub/Sub - 基本情報
Pub/Sub は、非同期のグローバル メッセージング サービスです。Pub/Sub では、トピック、パブリッシュ、サブスクライバーという 3 つのキーワードが頻出します。
トピックは、複数のアプリケーションが共通のスレッドを通じて相互に接続できるようにする共有文字列です。
パブリッシャーは、メッセージを Pub/Sub トピックに push(パブリッシュ)します。サブスクライバーは、トピックのスレッドへのサブスクリプションを作成し、そのトピックからメッセージを pull するか、push サブスクリプション用の webhook を構成します。すべてのサブスクライバーは、構成可能な時間の範囲内で各メッセージに確認応答を返信する必要があります。
まとめると、パブリッシャーはメッセージを作成してトピックに送信し、サブスクライバーはトピックへのサブスクリプションを作成してトピックからメッセージを受け取ります。
Google Cloud の Pub/Sub
Pub/Sub は Cloud Shell にプリインストールされているので、このサービスを利用するために必要なインストールおよび構成はありません。このラボでは、Python を使用してトピックとサブスクライバーを作成してから、メッセージを表示します。メッセージをトピックにパブリッシュするには、gcloud コマンドを使用します。
タスク 4. トピックを作成する
Pub/Sub にデータをパブリッシュするには、トピックを作成してから、トピックへのパブリッシャーを構成します。
- Cloud Shell ではプロジェクト ID が自動的に環境変数
GOOGLE_CLOUD_PROJECT
に格納されます。
- 出力が接続詳細のプロジェクト ID と同じであることを確認します。
publisher.py
は、Cloud Pub/Sub API を使ってトピックに対して基本的なオペレーションを実行する方法を示すスクリプトです。次のコマンドで publisher スクリプトの内容を確認します。
python-pubsub/samples/snippets/publisher.py
を表示できます。
- publisher スクリプトについて詳しくは、次のコマンドを実行してください。
出力例:
- publisher スクリプトを実行して Pub/Sub トピックを作成します。
出力例:
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。Cloud Pub/Sub トピックが正常に作成されている場合は、評価スコアが表示されます。
- このコマンドは、指定したプロジェクトのすべての Pub/Sub トピックのリストを返します。
出力例:
作成したトピックを Cloud コンソールで確認することもできます。
- ナビゲーション メニュー > [Pub/Sub] > [トピック] に移動します。
MyTopic
が表示されます。
タスク 5. サブスクリプションを作成する
-
subscriber.py
スクリプトを使用して、トピックの Pub/Sub サブスクリプションを作成します。
完了したタスクをテストする
[進行状況を確認] をクリックして、実行したタスクを確認します。Cloud Pub/Sub サブスクリプションが正常に作成されている場合は、評価スコアが表示されます。
- このコマンドは、指定したプロジェクトのサブスクライバーのリストを返します。
作成したサブスクリプションが 1 つなので、表示されるサブスクリプションは 1 つだけです。
出力例:
-
作成したサブスクリプションをコンソールで確認します。左側のペインで [サブスクリプション] をクリックします。サブスクリプション名とその他の詳細情報が表示されます。
-
subscriber
スクリプトについて詳しくは、次のコマンドを実行します。
出力:
タスク 6. メッセージをパブリッシュする
MyTopic
(トピック)と MyTopic
へのサブスクリプション(MySub
)の設定が完了したので、gcloud
コマンドを使って MyTopic
にメッセージをパブリッシュします。
-
MyTopic
にメッセージ「Hello」をパブリッシュします。
- さらにいくつかメッセージを
MyTopic
にパブリッシュするために、次のコマンドを実行します(<YOUR NAME> はご自分の名前、<FOOD> は好きな食べ物に置き換えます)。
タスク 7. メッセージを表示する
MyTopic にメッセージをパブリッシュできたので、MySub を使ってメッセージを pull して表示します。
- MySub を使って MyTopic からメッセージを pull します。
出力例:
- リッスンを停止するには Ctrl+C キーを押します。
タスク 8. 理解度チェック
今回のラボで学習した内容の理解を深めていただくため、以下の多肢選択式問題を用意しました。正解を目指して頑張ってください。
お疲れさまでした
Python を使用して Pub/Sub トピックを作成してトピックにパブリッシュし、サブスクリプションを作成しました。次に、サブスクリプションを使用して、トピックからデータを pull しました。
次のステップと詳細情報
Pub/Sub Lite は、予測可能なトラフィック パターンを持つメッセージング システム用のゾーンサービスとして Pub/Sub を補完します。1 秒あたり 1 MiB~1 GiB のメッセージをパブリッシュする場合は、Pub/Sub Lite のほうが、大量のイベントを取り込む費用を抑えられます。Pub/Sub Lite は次のラボでお試しいただけます。
このラボは Qwik Start と呼ばれるラボシリーズの一部です。これらのラボでは、Google Cloud で利用できる多くの機能を体験できます。Google Cloud Skills Boost カタログで「Qwik Start」を検索し、興味のあるラボを探してみてください。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 2 月 13 日
ラボの最終テスト日: 2023 年 9 月 22 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。