簡體   English   中英

如何使用適用於AWS Lambda的無服務器部署來部署環境變量

[英]How to deploy environment variable using serverless deploy for AWS lambda

我是AWS Lambda的新手,我正在使用無服務部署來部署在serverless.yml文件中聲明的lambda函數。 在該文件中,我編寫了一個lambda函數,該函數可以正常運行,但問題是我提供的任何環境變量在該lambda函數的控制台中均不可用。 我可能在犯一些小錯誤,或者在部署環境變量時應該使用其他語法。 我可以轉到控制台中的lambda函數並手動添加環境變量。 但是我的疑問是,在通過serverless deploy進行部署時,我們可以做到嗎?

您可以使用AWS Lambda提供的版本和別名

您可以創建同一lambda函數的不同版本,並為其指定別名。 就像當您推送lambda代碼時一樣-創建一個版本(例如5)-創建一個別名(例如TEST)。 如果確定已准備好投入生產,請創建一個版本(或選擇一個現有版本並命名(例如PROD)。

現在,每當您的lambda函數執行時,它就會給出包含別名的lambda ARN ,這樣您就可以知道執行了哪個別名(在context.invokedFunctionArn中),即可以用作環境變量。 在調用函數時,您可以從調用代碼中提及要執行的函數。

let thisARN = context.invokedFunctionArn;

// Get the last string in ARN - It's either function name or the alias name
let thisAlias = thisARN.split(":").pop();

現在,無論何時部署新代碼,只需將別名指向該版本。 您可以為此使用AWS控制台或CLI。

看看這個lambda版本和別名

要直接部署到您的別名(PROD),可以執行以下操作-

    aws lambda update-alias \
    --region region \
    --function-name helloworld \
    --function-version 2 \
    --name PROD
serverless deploy 

無服務器部署在任何階段都可以很好地部署,也可以在給定階段部署環境變量,我的案例環境變量沒有部署yaml文件中的縮進問題,甚至無服務器部署命令也沒有拋出錯誤,它正在部署函數,但環境變量卻沒有已部署

在yaml文件中,我們可以像這樣聲明要部署的階段

provider:
name: aws
runtime: nodejs6.10
stage: dev
region: eu-west-2

希望如果有人遇到類似問題,這會有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM