寫完了一段邏輯,立刻就想在雲端環境裡試跑看看!
隔了幾天又回到 AWS Console,本來以為會有點生疏,但是看到 MFA 登入...所以的記憶又都回來了。
先前在規劃階段,其實已經決定了要將這個功能佈署在 AWS Lambda 上,那就依照著計畫繼續前進吧!
系統規劃:Day 11. 有勇無謀是匹夫
進入 Lambda Console 頁面
點擊右上角的「建立函數」按鈕,並輸入名稱、Runtime 等基本資訊
驗執行角色的選項選擇:建立具備基本 Lambda 許可的新角色
⚠️ 建立具備基本 Lambda 許可的新角色
這個步驟 AWS 是「自動建立 + 套用 AWSLambdaBasicExecutionRole」
後續執行依照最小權限原則,需要再自己手動加上需要的權限政策。
⚠️ 公開(NONE)
雖然不需要任何驗證非常方便做測試/PoC,但正式環境更建議用 AWS_IAM 或搭配 CloudFront + WAF、IP 白名單等額外控管。
其他詳細設定放在文章末端另外說明。
大多數設定在建立完 Lambda 後都還能隨時進行調整,所以也不必太擔心。
修改位置:Lambda → 「組態」分頁 → 函數 URL
Lambda 的設定參數:選啟用函數 URL(Enable)
這個選項代表 AWS 會替 Lambda 產生一個能夠直接呼叫的 HTTPS 端點(不經 API Gateway)。
之後呼叫者只要對這個 URL 發送 HTTP 請求(GET/POST…),就能拿到函數回應。
{
"Version": "2012-10-17", // 政策語法版本(固定字串)
"Statement": [{
"StatementId": "FunctionURLAllowPublicAccess", // 這條規則的識別字串
"Effect": "Allow", // 允許(不是顯式拒絕)
"Principal": "*", // 主體為任何人(匿名皆可)
"Action": "lambda:InvokeFunctionUrl", // 允許「透過 URL」呼叫函數的行為
"Resource": "arn:aws:lambda:ap-northeast-1:590184072539:function:<Function Name>", // 目標函數 ARN
"Condition": {
"StringEquals": {
"lambda:FunctionUrlAuthType": "NONE" // 僅在「授權類型=NONE」時此規則生效
}
}
}]
}
欄位 | 設定值 | 說明 |
---|---|---|
Principal | "*" + Condition:AuthType=NONE | 等同宣告「任何人且不需要驗證就能調用」 |
Action | lambda:InvokeFunctionUrl | 與一般 lambda:InvokeFunction 不同,這條權限只控制「URL 入口」 |
若之後把授權改成 AWS_IAM,這段政策會改成對應 AuthType=AWS_IAM 的條件,實際可呼叫的人再由其 身分政策 決定(誰有權執行 lambda:InvokeFunctionUrl)。