AWS Lambda切分不同環境

更新於 2024/01/09閱讀時間約 4 分鐘

在沒有分環境之前,每一隻lambda只有一個code console給所有人一起編輯,開發好了就deploy,根據設定的trigger觸發執行。

現在我們希望能夠在code console開發,然後deploy到不同的stage,目標是不同stage的api gateway能夠調用該lambda的不同環境代碼。

Lambda設定

基本flow

基本flow

首先,我們在目標lambda console開發,開發好了以後,點選右上方的發布新版本:

raw-image

接著我們新建別名,別名會綁定指定的lambda版本,這邊我們將別名取為stage名稱:

raw-image

之後如果code有改(包含升級lambda有使用的layer版本),我們就會再發布新版本,並到別名的地方更新版本:

編輯別名的lambda版本

編輯別名的lambda版本

選擇別名要用的lambda版本

選擇別名要用的lambda版本

我們等等會繼續回來設定lambda的權限,這邊先設定lambda的trigger: api gateway。

API Gateway設定

接著我們來設定api gateway:

設定不同stage的api gateway能吃到相應的lambda別名

設定不同stage的api gateway能吃到相應的lambda別名

首先我們會去不同的stage來去設定Stage變數:

到相應的api gateway stage設定stage變數

到相應的api gateway stage設定stage變數

stage變數新增要對應的lambda別名為何

stage變數新增要對應的lambda別名為何

接著我們按照一般API開發流程,新增resource:

新增api resource

新增api resource

raw-image
新增api

新增api

接下來要特別注意了,我們要將這個api的呼叫能夠動態根據api gateway stage來去做不同的lambda別名呼叫。

這邊我們利用stage變數,會應用在lambda的綁定上:

利用stage變數動態呼叫不同別名的lambda

利用stage變數動態呼叫不同別名的lambda

在Lambda function的地方,我們先搜尋要綁定的lambda,接著再做後加上:${stageVariables.lambdaAlias}


為每個lambda別名設定權限

這邊有兩種做法,第一種是用aws cli(請確保你已經設定好),這種方式最快,因為只需要把aws跳出來給你的指令稍作修改就好:

複製黃色區塊的指令,我們要將lambda冒號後的${stageVariables.lambdaAlias}換成實際上的別名名稱

複製黃色區塊的指令,我們要將lambda冒號後的${stageVariables.lambdaAlias}換成實際上的別名名稱

直接複製黃色區塊的指令,把--function-name裡面的值冒號後替換成該lambda的別名,我們有staging跟production,所以就需要兩組指令。

aws lambda add-permission
--function-name "你的lambda arn:staging"
--source-arn "這會是這個api的arn"
--principal apigateway.amazonaws.com
--statement-id 這是aws生成給我們的辨識碼
--action lambda:InvokeFunction這是權限名稱
aws lambda add-permission
--function-name "你的lambda arn:production"
--source-arn "這會是這個api的arn"
--principal apigateway.amazonaws.com
--statement-id 這是aws生成給我們的辨識碼
--action lambda:InvokeFunction這是權限名稱


第二種方法是利用aws console的圖形界面設定,要在lambda的每個別名分別設定一次:

分別為每個別名設定lambda權限

分別為每個別名設定lambda權限

接著就會到別名的設定頁面,點選左側權限,再到最下面點選新增權限開始設定

接著就會到別名的設定頁面,點選左側權限,再到最下面點選新增權限開始設定

我們將剛才在api gateway設定時aws請我們設定的權限命令值填入:

raw-image

每個別名都依序設定好之後,我們就可以在api gateway那邊先test,如果沒有設定成功,會跳500,說沒有權限,如果test沒問題之後就可以按右上角deploy API到不同的api gateway stage開放他們

raw-image

這樣就大功告成拉!


目前覺得比較麻煩的地方就是如果layer有改,就還要重新創新版本,更新別名綁定的版本,有點麻煩,不像之前沒有別名的時候只要去layer那邊一鍵把版本xx layer版本1的lambda升級到xx layer版本2就好。








