PubSub
message の decode snippet
pubsub trigger なら引数に
http trigger なら req.message
unknow で受けて
code:decode-message.js
const data: unknown = JSON.parse(
Buffer.from((message.data || '').toString(), 'base64').toString()
);
if (!validate(data)) return;
...
Push の audience
https://gyazo.com/77ab21042fe5c0e68c679ea8f5bcd630
対象 なんやねん、という感じがするが英語なら Audience (optional) である
CLI なら gcloud pubsub subscriptions create ... --push-auth-token-audience="{audience}" で指定できる
指定しないなら空文字かと思いきや、Push 先の URL が入る
これ知らない & ライブラリに verify を任せているとハマりそうだなー
https://gyazo.com/e68a5fe44b191cc21aa2397b0aa2a37f
Authorization ヘッダの検証
Google 側の公開鍵
これらの TTL は?
1日だった気がするけど expires レスポンスヘッダを尊重するのがよい?
audience なんもいれないと URL になる
Push を一時的に止める
コンソールから pull に設定する
Pub/Sub で push エンドポイントに対するリクエストの送信を一時的に停止するには、サブスクリプションを pull に変更します。この変更が適用されるまで、数分かかることがあります。
gcloud functions deploy --trigger-topic で設定すると subscription が自動で作られる
内部的には push 型
プロジェクトを横断しては設定できない
デフォルトは再送しない!!
gcloud functions deploy --retry をつける
もういらなくなった
JWT による検証
? dead letter topic の subscription も有効期限設定していたら消えちゃう?
普通に動いたら消えそうだけど、エラーないまま subscription が消えていることがありそう
指標
Unacked messages
subscription/num_undelivered_messages
未処理のメッセージ数
Outstanding messages
subscription/num_outstanding_messages
Push したけど ack が返ってこないメッセージ数