Skip to content

0.45.0

Choose a tag to compare

@worgue-magic-pocket-llmops worgue-magic-pocket-llmops released this 26 Oct 03:53
· 22 commits to dev since this release

Added

  • [cloudfront.<name>.waf] に rate_limits を追加しました。送信元 IP ごとのレートリミット
    (AWS WAF の rate-based rule)を { limit, window_sec, path, action } の配列で宣言すると、
    WebACL の全ルールの先頭に付きます。allow_rules の秘密ヘッダを持つ呼び手や IP allowlist 済みの
    IP も超過すれば止まります(block は 429 を返し、count は記録だけします)。
    enable_ip_set = false の必須条件に action = "block" の rate_limits も数えるようにしたので、
    「IP allowlist 無し + レートリミットだけ」の WebACL も宣言できます
  • pocket waf ratelimit list --name <cf> --stage <stage> が、deploy 済みの rate rule ごとにレート超過として
    追跡中の IP(WAF の managed keys)を表示します。WAF 側の反映は数分〜十数分遅れます

Changed

  • allow_rules / rate_limits の path に使える文字を RFC 3986 の path 文字(" と \ を除く)に
    制限し、* を除いた長さを 200 bytes 以内(WAF の ByteMatch SearchString の上限)に制限しました。
    CloudFormation template への埋め込みを安全にし、deploy 時に失敗する宣言を手前で止めるためで、
    通常の URL path には影響しません
  • allow_rules / rate_limits の path の比較を URL デコード後に行うようにしました(WAF の
    TextTransformation URL_DECODE)。従来は /%61pi/auth/login のようにエンコードした path が
    /api/auth/* に一致せず、backend 側は同じ処理に到達するためレートリミットを迂回できました。
    allow_rules ではエンコードした同等 path も allow の対象になります(backend の解釈と揃う方向)
  • WAF の CloudFormation template のコメントを更新したため、[cloudfront.<name>.waf] を使っている既存の
    stack は次回 deploy で一度 update されます(ルールの内容は変わりません)
  • 0.29.0 の multi-container 移行で deploy が削除する旧形式の container stack({slug}-container)について、
    削除の完了を待つようにしました(最大 5 分)。CloudFormation 側の一過性エラーで DELETE_FAILED に
    なった場合は、失敗したリソースと理由、再実行コマンドを表示します(deploy 自体は成功のまま終わります)。
    従来は削除を開始するだけで終わっていたため、失敗に気付けませんでした。DELETE_FAILED のまま残った
    旧 stack は次回 deploy でも理由付きで再検出し、削除を再実行できます

Documentation

  • 宣言から外したまま残した 0.36 以前の backup plan は旧 vault を参照し続け、pocket cleanup-deprecated が
    中止する旨と対処(plan / selection を手で削除してから再実行)を設定ガイドに追記しました