既に同じ趣旨の記事を書いている方は居たのですが、私の要件の場合「topicとsubscriptionを同時に設定したい」案件だったので、設定ファイルをまとめたいと考えていました。
resources:
- name: sample-pubsub-topic
type: pubsub.v1.topic
properties:
topic: sample-pubsub-topic
- name: sample-pubsub-subscription
type: pubsub.v1.subscription
properties:
subscription: sample-pubsub-subscription
# [PROJECT_NAME] は実際のGCPプロジェクト名に置き換えてください
topic: projects/[PROJECT_NAME]/topics/api-sample-pubsub-topic
ackDeadlineSeconds: 10
metadata:
dependsOn:
- sample-pubsub-topic
ここで注意すべきは、「subscriptionはtopicが存在することが前提なので、同時には作成できない」ということです。Cloud Deployment Managerの構文リファレンスにある通り、 dependsOn
で依存関係を記述する必要があります。
dependsOn
プロパティはリソース間に明示的な依存関係を作成します。たとえば、A リソースが B リソースに依存するように指定すると、A リソースが作成される前に必ず B リソースが作成されます。
もし指定しない場合、以下のようなエラーが発生します。
"ResourceErrorMessage":{"code":404,"message":"Resource not found (resource=sample-pubsub-topic)."