本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在本教學課程中,您會建立格式為 .zip 封存檔的 Lambda 函數,其包含的函數 URL 端點會傳回回應串流。如需設定函數 URL 的詳細資訊,請參閱 函數 URL。
先決條件
此教學課程假設您具備基本的 Lambda 操作知識並了解 Lambda 主控台。若您尚未了解,請遵循 使用主控台建立一個 Lambda 函數 中的指示,建立您的第一個 Lambda 函數。
若要完成下列步驟,您需要 AWS CLI 版本 2。命令和預期的輸出會列在不同的區塊中:
aws --version
您應該會看到下列輸出:
aws-cli/2.13.27 Python/3.11.6 Linux/4.14.328-248.540.amzn2.x86_64 exe/x86_64.amzn.2
對於長命令,逸出字元 (\
) 用於將命令分割為多行。
在 Linux 和 macOS 上,使用您偏好的 shell 和套件軟體管理工具。
注意
在 Windows 中,作業系統的內建終端不支援您常與 Lambda 搭配使用的某些 Bash CLI 命令 (例如 zip
)。若要取得 Ubuntu 和 Bash 的 Windows 整合版本,請安裝適用於 Linux 的 Windows 子系統
建立執行角色
建立執行角色,授予您的 Lambda 函數存取 AWS 資源的許可。
若要建立執行角色
-
開啟 AWS Identity and Access Management (IAM) 主控台的 角色
頁面。 -
選擇建立角色。
-
建立具備下列屬性的角色:
-
信任的實體類型:AWS 服務
-
使用案例:Lambda
-
許可 – AWSLambdaBasicExecutionRole
-
角色名稱 -
response-streaming-role
。
-
AWSLambdaBasicExecutionRole 政策具有函數將日誌寫入 Amazon CloudWatch Logs 所需的許可。建立角色後,請記下其 Amazon Resource Name (ARN)。下一個步驟將需要此值。
建立回應串流函數 (AWS CLI)
使用 AWS Command Line Interface (AWS CLI) 建立具有函數 URL 端點的回應串流 Lambda 函數。
建立可串流回應的函數
-
將下列程式碼範例複製至名為
index.mjs
的檔案中。import util from 'util'; import stream from 'stream'; const { Readable } = stream; const pipeline = util.promisify(stream.pipeline); /* global awslambda */ export const handler = awslambda.streamifyResponse(async (event, responseStream, _context) => { const requestStream = Readable.from(Buffer.from(JSON.stringify(event))); await pipeline(requestStream, responseStream); });
-
建立部署套件。
zip function.zip index.mjs
-
使用
create-function
命令建立一個 Lambda 函數。使用上一個步驟的角色 ARN 取代--role
的值。aws lambda create-function \ --function-name
my-streaming-function
\ --runtime nodejs16.x \ --zip-file fileb://function.zip \ --handler index.handler \ --rolearn:aws:iam::123456789012:role/response-streaming-role
建立函數 URL
-
將資源型政策新增至函數,以允許存取您的函數 URL。將 的值取代
--principal
為您的 AWS 帳戶 ID。aws lambda add-permission \ --function-name my-streaming-function \ --action lambda:InvokeFunctionUrl \ --statement-id 12345 \ --principal
123456789012
\ --function-url-auth-type AWS_IAM \ --statement-id url -
使用
create-function-url-config
命令為函數建立 URL 端點。aws lambda create-function-url-config \ --function-name my-streaming-function \ --auth-type AWS_IAM \ --invoke-mode RESPONSE_STREAM
測試函數 URL 端點
透過調用函數來測試整合。可以在瀏覽器中開啟函數 URL,也可以使用 curl。
curl --request GET "
<function_url>
" --user "<key:token>
" --aws-sigv4 "aws:amz:us-east-1:lambda" --no-buffer
我們的函數 URL 使用 IAM_AUTH
驗證類型。這表示您需要使用 AWS 存取金鑰和私密金鑰簽署請求。在上一個命令中,將 取代<key:token>
為 AWS 存取金鑰 ID。出現提示時輸入您的 AWS 私密金鑰。如果您沒有 AWS 私密金鑰,您可以改為使用臨時 AWS 憑證。
清除您的資源
除非您想要保留為此教學課程建立的資源,否則您現在便可刪除。透過刪除不再使用 AWS 的資源,您可以避免不必要的費用 AWS 帳戶。
刪除執行角色
-
開啟 IAM 主控台中的 角色頁面
。 -
選取您建立的執行角色。
-
選擇刪除。
-
在文字輸入欄位中輸入角色的名稱,然後選擇 刪除 。
若要刪除 Lambda 函數
-
開啟 Lambda 主控台中的 函數頁面
。 -
選擇您建立的函數。
-
選擇 Actions (動作)、Delete (刪除)。
-
在文字輸入欄位中輸入
confirm
,然後選擇 刪除 。