$ sudo pip3 install google-cloud-pubsub
IAMの追加(Cloud Pub/Subの権限はIAMで担保されている)
$ gcloud iam service-accounts create ${NAME}
サービスアカウントに権限を付与
$ gcloud projects add-iam-policy-binding ${PROJECT_ID} --member "serviceAccount:${NAME}@${PROJECT_ID}.iam.gserviceaccount.com" --role "roles/owner"
キーファイルの作成
$ gcloud iam service-accounts keys create ${FILE_NAME}.json --iam-account ${NAME}@${PROJECT_ID}.iam.gserviceaccount.com
クレデンシャルをパスに追加
$ export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"
WebUIからTopicを作成する
Subscriptionを作成
from google.cloud import pubsub_v1
GCP_PROJECT = os.environ['GCP_PROJECT']
subscriber = pubsub_v1.SubscriberClient()
topic_name = 'my-new-topic'
topic = f'projects/{GCP_PROJECT}/topics/{topic_name}'
sub_name = 'my-new-subscription'
subscription_name = f'projects/{GCP_PROJECT}/subscriptions/{sub_name}'
subscriber.create_subscription(subscription_name, topic)
特に設定の必要なし
コールバックで待ち受けて実行なので、サーバのようなものが必要となる
subscriber = pubsub_v1.SubscriberClient()
sub_name = 'my-new-subscription'
subscription_name = f'projects/{GCP_PROJECT}/subscriptions/{sub_name}'
def callback(message):
''' 受け取ったメッセージに応じてなにかする '''
print(message.data)
message.ack()
future = subscriber.subscribe(subscription_name, callback)
# ここでブロックが行われてコールバックで受け取るメッセージが展開される
future.result()
- [1]Pub/Sub