這是一個用 Go 編寫的 AWS Lambda function,當有新物件上傳到 S3 Bucket 時,自動發送 Discord 通知,支援自訂 Webhook 和完整的物件資訊。
# 1. 下載相依套件
go mod tidy
# 2. 編譯為 Linux 可執行檔(Windows PowerShell)
$env:GOOS="linux"; $env:GOARCH="amd64"; go build -o bootstrap
# 3. 打包部署檔案 (function.zip)
Compress-Archive -Path .\bootstrap -DestinationPath function.zip
# 4. 上傳至 AWS Lambda 並設定環境變數 DISCORD_WEBHOOK_URL- 有新物件上傳到 S3 Bucket 時會自動觸發
- 透過 Discord Webhook 發送通知
- 訊息包含 Bucket、檔案路徑、Region、物件 URL
- 環境變數方式管理 Webhook URL
- Go
- AWS CLI: 已設定 AWS 帳號存取憑證(
aws configure) - Discord Webhook URL: 從 Discord 伺服器取得(整合 > Webhook > 新增 Webhook)
aws-lambda-go-discord-notifier/
├── main.go # Lambda 進入點,處理 S3 事件
├── discord.go # Discord 客戶端,構建和發送通知
├── go.mod # Go module 設定檔
├── go.sum # Go module 依賴雜湊
├── bootstrap # Go 的可執行檔
├── function.zip # Lambda 部署 zip 檔案,直接上傳至 Lambda 用的
├── README.md # 專案說明文件
└── .gitignore # Git 忽略檔案清單
- 前往 AWS Lambda 主控台 → 函式 → 建立函式
- 選擇 從頭開始撰寫
- 函式名稱:例如
s3-discord-notifier - Runtime:選擇
Amazon Linux 2023 - 架構:選擇
x86_64 - 點擊 建立函式
-
上傳程式碼:
- 點擊 上傳來源 → .zip 檔案 → 上傳
- 選擇之前打包的
function.zip
-
設定環境變數:
- 前往 Configuration → Environment variables → Edit
- 新增環境變數:
- 金鑰:
DISCORD_WEBHOOK_URL - 值:貼上你的 Discord Webhook URL
- 金鑰:
- 儲存
- 點擊 Add trigger
- Trigger configuration:選擇 S3
- Bucket:選擇要監控的 S3 Bucket
- Event types:選擇 All object create events
- (可選)Prefix / Suffix:
- Prefix:監控特定資料夾(例如
uploads/) - Suffix:監控特定副檔名(例如
.jpg)
- Prefix:監控特定資料夾(例如
- 勾選確認,點擊 Add
上傳檔案到設定的 S3 Bucket,幾秒鐘後會在 Discord 頻道看到通知
若無收到通知,可查看日誌確認問題:
- 前往 Lambda function 頁面
- Monitor → Logs → View in CloudWatch
- 查看最新的 Log Stream