AWS Lambda切分不同環境

更新於 發佈於 閱讀時間約 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
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
2024/12/24高技補充: 今天高技被傳小作文,內文:高技目前有測試問題還在debug (良率SYE>FHT) GCE測試過了,目前等整機測試預計要20-30K/月 研究員評論(已聯繫過高技發言人、智邦業內前輩) 1. ASIC UBB驗證過的順序為生益電->高技->金像電,高
Thumbnail
在架設Bubble.io應用時,主流上都是串接Stripe,但是Stripe必須使用(截至2024/08)美國銀行帳戶。因此,我們示範如何串接綠界金流,並搭配aws lambda做到快速金流設定。 註:筆者一開始有考慮使用Paypal,但考量到金流嚴謹性以及Bubble天生不適合unit test
Thumbnail
AWS Lambda是? AWS Lambda 就像是開發者的救星,因為它是一種 Serverless 服務,意思是你不用再為架設和維護伺服器煩惱了。對於每天都忙得焦頭爛額的開發者來說,產品開發已經夠讓人抓狂了,還要處理伺服器的設定和維運(e.g. OS、Network、機器管理、防火牆),想想就
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
本篇文章將介紹如何使用Lambda建立Pre-Sign URL 的簡單範例,讓讀者瞭解如何自行發揮。
Thumbnail
本篇使用 AWS Lambda 結合 Amazon Bedrock 和 Claude 3 來分析儲存在 Amazon S3 中的圖像的示範
Thumbnail
實踐AWS中使用Lambda來負責登入簽核及與OpenAI API溝通,並利用S3容器託管一個靜態網頁做為前端
Thumbnail
本文介紹了使用PyMuPDF,AWS Lambda和Docker將PDF文件轉換為圖像的高效方法。同時提到了在執行過程中可能會遇到的部分問題和解決方法。
Thumbnail
大家好,我是woody,是一名料理創作者,非常努力地在嘗試將複雜的料理簡單化,讓大家也可以體驗到料理的樂趣而我也非常享受料理的過程,今天想跟大家聊聊,除了料理本身,料理創作背後的成本。
Thumbnail
哈囉~很久沒跟各位自我介紹一下了~ 大家好~我是爺恩 我是一名圖文插畫家,有追蹤我一段時間的應該有發現爺恩這個品牌經營了好像.....快五年了(汗)時間過得真快!隨著時間過去,創作這件事好像變得更忙碌了,也很開心跟很多厲害的創作者以及廠商互相合作幫忙,還有最重要的是大家的支持與陪伴🥹。  
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
2024/12/24高技補充: 今天高技被傳小作文,內文:高技目前有測試問題還在debug (良率SYE>FHT) GCE測試過了,目前等整機測試預計要20-30K/月 研究員評論(已聯繫過高技發言人、智邦業內前輩) 1. ASIC UBB驗證過的順序為生益電->高技->金像電,高
Thumbnail
在架設Bubble.io應用時,主流上都是串接Stripe,但是Stripe必須使用(截至2024/08)美國銀行帳戶。因此,我們示範如何串接綠界金流,並搭配aws lambda做到快速金流設定。 註:筆者一開始有考慮使用Paypal,但考量到金流嚴謹性以及Bubble天生不適合unit test
Thumbnail
AWS Lambda是? AWS Lambda 就像是開發者的救星,因為它是一種 Serverless 服務,意思是你不用再為架設和維護伺服器煩惱了。對於每天都忙得焦頭爛額的開發者來說,產品開發已經夠讓人抓狂了,還要處理伺服器的設定和維運(e.g. OS、Network、機器管理、防火牆),想想就
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
本篇文章將介紹如何使用Lambda建立Pre-Sign URL 的簡單範例,讓讀者瞭解如何自行發揮。
Thumbnail
本篇使用 AWS Lambda 結合 Amazon Bedrock 和 Claude 3 來分析儲存在 Amazon S3 中的圖像的示範
Thumbnail
實踐AWS中使用Lambda來負責登入簽核及與OpenAI API溝通,並利用S3容器託管一個靜態網頁做為前端
Thumbnail
本文介紹了使用PyMuPDF,AWS Lambda和Docker將PDF文件轉換為圖像的高效方法。同時提到了在執行過程中可能會遇到的部分問題和解決方法。