本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立 Lambda Web 函數
若要使用 Lambda Web Functions 部署應用程式,您可以使用修訂版和端點建立 Web Function 來接收流量。主控台和 aws lambda-web deploy命令可以建立 Web 函數、其第一個修訂版,以及其第一個端點。修訂是您程式碼和組態的不可變快照。端點會將請求路由到作用中的修訂。如需這些資源的詳細資訊,請參閱 核心概念。本主題說明如何使用 Lambda 主控台和 建立它們 AWS CLI。
先決條件
開始前,請確定您具有下列項目:
-
AWS 帳戶。若要建立註冊選項,請參閱《AWS 帳戶管理參考指南》中的比較註冊選項。
-
管理 Web 函數、將執行角色傳遞給 Lambda (
iam:PassRole),以及建立或使用支援 Amazon S3 和 IAM 資源的許可。
主控台會建立或重複使用 Web 函數所需的資源,包括執行角色和程式碼的 Amazon S3 儲存貯體。
若要遵循 AWS CLI 程序,您也需要:
-
AWS CLI 第 2 版,在包含
aws lambda-web命令的版本中。若要檢查,請執行aws lambda-web help。如果您 AWS CLI 使用官方安裝程式或安裝指令碼安裝 ,請執行aws update以更新至最新版本。否則,請參閱安裝或更新至最新版本的 AWS CLI。 -
AWS 登入資料和為 AWS 區域 設定的 AWS CLI。
-
對於
aws lambda-web deploy,在部署儲存貯s3:ListBucket體上呼叫sts:GetCallerIdentity的許可,以及在其物件s3:GetObjectVersion上呼叫s3:GetObject、s3:PutObject和 的許可。 -
如果
aws lambda-web deploy建立預設資源,即呼叫iam:GetRole、iam:CreateRole、iam:PutRolePolicy、s3:PutBucketPolicy、s3:CreateBucket和 的許可s3:PutBucketVersioning。 -
(選用) Node.js 24 或更新版本以進行本機開發。若要安裝 Node.js,請參閱 Node.js 網站上的下載Node.js
。
建立 Web 函數 (主控台)
使用 Lambda 主控台建立 Web 函數、其第一個修訂版,以及其第一個接收流量的端點。
建立 Web 函數和端點 (主控台)
-
開啟位於 https://https://console.aws.amazon.com/lambda/
的 Lambda 主控台。 -
在導覽窗格中,選擇 Web 函數。
-
選擇建立 Web 函數。
-
在基本資訊下,請執行下列動作:
-
在函數名稱中,輸入 Web 函數的名稱。
-
針對執行期,保留預設執行期。
-
對於程式碼來源,請讓 Hello World 範本從預先設定的範例應用程式開始。若要改為部署您自己的程式碼,請選擇上傳 ZIP 檔案或 Amazon S3。
-
-
在端點組態下,執行下列動作:
-
在端點名稱中,輸入端點的名稱。
-
對於類型,請保留 Home-Region。主區域端點會在單一區域中執行,使其成為第一個 Web 函數最簡單的組態。如需多區域選項,請參閱 Lambda Web 函數端點。
注意
您無法在建立後變更端點類型。
-
針對身分驗證類型,選擇應用程式受管身分驗證。使用此選項,Lambda 會將所有請求轉送到您的應用程式,因此您的應用程式會處理身分驗證。若要改為限制存取,請選擇需要呼叫者簽署請求的 IAM 身分驗證。對
HomeRegion和PerRegion端點的請求使用 AWS Signature 第 4 版 (SigV4)。對MultiRegion端點的請求使用 Signature 第 4a 版 (SigV4a)。如需詳細資訊,請參閱Lambda Web 函數端點存取控制。 -
對於自動部署,請保留最新修訂。在此模式下,Lambda 會在流量變成作用中之後,自動將所有流量路由到每個新修訂。對於具有修訂權重的手動流量控制,請選擇已停用。如需詳細資訊,請參閱部署模式。
-
-
(選用) 展開其他組態以覆寫預設設定。根據預設,Lambda 會建立執行角色,其具有將日誌上傳至 Amazon CloudWatch 的許可,以及帳戶中的 Amazon S3 儲存貯體來存放程式碼。在本節中,您可以改為選擇現有的 IAM 角色或您自己的 Amazon S3 儲存貯體,也可以使用客戶受管金鑰、每個環境的並行上限、環境變數和標籤來設定加密。
-
選擇建立 Web 函數。
當您選擇建立 Web 函數時,Lambda 會建立 Web 函數資源及其第一個修訂版,並同時建立端點。修訂會在 Lambda 下載您的程式碼並從中準備程式碼成品,然後轉換為作用中時,以待定狀態開始。端點也會以待定狀態開始。Web 函數、其修訂版及其端點會各自獨立進行這些狀態。如需修訂和生命週期狀態的詳細資訊,請參閱 核心概念。
端點會在達到作用中時開始服務流量,並且有要路由的作用中修訂。若要尋找端點的網域名稱,請在函數詳細資訊頁面上,選擇端點索引標籤,然後選擇端點。若要在您自己的網域上提供應用程式,請將 Amazon CloudFront 分佈放在端點前面。如需端點類型和網域名稱的詳細資訊,請參閱 Lambda Web 函數端點。
若要確認您的應用程式正在服務流量,請將請求傳送至網域名稱。由於您選擇了應用程式受管身分驗證,因此無需簽署即可傳送純請求。
curl https://your-endpoint-domain-name/
成功的回應表示您的 Web 函數正在接收流量,而您的應用程式正在處理請求。
建立 Web 函數 (AWS CLI)
從終端機建立和部署 Web 函數。入門命令會產生小型 Node.js HTTP 伺服器、部署它,並傳回 HTTPS 端點 URL。
部署和測試您的 Web 函數
部署和測試入門 Web 函數
-
執行以下命令:
aws lambda-web deploy --name my-web-app --hello-world--hello-world會將入門檔案寫入./my-web-app,如果目錄不存在,則建立該目錄。啟動者包含server.ts、TypeScript HTTP 伺服器,以及README.md、package.json和AGENTS.md。 -
部署完成時,請從輸出複製端點 URL。URL 看起來類似以下內容:
https://bcdfghjklmnpqrst.b7t.lambda-web.us-east-1.on.aws -
將請求傳送至您在上一個步驟中複製的端點 URL。將
endpoint-url取代為該 URL:curlendpoint-url啟動者會傳回類似以下的回應:
{"message":"Hello from Lambda Web!","path":"/"}
根據預設,啟動者端點接受沒有身分驗證的請求。若要要求 IAM 授權,請新增 --auth-type IamAuth。如需控制端點存取的資訊,請參閱 Lambda Web 函數端點存取控制。
命令建立的內容
在第一個部署上, 命令:
-
為部署套件建立或重複使用已啟用版本控制的 Amazon S3 儲存貯體。
-
建立或重複使用具有 Amazon CloudWatch Logs 許可的 IAM 執行角色。
-
建立 Web 函數及其第一個修訂版。
-
建立名為 的
HomeRegion端點dev,並等待它變成Active。若要使用不同的名稱,請新增--endpoint-name。
Web 函數包含程式碼和組態的不可變修訂。稍後部署時, 命令會建立另一個修訂。dev 端點使用 LatestRevision 模式,並在啟用後提供修訂。
部署變更
編輯入門應用程式後,請執行:
aws lambda-web deploy \ --name my-web-app \ --code ./my-web-app
執行此命令會上傳您更新的套件、建立修訂,並等待修訂變成 Active。dev 端點已autoDeploymentMode設定為 LatestRevision並自動提供修訂。其 URL 保持不變。
若要部署您自己的應用程式而非啟動者,請將其目錄傳遞至 --code。您的伺服器必須接聽AWS_LAMBDA_HTTP_ENDPOINT環境變數中的主機和連接埠。根據預設,執行時間index.js會在部署套件的根目錄載入。若要使用不同的項目檔案,請設定 AWS_LAMBDA_NODEJS_ENTRYPOINT 環境變數。Lambda 不會確認您的伺服器在建立修訂時開始接聽。因此,Active即使請求失敗,修訂和端點也會顯示 。如需詳細資訊,請參閱Lambda Web 函數執行時間。
使用現有 AWS 資源
如果您已管理 Amazon S3 儲存貯體或 IAM 執行角色,請使用下列命令來重複使用這些資源,而不是建立預設值。儲存貯體必須已啟用版本控制,以及授予 Lambda 服務主體 (lambda.amazonaws.com) s3:GetObject和 的儲存貯體政策s3:GetObjectVersion。命令不會變更您指定的儲存貯體組態。如需儲存貯體需求,請參閱 Lambda 的儲存貯體政策。將範例資源值取代為您自己的值。
aws lambda-web deploy \ --name my-web-app \ --code ./my-web-app \ --bucket-name amzn-s3-demo-bucket \ --execution-role-arn arn:aws:iam::111122223333:role/my-web-app-execution-role
執行角色必須允許 Lambda 擔任它,而且必須授予應用程式所需的許可。如需詳細資訊,請參閱執行角色。
您可以省略任一資源選項,讓 deploy建立預設值。當 在沒有 的情況下deploy建立 Web 函數--hello-world,或新增端點時,會要求您按 Enter 鍵確認。在指令碼或 CI/CD 管道中,新增 --create 以在沒有提示的情況下進行確認。
直接使用 API 命令
deploy 命令會將您的程式碼上傳至 Amazon S3,並為您建立 Web 函數、修訂和端點。若要自行控制每個步驟,請使用映射至 API 操作的 AWS CLI 命令,例如 create-web-function、 create-web-function-revision和 update-web-function-endpoint。在下列命令中,將每個使用者輸入預留位置替換為您自己的資訊。
使用 API 命令建立 Web 函數 (AWS CLI)
-
從應用程式目錄建立 .zip 部署套件,您的項目檔案位於套件的根目錄。將套件上傳至符合 中需求的 Amazon S3 儲存貯體先決條件。下列命令會建立套件,並使用 AWS CLI 來上傳套件。
cdmy-appzip -r ../my-app.zip . aws s3 cp ../my-app.zip s3://amzn-s3-demo-bucket/my-app.zip -
使用下列 AWS CLI 命令建立 Web 函數及其第一個修訂版和端點。在 中
revisionConfig,buildConfig指定程式碼位置和執行時間,並serviceConfig指定執行角色。endpointConfig屬性定義端點。aws lambda-web create-web-function \ --function-namemy-web-app\ --revision-config '{ "buildConfig": { "codeConfig": { "s3Object": { "bucket": "amzn-s3-demo-bucket", "key": "my-app.zip" } }, "runtimeConfig": { "runtime": "nodejs24.x" } }, "serviceConfig": { "executionRoleArn": "arn:aws:iam::111122223333:role/my-web-app-execution-role" } }' \ --endpoint-config '{ "endpointName": "my-endpoint", "endpointType": "HomeRegion", "authType": "ApplicationManaged", "autoDeploymentMode": "LatestRevision" }'autoDeploymentMode屬性是選用屬性。如果您省略它,預設值為Disabled,端點不會自動將流量路由到新的修訂。在回應中記下revisionId修訂版的 。 -
等到修訂版為
Active。將rev-abc12取代為上一個步驟的修訂 ID。aws lambda-web wait web-function-revision-active \ --function-namemy-web-app\ --revision-idrev-abc12 -
取得端點的詳細資訊。
aws lambda-web get-web-function-endpoint \ --function-namemy-web-app\ --endpoint-namemy-endpoint當端點的
state為 時Active,將請求傳送到其domainName。回應看起來如下摘錄。{ "endpointName": "my-endpoint", "endpointType": "HomeRegion", "domainName": "bcdfghjklmnpqrst.b7t.lambda-web.us-east-1.on.aws", "authType": "ApplicationManaged", "autoDeploymentMode": "LatestRevision", "state": "Active", "updateStatus": "Successful" }
使用 API 命令部署變更 (AWS CLI)
-
上傳新套件並建立修訂。修訂是完整的快照,因此
serviceConfig每次都要傳遞完整的buildConfig和 。aws s3 cp ../my-app.zip s3://amzn-s3-demo-bucket/my-app.zip aws lambda-web create-web-function-revision \ --function-namemy-web-app\ --build-config '{ "codeConfig": { "s3Object": { "bucket": "amzn-s3-demo-bucket", "key": "my-app.zip" } }, "runtimeConfig": { "runtime": "nodejs24.x" } }' \ --service-config '{ "executionRoleArn": "arn:aws:iam::111122223333:role/my-web-app-execution-role" }'由於端點已
autoDeploymentMode設為LatestRevision,因此會在修訂版變成 後將所有流量路由至新修訂版Active。如果您將autoDeploymentMode設定為Disabled,則會改為使用update-web-function-endpoint和 修訂權重來路由流量。如需詳細資訊,請參閱部署模式。
清除
當您不再需要 Web 函數時,請將其刪除:
aws lambda-web delete-web-function --function-name my-web-app
此命令也會刪除 Web 函數的端點和修訂。它不會刪除deploy建立或使用的資源:IAM 執行角色 (awscli-lambdaweb-my-web-app預設)、Amazon S3 儲存貯lambda-web/my-web-app/體中的 部署套件 (awscli-lambdaweb-預設)、包括非目前物件版本,或 Web 函數的 Amazon CloudWatch Logs 日誌群組。只有在您不再需要這些資源時,才能分別刪除這些資源。受管 Amazon S3 儲存貯體可由相同 AWS 帳戶 和 區域中的其他部署共用。account-id-region-an