avatar-img
4會員
10內容數
分享感情與生活的故事,期望我們都能在愛與被愛的路上感到幸福,並且在這個只有活一次的人生裡好好的活成自己喜歡的樣子
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
JHIHLEI LIN的沙龍 的其他內容
先須知識: 了解什麼是變數 作用域scope 在Rust中,變數預設是不可變的 let name = "Zoe"; // 預設變數不可變 也就同於Javascript中的const,若想讓變數可變則需要在let後面加上mut關鍵字: let mut name = "Vicky"; nam
When you want to use your non-publish yet package in your other project, you need to do these: step 1 go to package and run : npm link packageNameHe
Magnetic tapes是一個自古就有的技術,至今還是有企業在使用,也有不斷在被改良中。 其特性:容量大低成本保存時間長,讓其仍有利用價值,在特定的情境下可做使用,比如可作為保存歷史資料使用,例如美國NASA,政府機構等等,或作為備份使用,不過要注意其讀寫速度很慢,比固態硬碟如HDD還慢上許多
第一天上班,你需要設定 SSH key,因為你將使用 SSH 來 clone 代碼 Repo。SSH 與 HTTP 的主要差別在於安全性和速度,而 SSH 比 HTTP 更加安全和快速。本篇文章的主要目的是介紹如何在一台電腦上使用 SSH 登入多個 GitHub 和 GitLab 帳戶。 不管你的
雖然lambda本身的概念就是主打無伺服器+各自獨立運行的function,但有時又不免其然的需要共用代碼,像是api可能都需要做權限驗證。 會有這方面的研究是因為公司正好要將app跟web共用的api搬到api gateway去處理,但我馬上就想到會有code reuse的問題,怎麼樣用可維護的
要談論DBMS,除了SQL語法之外,我們還必須了解底層是怎麼處理資料儲存的,也就是DBMS架構的底層Disk Space Management: Disk Space Management 提供API來讀/寫資料到硬碟,資料會以Page為傳輸單位,為什麼會一次要等到這麼大才寫入硬碟或一次要讀這麼
先須知識: 了解什麼是變數 作用域scope 在Rust中,變數預設是不可變的 let name = "Zoe"; // 預設變數不可變 也就同於Javascript中的const,若想讓變數可變則需要在let後面加上mut關鍵字: let mut name = "Vicky"; nam
When you want to use your non-publish yet package in your other project, you need to do these: step 1 go to package and run : npm link packageNameHe
Magnetic tapes是一個自古就有的技術,至今還是有企業在使用,也有不斷在被改良中。 其特性:容量大低成本保存時間長,讓其仍有利用價值,在特定的情境下可做使用,比如可作為保存歷史資料使用,例如美國NASA,政府機構等等,或作為備份使用,不過要注意其讀寫速度很慢,比固態硬碟如HDD還慢上許多
第一天上班,你需要設定 SSH key,因為你將使用 SSH 來 clone 代碼 Repo。SSH 與 HTTP 的主要差別在於安全性和速度,而 SSH 比 HTTP 更加安全和快速。本篇文章的主要目的是介紹如何在一台電腦上使用 SSH 登入多個 GitHub 和 GitLab 帳戶。 不管你的
雖然lambda本身的概念就是主打無伺服器+各自獨立運行的function,但有時又不免其然的需要共用代碼,像是api可能都需要做權限驗證。 會有這方面的研究是因為公司正好要將app跟web共用的api搬到api gateway去處理,但我馬上就想到會有code reuse的問題,怎麼樣用可維護的
要談論DBMS,除了SQL語法之外,我們還必須了解底層是怎麼處理資料儲存的,也就是DBMS架構的底層Disk Space Management: Disk Space Management 提供API來讀/寫資料到硬碟,資料會以Page為傳輸單位,為什麼會一次要等到這麼大才寫入硬碟或一次要讀這麼
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
Lambda Log 是存放至 CloudWatch Logs, 格式跟log level只能預設,但現今是可以修改的 Log 格式:Text Log level:無 Log Group :/aws/lambda/Function Name 實驗開始 新建立測試Functi
Thumbnail
情境:想透過 IAM Role 的方式同時切換不同的帳號。 這邊以主帳號 "A" ,子帳號 "B" 為例。即在不重新登入的情況下,先登入A,然後利用 switch role的方式跳進B。 Account B Todo 建立IAM role 您需要在"B"此組帳號建立IAM Role,
Thumbnail
最近開了複委託打算定期定額買美股,主要因為交割戶是設定外幣帳戶交割,先前設置了常用銀行的外幣到價通知,但是美金最近一直逆空高灰,幾乎不會啟動到價通知🥲,只好一直關注銀行即期價格,但因為上班常常會忘記要看一下外幣網銀換匯優惠,故想說練習python之餘,並順便做個爬蟲將資料發送到line群組
Thumbnail
什麼是 serverless (無伺服器運算)? 無伺服器運算是一種開發架構,允許開發者在不用管理伺服器的情況下建置部署和執行應用程式。無伺服器運算裡仍然有伺服器,只是伺服器是由雲端服務供應商負責處理配置、維護、拓展伺服器基礎設施的日常工作,開發者可以專注於開發程式碼。
Thumbnail
2020 年 Covid-19 爆發後,各產業都面臨資源調度的瓶頸,加上工業 4.0 時代的催化下,數位轉型加速、遠端作業、自動化等策略,具象化了智慧製造的概念。近年來,全球智慧製造市場呈現急速增長。為加速全球智慧化,雲端服務作為硬體驅動的核心關鍵,AWS 積極協助新創、中小企業、傳產等快速佈局,
Thumbnail
「任何背景, 學習雲端也能輕鬆上手!」 「好想來學新知識!」「一起來認識雲端產業吧!」 最完整的 AWS Educate 註冊大解析來囉~~~ 🚀 馬上開啟 AWS Educate 免費雲端學習 🚀
Thumbnail
一張圖講完今年會議重點,幾乎都放在台灣企業的數位轉型浪潮上面,主要包含雲端與AI技術的導入 今年第二次參與AWS高峰會,一如往常的每年都有很多新的嘗試與實驗,跟去年大玩AI應用的路線不同的地方在於,今年的會議帶出很多企業轉型與DevOps的議題
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
Lambda Log 是存放至 CloudWatch Logs, 格式跟log level只能預設,但現今是可以修改的 Log 格式:Text Log level:無 Log Group :/aws/lambda/Function Name 實驗開始 新建立測試Functi
Thumbnail
情境:想透過 IAM Role 的方式同時切換不同的帳號。 這邊以主帳號 "A" ,子帳號 "B" 為例。即在不重新登入的情況下,先登入A,然後利用 switch role的方式跳進B。 Account B Todo 建立IAM role 您需要在"B"此組帳號建立IAM Role,
Thumbnail
最近開了複委託打算定期定額買美股,主要因為交割戶是設定外幣帳戶交割,先前設置了常用銀行的外幣到價通知,但是美金最近一直逆空高灰,幾乎不會啟動到價通知🥲,只好一直關注銀行即期價格,但因為上班常常會忘記要看一下外幣網銀換匯優惠,故想說練習python之餘,並順便做個爬蟲將資料發送到line群組
Thumbnail
什麼是 serverless (無伺服器運算)? 無伺服器運算是一種開發架構,允許開發者在不用管理伺服器的情況下建置部署和執行應用程式。無伺服器運算裡仍然有伺服器,只是伺服器是由雲端服務供應商負責處理配置、維護、拓展伺服器基礎設施的日常工作,開發者可以專注於開發程式碼。
Thumbnail
2020 年 Covid-19 爆發後,各產業都面臨資源調度的瓶頸,加上工業 4.0 時代的催化下,數位轉型加速、遠端作業、自動化等策略,具象化了智慧製造的概念。近年來,全球智慧製造市場呈現急速增長。為加速全球智慧化,雲端服務作為硬體驅動的核心關鍵,AWS 積極協助新創、中小企業、傳產等快速佈局,
Thumbnail
「任何背景, 學習雲端也能輕鬆上手!」 「好想來學新知識!」「一起來認識雲端產業吧!」 最完整的 AWS Educate 註冊大解析來囉~~~ 🚀 馬上開啟 AWS Educate 免費雲端學習 🚀
Thumbnail
一張圖講完今年會議重點,幾乎都放在台灣企業的數位轉型浪潮上面,主要包含雲端與AI技術的導入 今年第二次參與AWS高峰會,一如往常的每年都有很多新的嘗試與實驗,跟去年大玩AI應用的路線不同的地方在於,今年的會議帶出很多企業轉型與DevOps的議題