

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

# CloudShell で を使用して Lambda 関数 AWS CDK をデプロイする
<a name="tutorial-docker-cdk-deploy"></a>

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

## 前提条件
<a name="prerequisites-docker-cdk-deploy"></a>
+  AWS CDK用にアカウントをブートストラップします。でのブートストラップの詳細については AWS CDK、「 *AWS CDK v2 デベロッパーガイド*」の[「ブートストラップ](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html)」を参照してください。アカウントをブートストラップしていない場合は、CloudShell で `cdk bootstrap` を実行できます。
+ リソースをアカウントにデプロイするための適切なアクセス許可があることを確認します。管理者アクセス許可が推奨されます。

## チュートリアルの手順
<a name="tutorial-docker-cdk-deploy-steps"></a>

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

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

   ```
   mkdir ~/docker-cdk-tutorial
   ```

1. 作成したフォルダに移動します。

   ```
   cd ~/docker-cdk-tutorial
   ```

1.  AWS CDK 依存関係をローカルにインストールします。

   ```
   npm install aws-cdk aws-cdk-lib
   ```  
![\[AWS CDK 依存関係のインストールに使用されるコマンドの画像。\]](http://docs.aws.amazon.com/ja_jp/cloudshell/latest/userguide/images/docker-cdk-tutorial%20-%201-setup.png)

1. 作成したフォルダにスケルトン AWS CDK プロジェクトを作成します。

   ```
   touch cdk.json
   mkdir lib
   touch lib/docker-tutorial.js lib/Dockerfile lib/hello.js
   ```

1. テキストエディタ (`nano cdk.json` など) を使用し、ファイルを開いて次の内容を貼り付けます。

   ```
   {
     "app": "node lib/docker-tutorial.js"
   }
   ```

1. `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');
   ```

1. `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" ]
   ```

1. `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;
   };
   ```

1.  AWS CDK CLI を使用してプロジェクトを合成し、リソースをデプロイします。アカウントをブートストラップする必要があります。

   ```
   npx cdk synth
   npx cdk deploy --require-approval never
   ```  
![\[CLI AWS CDK を使用してプロジェクトを合成し、リソースをデプロイするコマンドの画像。\]](http://docs.aws.amazon.com/ja_jp/cloudshell/latest/userguide/images/docker-cdk-tutorial%20-%203-cdk-deploy-build.png)

1. Lambda 関数を呼び出して確認および検証します。

   ```
   aws lambda invoke --function-name DockerTutorialFunction out.json
   jq . out.json
   ```  
![\[Lambda 関数の呼び出しに使用するコマンドの画像。\]](http://docs.aws.amazon.com/ja_jp/cloudshell/latest/userguide/images/docker-cdk-tutorial%20-%205-lambda-invoke.png)

   これで、 AWS CDKを使用して Docker コンテナベースの Lambda 関数を正常にデプロイしました。詳細については AWS CDK、「 [AWS CDK v2 デベロッパーガイド](https://docs.aws.amazon.com/cdk/v2/guide/hello_world.html)」を参照してください。このチュートリアルを実行しようとしてエラーや問題が発生した場合は、このガイドの「[トラブルシューティング](https://docs.aws.amazon.com/cloudshell/latest/userguide/troubleshooting.html)」セクションを参照してください。

## クリーンアップ
<a name="clean-up-docker-cdk-deploy"></a>

これで、 AWS CDKを使用して Docker コンテナベースの Lambda 関数を正常にデプロイしました。 AWS CDK プロジェクト内で次のコマンドを実行して、関連付けられたリソースを削除します。削除を確認するプロンプトが表示されます。
+ 

  ```
  npx cdk destroy DockerTutorialStack
  ```
+ このチュートリアルで作成したファイルとリソースを AWS CloudShell 環境から削除するには、次のコマンドを実行します。

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