踩坑筆記|Cloud Functions Gen2 無法讀取 Secret Manager 權限錯誤與解法

更新 發佈閱讀 7 分鐘

前言

最近在部署 LINE Bot + Gemini API 的 Cloud Functions Gen2 專案時,遇到一個讓服務直接 500 Error 的大坑:

Secret Manager 權限沒設好,導致 LINE 金鑰與 Gemini API Key 都讀不到。

因為當下是線上服務,必須立即修復,於是我先做了一個 臨時解法——讓程式直接從環境變數讀金鑰,並保留 fallback,以確保服務不中斷。

這篇筆記會記錄完整的問題背景、臨時解法、優缺點分析,以及後續的長期解法,避免下次再踩雷。


1. 問題描述

  • 環境:Cloud Functions Gen2(Node.js 20)
  • 情況:部署後讀取 Secret Manager(LINE_CHANNEL_ACCESS_TOKEN、GEMINI_API_KEY)時發生錯誤。
  • 原因:函式使用的 Service Account 沒有 roles/secretmanager.secretAccessor 權限,導致 Secret Manager 無法存取。

2. 臨時解法流程(改用環境變數)

目標:跳過 Secret Manager,直接從環境變數取得金鑰,並保留 fallback。

2.1 查詢 Functions 服務帳號

gcloud functions describe line-bot-gemini-node-js-dev \
--region=asia-east1 \
--gen2 \
--format="json(serviceConfig.serviceAccountEmail,serviceConfig.environmentVariables)"

2.2 程式碼加 fallback

// getLineToken()
export async function getLineToken() {
try {
const tokenFromSecret = await getSecret('LINE_CHANNEL_ACCESS_TOKEN');
return process.env.LINE_CHANNEL_ACCESS_TOKEN ?? tokenFromSecret;
} catch (error) {
console.error('Failed to get LINE token:', error);
return process.env.LINE_CHANNEL_ACCESS_TOKEN; // fallback
}
}

// getGeminiApiKey()
export async function getGeminiApiKey() {
try {
const keyFromSecret = await getSecret('GEMINI_API_KEY');
return process.env.GEMINI_API_KEY ?? keyFromSecret;
} catch (error) {
console.error('Failed to get GEMINI API key:', error);
return process.env.GEMINI_API_KEY; // fallback
}
}

2.3 部署時直接塞環境變數

gcloud functions deploy line-bot-gemini-node-js-dev \
--gen2 \
--region=asia-east1 \
--runtime=nodejs20 \
--source=. \
--entry-point=lineWebhook \
--set-env-vars LINE_CHANNEL_ACCESS_TOKEN="你的LINE金鑰",GEMINI_API_KEY="你的Gemini金鑰" \
--trigger-http \
--allow-unauthenticated

3. 優缺點分析

優點

  • 快速修復,不受 Secret Manager 權限影響。
  • 部署即生效。

缺點

  • 金鑰存在 Functions 設定檔,安全性較弱。
  • 更新金鑰需重新部署。

4. 長期解法(修正 Secret Manager 權限)

  1. 查出 Functions 使用的 Service Account gcloud functions describe <你的函式名稱> \ --region=asia-east1 \ --gen2 \ --format="value(serviceConfig.serviceAccountEmail)"
  2. 到 GCP Console → IAM & Admin → IAM 找到上一步查到的 Service Account。
  3. 為該帳號新增角色 新增角色:Secret Manager Secret Accessor 儲存變更。
  4. 重新部署 Functions(可不加環境變數) gcloud functions deploy line-bot-gemini-node-js-dev \ --gen2 \ --region=asia-east1 \ --runtime=nodejs20 \ --source=. \ --entry-point=lineWebhook \ --trigger-http \ --allow-unauthenticated
  5. 驗證 移除 --set-env-vars 部署後,測試程式是否能正常讀取 Secret Manager。

5. 建議

  • 開發/測試:用環境變數方便快速部署。
  • 正式環境:修好 Secret Manager 權限後切回 Secret Manager。
  • 程式保留 fallback:即使 Secret Manager 臨時掛掉,也能用環境變數維持服務。
