での を使用した Lambda 関数 AWS CDK のデプロイ AWS CloudShell - AWS CloudShell

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

での を使用した Lambda 関数 AWS CDK のデプロイ AWS CloudShell

このチュートリアルでは、 の を使用して Lambda 関数をアカウントにデプロイする方法を示します AWS Cloud Development Kit (AWS CDK) CloudShell。

前提条件

  • で使用するアカウントをブートストラップします AWS CDK。を使用したブートストラップの詳細については AWS CDK、「 AWS CDK v2 デベロッパーガイド」の「ブートストラップ」を参照してください。アカウントをブートストラップしていない場合は、 cdk bootstrapで を実行できます CloudShell。

  • アカウントにリソースをデプロイするための適切なアクセス許可があることを確認してください。管理者権限が推奨されます。

チュートリアルの手順

次のチュートリアルでは、 の を使用して Docker コンテナベースの Lambda 関数 AWS CDK をデプロイする方法について説明します CloudShell。

  1. ホームディレクトリに新しいフォルダを作成します。

    mkdir ~/docker-cdk-tutorial
  2. 作成したフォルダに移動します。

    cd ~/docker-cdk-tutorial
  3. AWS CDK 依存関係をローカルにインストールします。

    npm install aws-cdk aws-cdk-lib
    AWS CDK 依存関係のインストールに使用されるコマンドのイメージ。
  4. 作成したフォルダにスケルトン 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