Snowflake「Authentication token has expired」エラーの原因と再ログイン方法

Snowflakeの「Authentication token has expired」エラーの解説アイキャッチ、認証トークン期限切れの原因とSnowsight・CLI・Pythonでの再ログイン手順、長時間バッチ運用時の予防策を初心者向けにまとめた図解 Snowflake
この記事をシェアする𝕏B!FacebookLINEPocket

はじめに:突然「Authentication token has expired」と出てびっくり!

Snowflakeで作業中、こんなメッセージが急に出てきて焦った経験はありませんか?

Authentication token has expired. The user must authenticate again.

「さっきまで普通にクエリ実行できていたのに!」と思いますよね。でも安心してください。これは 認証トークン (Authentication Token) の有効期限が切れた ことを伝えているだけのお知らせで、アカウントがロックされたわけでも、設定が壊れたわけでもありません。

この記事では、初心者の方でもスッキリ理解できるように、エラーの仕組みと 再ログイン・再接続の方法 を解説していきます。

そもそも「認証トークン」ってなに?

Snowflakeにログインすると、毎回ユーザー名・パスワードを入れ直さなくて済むように、サーバーから 認証トークン という「身分証明書のような文字列」が発行されます。クライアント (Snowsight や CLI、Pythonコネクタなど) はこのトークンを使って、以降の操作を行います。

ただし、このトークンには 有効期限 があり、Snowflakeの公式仕様では以下のように決まっています。

  • セッショントークン: デフォルトで 1時間 有効
  • マスタートークン (再発行用): デフォルトで 4時間 有効
  • セッションのアイドル時間が 4時間 を超えると自動切断

つまり、しばらく何も操作していなかったり、長時間スクリプトを動かしっぱなしにしていたりすると、トークンの期限が切れて「もう一回認証してね」と言われるわけです。

主な原因をチェックしよう

① 長時間ブラウザを放置していた

Snowsight (Webコンソール) をタブで開きっぱなしにしてランチに行ったあと、戻ってきてクエリを実行するとこのエラーが出やすいです。

② Pythonスクリプトや BIツールが長時間動いている

ETL処理が4時間を超えるケースや、ノートブックで session を作ったまま放置したケースで発生します。

③ パスワードやMFAの設定変更

パスワードリセットやMFA再登録を行うと、既存トークンは即座に無効化されます。

④ ネットワーク切断・PCのスリープ

Wi-Fi切断やノートPCのスリープ後にも、トークンが切れて再認証を求められることがあります。

図解でまとめたSnowflakeのAuthentication token has expiredエラー発生要因と対処の流れ。長時間放置やPythonスクリプトの稼働、MFA変更、ネットワーク切断などトークン期限切れの典型パターンから再ログインへ進む導線を整理

再ログイン・再接続の方法

Snowsight (Web画面) の場合

一番カンタンです。画面右上のアカウントアイコンから Sign Out → 再度ログインしましょう。エラーバナー内に「Sign in again」リンクが出ていればそれをクリックでOKです。ブラウザのキャッシュが悪さをしているときは、シークレットウィンドウで開き直すのも有効です。

SnowSQL / Snowflake CLI の場合

セッションを切って接続し直します。

# SnowSQLの場合
!exit
snowsql -a <account> -u <user>

# Snowflake CLIの場合
snow connection test -c my_conn

Python コネクタの場合

長時間処理を行うときは、必ず例外をキャッチして再接続する処理を入れておくと安心です。

import snowflake.connector

def get_conn():
    return snowflake.connector.connect(
        user="USER",
        password="PASSWORD",
        account="xy12345.ap-northeast-1.aws",
        client_session_keep_alive=True,  # ← ポイント!
    )

client_session_keep_alive=True を指定すると、クライアントが定期的にハートビートを送り、セッションが切れにくくなります。長時間バッチには必須のオプションです。

よくある注意点

まとめ

「Authentication token has expired」は、Snowflakeが「セッションの有効期限切れたよ〜」と教えてくれているだけのメッセージです。再ログインするだけで解決 しますし、Pythonなどの自動処理では client_session_keep_alive を入れておけばかなり防げます。慌てず、サインアウト→サインインしてみてください。

参考リンク

関連記事

この記事をシェアする𝕏B!FacebookLINEPocket