留言
avatar-img
麟製所
2會員
65內容數
軟體、旅遊分享
麟製所的其他內容
2025/10/27
擔心出門才發現火車誤點?全新「預提醒」功能,讓您在行程開始前就能掌握列車動態,提前發現誤點並調整計畫。文章詳細介紹預提醒與立即通知的差異、設定步驟、運作邏輯、會員等級差異,並提供實際使用情境與進階技巧,助您成為智慧通勤族。
Thumbnail
2025/10/27
擔心出門才發現火車誤點?全新「預提醒」功能,讓您在行程開始前就能掌握列車動態,提前發現誤點並調整計畫。文章詳細介紹預提醒與立即通知的差異、設定步驟、運作邏輯、會員等級差異,並提供實際使用情境與進階技巧,助您成為智慧通勤族。
Thumbnail
2025/10/24
還在每天手動查詢臺鐵誤點嗎?本文詳細介紹「自動通知」功能,包括設定教學、手動查詢 vs 自動通知比較、會員等級對應門檻,以及車種篩選等進階應用。透過自動通知,節省時間,告別通勤壓力,提升生活品質。
Thumbnail
2025/10/24
還在每天手動查詢臺鐵誤點嗎?本文詳細介紹「自動通知」功能,包括設定教學、手動查詢 vs 自動通知比較、會員等級對應門檻,以及車種篩選等進階應用。透過自動通知,節省時間,告別通勤壓力,提升生活品質。
Thumbnail
2025/10/21
最近在公司電腦進行系統還原後,意外發現一個奇怪狀況: 本機帳號 登入時,指紋辨識可以正常使用 網域帳號(AD) 登入時,指紋辨識選項整個灰掉無法啟用
2025/10/21
最近在公司電腦進行系統還原後,意外發現一個奇怪狀況: 本機帳號 登入時,指紋辨識可以正常使用 網域帳號(AD) 登入時,指紋辨識選項整個灰掉無法啟用
看更多
你可能也想看
Thumbnail
首先確定VS Code的版本,如果你的版本跟我一樣是1.92.0那麼你可以參考我的作法...
Thumbnail
首先確定VS Code的版本,如果你的版本跟我一樣是1.92.0那麼你可以參考我的作法...
Thumbnail
在 IG 上看到一位前端大大用 Google Apps Script + Line bot 替自己的球隊安排了球經,覺得很有趣,想來玩看看
Thumbnail
在 IG 上看到一位前端大大用 Google Apps Script + Line bot 替自己的球隊安排了球經,覺得很有趣,想來玩看看
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
標示全部為已讀失效 最近發現留言系統中,"標示全部為已讀"的速度明顯變慢,甚至有時會失效。許多使用者都報告遇到了相同的問題。這實際上是程式設計中一個常見的漏洞。系統沒有充分考慮到整體容量問題與效能,才導致了這樣的情況。(實際原因待查,此處僅為一般解說),當系統開始顯示緩慢或出現其他問題時,通常
Thumbnail
標示全部為已讀失效 最近發現留言系統中,"標示全部為已讀"的速度明顯變慢,甚至有時會失效。許多使用者都報告遇到了相同的問題。這實際上是程式設計中一個常見的漏洞。系統沒有充分考慮到整體容量問題與效能,才導致了這樣的情況。(實際原因待查,此處僅為一般解說),當系統開始顯示緩慢或出現其他問題時,通常
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
在API介接中使用x-www-form-urlencoded格式時,可能會遇到一些踩坑的情況,本文分享了作者在這方面遇到的問題和解決方法。
Thumbnail
在API介接中使用x-www-form-urlencoded格式時,可能會遇到一些踩坑的情況,本文分享了作者在這方面遇到的問題和解決方法。
Thumbnail
在專案中與廠商測試API回傳的json字串出現無法解析的狀況,記錄發現過程與解決的紀錄,提供程式面和檔案面的解決方法。
Thumbnail
在專案中與廠商測試API回傳的json字串出現無法解析的狀況,記錄發現過程與解決的紀錄,提供程式面和檔案面的解決方法。
Thumbnail
學習如何使用Python連接MongoDB進行憑證監控,包括建立MongoDB docker-compose、連接MongoDB、讀取yaml並寫入MongoDB、傳入env以及domain寫入MongoDB、讀取MongoDB、修改MongoDB、刪除MongoDB。
Thumbnail
學習如何使用Python連接MongoDB進行憑證監控,包括建立MongoDB docker-compose、連接MongoDB、讀取yaml並寫入MongoDB、傳入env以及domain寫入MongoDB、讀取MongoDB、修改MongoDB、刪除MongoDB。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
想學流量怎麼蹭嗎?讓我這位前任競選總幹事告訴你,不過要先修課程唷,我會給素材,你們要交作業,否則紙上談兵都無用,我有一些業配的業務可以讓各位練習,如何蹭流量還有管理經營。 流量密碼研究所 3000,每個月 https://vocus.cc/pay/salon/monthly/645345c1
Thumbnail
想學流量怎麼蹭嗎?讓我這位前任競選總幹事告訴你,不過要先修課程唷,我會給素材,你們要交作業,否則紙上談兵都無用,我有一些業配的業務可以讓各位練習,如何蹭流量還有管理經營。 流量密碼研究所 3000,每個月 https://vocus.cc/pay/salon/monthly/645345c1
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
Google Cloud Arcade 是一個免費、以遊戲來學習 Google Cloud 的平台,在這裡您可以透過實作的Labs 來解決主題任務和每週任務,每個月的主題任務和每週任務都會更新,充實掌握雲端技能。
Thumbnail
Google Cloud Arcade 是一個免費、以遊戲來學習 Google Cloud 的平台,在這裡您可以透過實作的Labs 來解決主題任務和每週任務,每個月的主題任務和每週任務都會更新,充實掌握雲端技能。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News