使用 AWS CDK 中的 部署 Lambda 函數 AWS CloudShell - AWS CloudShell

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AWS CDK 中的 部署 Lambda 函數 AWS CloudShell

本教學課程示範如何使用 AWS Cloud Development Kit (AWS CDK) 中的 將 Lambda 函數部署至您的帳戶 CloudShell。

必要條件

  • 啟動您的帳戶以搭配 使用 AWS CDK。如需使用 啟動strapping 的相關資訊 AWS CDK,請參閱 AWS CDK v2 開發人員指南 中的啟動。如果您尚未啟動帳戶,可以在 cdk bootstrap中執行 CloudShell。

  • 請確定您擁有將資源部署至 帳戶的適當許可。建議使用管理員許可。

教學程序

下列教學課程概述如何使用 AWS CDK 中的 部署 Docker 容器型 Lambda 函數 CloudShell。

  1. 在主目錄中建立新資料夾。

    mkdir ~/docker-cdk-tutorial
  2. 導覽至您建立的資料夾。

    cd ~/docker-cdk-tutorial
  3. 在本機安裝 AWS CDK 相依性。

    npm install aws-cdk aws-cdk-lib
    用於安裝 AWS CDK 相依性之命令的影像。
  4. 在您建立的資料夾中建立 skeleton AWS CDK 專案。

    touch cdk.json mkdir lib touch lib/docker-tutorial.js lib/Dockerfile lib/hello.js
  5. 使用文字編輯器,例如 nano cdk.json,開啟 檔案並將下列內容貼到其中。

    { "app": "node lib/docker-tutorial.js" }
  6. 開啟 lib/docker-tutorial.js 檔案,並將下列內容貼到其中。

    // this file defines the CDK constructs we want to deploy const { App, Stack } = require('aws-cdk-lib'); const { DockerImageFunction, DockerImageCode } = require('aws-cdk-lib/aws-lambda'); const path = require('path'); // create an application const app = new App(); // define stack class DockerTutorialStack extends Stack { constructor(scope, id, props) { super(scope, id, props); // define lambda that uses a Docker container const dockerfileDir = path.join(__dirname); new DockerImageFunction(this, 'DockerTutorialFunction', { code: DockerImageCode.fromImageAsset(dockerfileDir), functionName: 'DockerTutorialFunction', }); } } // instantiate stack new DockerTutorialStack(app, 'DockerTutorialStack');
  7. 開啟 lib/Dockerfile,並將下列內容貼到其中。

    # Use a NodeJS 20.x runtime FROM public.ecr.aws/lambda/nodejs:20 # Copy the function code to the LAMBDA_TASK_ROOT directory # This environment variable is provided by the lambda base image COPY hello.js ${LAMBDA_TASK_ROOT} # Set the CMD to the function handler CMD [ "hello.handler" ]
  8. 開啟 lib/hello.js 檔案,並將下列內容貼到其中。

    // define the handler exports.handler = async (event) => { // simply return a friendly success response const response = { statusCode: 200, body: JSON.stringify('Hello, World!'), }; return response; };
  9. 使用 AWS CDK CLI 合成專案並部署 資源。您必須啟動您的帳戶。

    npx cdk synth npx cdk deploy --require-approval never
    使用 合成專案並部署 資源的命令 AWS CDK CLI映像。
  10. 叫用 Lambda 函數來確認和驗證。

    aws lambda invoke --function-name DockerTutorialFunction out.json jq . out.json
    用來叫用 Lambda 函數的命令映像。

    您現在已成功使用 部署 Docker 容器型 Lambda 函數 AWS CDK。如需 的詳細資訊 AWS CDK,請參閱 AWS CDK v2 開發人員指南 。如果您在嘗試完成本教學課程時遇到錯誤或遇到問題,請參閱本指南的疑難排解一節以取得協助。

清除

您現在已成功使用 部署 Docker 容器型 Lambda 函數 AWS CDK。在 AWS CDK 專案中,執行下列命令來刪除相關聯的資源。系統將提示您確認刪除。

  • npx cdk destroy DockerTutorialStack
  • 若要從 AWS CloudShell 環境中移除您在本教學課程中建立的檔案和資源,請執行下列命令。

    cd ~ rm -rf ~/docker-cli-tutorial