Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Google Cloud Pub/Sub のデッドレター設定でハマったところ
Search
suna-big
September 12, 2024
Programming
470
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Google Cloud Pub/Sub のデッドレター設定でハマったところ
Google Cloud Pub/Sub のデッドレター設定でハマったところがあったので紹介します。
suna-big
September 12, 2024
More Decks by suna-big
See All by suna-big
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
260
本当にあった怖いサイトマップ
sunabig
0
53
Other Decks in Programming
See All in Programming
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
400
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
120
Android CLI
fornewid
0
180
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
360
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
180
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.6k
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.3k
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
200
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
240
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
280
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
3.1k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
230
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Fireside Chat
paigeccino
42
4k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
740
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
First, design no harm
axbom
PRO
2
1.2k
Embracing the Ebb and Flow
colly
88
5.1k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.8k
The untapped power of vector embeddings
frankvandijk
2
1.8k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Transcript
@suna_big Google Cloud Pub/Sub の デッドレター設定で ハマったところ 異なるタイプのサービスアカウントと権限、MaxExtensionについて
自己紹介 株式会社AI Shiftのバックエンドエンジニア 主にChatbot,Voicebotの開発をしています パブリッククラウドとソフトウェアデザイン設計に 強くなりたいです
Pub/Subとは? Pub/Subは、非同期でスケーラブルなメッセージングサービス メッセージの送信者 (パブリッシャー) と受信者 (サブスクライバ ー) を切り離す通信モデル パブリッシャーとサブスクライバーを分離し、独立して開発・運用 できるなどのメリットがある
Pub/Subとは? https://cloud.google.com/pubsub/docs/pubsub-basics?hl=ja#lifecycle_of_a_message_in
デッドレタートピックとは? Pub/Sub のデッドレター トピックとは、Pub/Sub サービスがメッセー ジの配信を試みたものの、サブスクライバーが確認応答できない場合 に、配信不能メッセージを転送するトピック Pub/Sub のデッドレター トピックに対してサブスクリプションを用意
し、GCSに保存することで後から問題のあるメッセージのトラブルシ ューティングと分析が容易になります
デッドレター トピック デッドレター サブスクリプシ ョン デッドレタートピックとは?
デッドレターに 入らない 起きたトラブル デッドレターに 流れたはずの メッセージが サブスクリプションから 流れ続ける 確認応答期限が 1分のはずが
60分かかる
デッドレターに 入らない 起きたトラブル デッドレターに 流れたはずの メッセージが サブスクリプションから 流れ続ける 確認応答期限が 1分のはずが
60分かかる
デッドレターに入らない デッドレタートピックを設定したのに、 なぜか流れない。。。 サブスクリプション デッドレター トピック デッドレター サブスクリプション
デッドレターに入らない Pub/Sub サブスクリプションの デッドレタリングの項目で 注意マークがついている部分の対応が必要だった しかし、Terraform上で どうやって表現したらよいかわからなかった 具体的には『このプロジェクトの Cloud Pub/Subサービスアカウント』とはなんだ?
複数のサービスアカウント 実はサービスアカウントには複数種類ある Google Cloud には、いくつかの異なるタイプのサービス アカウントがあります。 ユーザー管理のサービス アカウント: ユーザーが作成して管理するサービス アカウント。
多くの場合、これらのサービス アカウントはワークロードの ID として使用されます。 デフォルトのサービス アカウント: 特定の Google Cloud サービスを有効にするときに自動 的に作成される、ユーザー管理のサービス アカウント。これらのサービス アカウントは、 ユーザーの責任で管理する必要があります。 Google 管理のサービス アカウント: サービスがリソースにアクセスできるようにするため に、ユーザーに代わって Google が作成し、管理するサービス アカウント。 https://cloud.google.com/iam/docs/service-account-overview?hl=ja#types
複数のサービスアカウント 再度管理画面のチェックボックスをクリックして確認したら 確かにいた!(画像の赤枠) service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com これをTerraformに設定
デッドレターに 入らない 起きたトラブル デッドレターに 流れたはずの メッセージが サブスクリプションから 流れ続ける 確認応答期限が 1分のはずが
60分かかる
デッドレターに流れたメッセージが サブスクリプションから流れ続ける Pub/Sub のデッドレター トピックにメッセージは入るが、サブスクリ プションにメッセージが残り続けて、無限にサブスクライバーが動き 続けていた
デッドレターに流れたメッセージが サブスクリプションから流れ続ける デッドレター トピック メッセージが 流れ続ける
権限不足 実はパブリッシャーロールしか設定していなかった。(画像) デッドレタートピックにパブリッシュするのだから サブスクライバーロールなんて何に使うんだと 考えていた しかし、サブスクライバーのロールが サブスクリプションからメッセージを削除する 役割があった
Terraformで権限を設定 メッセージがデッドレターに流れ、 サブスクリプションからは 削除されるようになった! Terraformに設定
デッドレターに 入らない 起きたトラブル デッドレターに 流れたはずの メッセージが サブスクリプションから 流れ続ける 確認応答期限が 1分のはずが
60分かかる
わざと失敗するリクエストを送り確認応答期限(1分)※* 配信の最大試行回数(5回)後にデッ ドレターに送られるはずがいっこうに送られない。。 それどころからログを見ると、そもそも再試行が行われておらず、60分後にようやく1回目の 再試行が行われていた。。 確認応答期限が1分のはずが60分かかる
MaxExtension MaxExtensionという Subscriptionが各メッセージの確認応答期限を 自動的に延長する最大期間の設定が Pub/Subのサブスクライバー用の ライブラリに存在していた これのデフォルトが60分であり、自動的に 各メッセージの応答期限が延長されていた
MaxExtension MaxExtensionは0未満に設定すると確認応答期限の延長がされなくなるので、-1に することで確認応答期限が1分になったことを確認できた
まとめ ・サービスアカウントは複数種類ある、デッドレターの設定にはGoogle 管理のサ ービスアカウントを利用する必要がある ・デッドレターの設定で利用するサービスアカウントにはパブリッシャーだけでな く、サブスクライバーの権限も付与しよう ・MaxExtensionによって確認応答期限が自動で延長されてしまうから気をつけよ う
ご清聴ありがとうございました