建立 Lambda 函數 URL 的步驟
甚麼是 Lambda URL ?
官方定義: 函數 URL 是 Lambda 函數專用的 HTTP(S) 端點。您可以透過 Lambda 主控台或 Lambda API 建立及設定函數 URL。當您建立函數 URL 時,Lambda 會自動為您產生不重複的 URL 端點。函數 URL 一旦建立,其 URL 端點便永遠不會變更。
函數 URL 端點的格式如下:
1 | https://<url-id>.lambda-url.<region>.on.aws |
要特別注意的是,某些region並不支援使用 function URL,這時可能就要用老方法: API Gateway + Lambda Integration
存取控制
在建立 function URL 的時候可以透過 AuthType
參數,來決定 Lambda 如何對 funcion URL 的請求執行身分驗證或授權
AuthType 選項:
AWS_IAM
: 如果想讓已完成身分驗證的使用者或Role透過function URL 呼叫你的函數,就要選AWS_IAM
NONE
: Lambda 不會在呼叫函數前執行任何身分驗證,但Lambda Function 的Resource Policy永遠有效,還是必須要授予存取權,Function URL 才能接收請求。
細節可以參考這裡
如何建立 Lambda URL?
建立 Execution Role
- 建立一個具有 AWSLambdaBasicExecutionRole
權限 的 Role
1 | { |
- 註記 role ARN:
1
Role ARN: arn:aws:iam::1XXXXXXXXXXX:role/Lambda-URL_Role
建立具有函數 URL 的 Lambda 函數 (.zip 封存檔)
- Write Function Code
1 | exports.handler = async (event) => { |
- Create deployment packages
1 | zip function.zip index.js |
- 使用
create-function
命令建立一個 Lambda 函數。
1 | aws lambda create-function \ |
- 將 resource policy 新增至授予許可的函數,以允許公開存取函數 URL。
1 | aws lambda add-permission \ |
因為是測試方便所以選 NONE,但最好還是要提供AWS_IAM驗證
Return policy
- 使用
create-function-url-config
命令為函數建立 URL 端點
1 | aws lambda create-function-url-config \ |
Return Endpoint
Endpoint: https://xxxxxxxxxxuxxxxxxxxxxxxxxxxxxxxxx.lambda-url.us-east-1.on.aws/
測試端點
1 | curl 'https://abcdefg.lambda-url.us-east-1.on.aws/' \ |
建立函數 URL 的 CloudFormation
下面是用於建立 Function URL 的CFN YAML檔,可以輕鬆建立對應資源:
1 | Resources: |
建立具有函數 URL 的 Lambda 函數 (AWS SAM)
而這個是可以透過SAM 建立資源的YAML檔
1 | ProductFunction: |
Reference
[1] https://docs.aws.amazon.com/zh_tw/lambda/latest/dg/lambda-urls.html
[2] https://docs.aws.amazon.com/zh_tw/lambda/latest/dg/urls-tutorial.html
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Kevin Liu's 部落格 || Technical || Travel!
評論