これは v2 AWS CDK デベロッパーガイドです。古い CDKv1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS CDK プロジェクト
AWS Cloud Development Kit (AWS CDK) プロジェクトは、CDK コードを含むファイルおよびフォルダを表します。内容はプログラミング言語によって異なります。
AWS CDK プロジェクトは手動で作成するか、AWS CDK コマンドラインインターフェイス (AWS CDK CLI) cdk init
コマンドを使用して作成することができます。このトピックでは、AWS CDK CLI によって作成されたファイルおよびフォルダのプロジェクト構造および命名規則について説明します。ニーズに合わせて CDK プロジェクトをカスタマイズおよび整理できます。
注記
AWS CDK CLI によって作成されたプロジェクト構造は、時間の経過とともにバージョンによって異なる場合があります。
ユニバーサルファイルとフォルダ
- .git
-
git
がインストールされている場合、AWS CDK CLI はプロジェクトの Git リポジトリを自動的に初期化します。.git
ディレクトリには、リポジトリに関する情報が含まれています。 - .gitignore
-
無視するファイルおよびフォルダを指定するため、Git によって使用されるテキストファイル。
- README.md
-
AWS CDK プロジェクトを管理するため、基本的なガイダンスおよび重要な情報を提供するテキストファイル。必要に応じてこのファイルを変更し、CDK プロジェクトに関する重要な情報を文書化します。
- cdk.json
-
AWS CDK の設定ファイル。このファイルは、アプリの実行方法に関する AWS CDK CLI への指示を提供します。
言語固有のファイルとフォルダ
次のファイルおよびフォルダは、サポートされているプログラミング言語ごとに一意です。
- TypeScript
-
次の内容は、
cdk init --language typescript
コマンドを使用してmy-cdk-ts-project
ディレクトリで作成されたプロジェクトの例です。my-cdk-ts-project ├── .git ├── .gitignore ├── .npmignore ├── README.md ├── bin │ └── my-cdk-ts-project.ts ├── cdk.json ├── jest.config.js ├── lib │ └── my-cdk-ts-project-stack.ts ├── node_modules ├── package-lock.json ├── package.json ├── test │ └── my-cdk-ts-project.test.ts └── tsconfig.json
- .npmignore
-
パッケージを npm レジストリに発行するときに無視するファイルおよびフォルダを指定するファイル。このファイルは
.gitignore
に似ていますが、npm パッケージに特化しています。 - bin/my-cdk-ts-project.ts
-
アプリケーションファイルは CDK アプリを定義します。CDK プロジェクトには、1 つ以上のアプリケーションファイルを含めることができます。アプリケーションファイルは
bin
フォルダに保存されます。次の内容は、CDK アプリを定義する基本的なアプリケーションファイルの例です。
#!/usr/bin/env node import 'source-map-support/register'; import * as cdk from 'aws-cdk-lib'; import { MyCdkTsProjectStack } from '../lib/my-cdk-ts-project-stack'; const app = new cdk.App(); new MyCdkTsProjectStack(app, 'MyCdkTsProjectStack');
- jest.config.js
-
Jest の設定ファイル。Jest は人気な JavaScript テストフレームワークです。
- lib/my-cdk-ts-project-stack.ts
-
スタックファイルは CDK スタックを定義します。スタック内では、コンストラクトを使用して AWS リソースおよびプロパティを定義します。
次の内容は、CDK スタックを定義する基本的なスタックファイルの例です。
import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; export class MyCdkTsProjectStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // code that defines your resources and properties go here } }
- node_modules
-
プロジェクトの依存関係を含む Node.js プロジェクト内の共通フォルダ。
- package-lock.json
-
package.json
ファイルと連携して依存関係のバージョンを管理するメタデータファイル。 - package.json
-
Node.js プロジェクトで一般的に使用されるメタデータファイル。このファイルには、プロジェクト名、スクリプト定義、依存関係、その他のインポートプロジェクトレベルの情報など、CDK プロジェクトに関する情報が含まれています。
- test/my-cdk-ts-project.test.ts
-
CDK プロジェクトのテストを整理するため、テストフォルダが作成されます。サンプルテストファイルも作成されます。
テストを実行する前に TypeScript にテストを記述し、Jest を使用して TypeScript コードをコンパイルできます。
- tsconfig.json
-
コンパイラオプションおよびプロジェクト設定を指定する TypeScript プロジェクトで使用される設定ファイル。
- JavaScript
-
次の内容は、
cdk init --language javascript
コマンドを使用してmy-cdk-js-project
ディレクトリで作成されたプロジェクトの例です。my-cdk-js-project ├── .git ├── .gitignore ├── .npmignore ├── README.md ├── bin │ └── my-cdk-js-project.js ├── cdk.json ├── jest.config.js ├── lib │ └── my-cdk-js-project-stack.js ├── node_modules ├── package-lock.json ├── package.json └── test └── my-cdk-js-project.test.js
- .npmignore
-
パッケージを npm レジストリに発行するときに無視するファイルおよびフォルダを指定するファイル。このファイルは
.gitignore
に似ていますが、npm パッケージに特化しています。 - bin/my-cdk-js-project.js
-
アプリケーションファイルは CDK アプリを定義します。CDK プロジェクトには、1 つ以上のアプリケーションファイルを含めることができます。アプリケーションファイルは
bin
フォルダに保存されます。次の内容は、CDK アプリを定義する基本的なアプリケーションファイルの例です。
#!/usr/bin/env node const cdk = require('aws-cdk-lib'); const { MyCdkJsProjectStack } = require('../lib/my-cdk-js-project-stack'); const app = new cdk.App(); new MyCdkJsProjectStack(app, 'MyCdkJsProjectStack');
- jest.config.js
-
Jest の設定ファイル。Jest は人気な JavaScript テストフレームワークです。
- lib/my-cdk-js-project-stack.js
-
スタックファイルは CDK スタックを定義します。スタック内では、コンストラクトを使用して AWS リソースおよびプロパティを定義します。
次の内容は、CDK スタックを定義する基本的なスタックファイルの例です。
const { Stack, Duration } = require('aws-cdk-lib'); class MyCdkJsProjectStack extends Stack { constructor(scope, id, props) { super(scope, id, props); // code that defines your resources and properties go here } } module.exports = { MyCdkJsProjectStack }
- node_modules
-
プロジェクトの依存関係を含む Node.js プロジェクト内の共通フォルダ。
- package-lock.json
-
package.json
ファイルと連携して依存関係のバージョンを管理するメタデータファイル。 - package.json
-
Node.js プロジェクトで一般的に使用されるメタデータファイル。このファイルには、プロジェクト名、スクリプト定義、依存関係、その他のインポートプロジェクトレベルの情報など、CDK プロジェクトに関する情報が含まれています。
- test/my-cdk-js-project.test.js
-
CDK プロジェクトのテストを整理するため、テストフォルダが作成されます。サンプルテストファイルも作成されます。
テストを実行する前に JavaScript にテストを記述し、Jest を使用して JavaScript コードをコンパイルできます。
- Python
-
次の内容は、
cdk init --language python
コマンドを使用してmy-cdk-py-project
ディレクトリで作成されたプロジェクトの例です。my-cdk-py-project ├── .git ├── .gitignore ├── .venv ├── README.md ├── app.py ├── cdk.json ├── my_cdk_py_project │ ├── __init__.py │ └── my_cdk_py_project_stack.py ├── requirements-dev.txt ├── requirements.txt ├── source.bat └── tests ├── __init__.py └── unit
- .venv
-
CDK CLI は、プロジェクトの仮想環境を自動的に作成します。
.venv
ディレクトリはこの仮想環境を参照します。 - app.py
-
アプリケーションファイルは CDK アプリを定義します。CDK プロジェクトには、1 つ以上のアプリケーションファイルを含めることができます。
次の内容は、CDK アプリを定義する基本的なアプリケーションファイルの例です。
#!/usr/bin/env python3 import os import aws_cdk as cdk from my_cdk_py_project.my_cdk_py_project_stack import MyCdkPyProjectStack app = cdk.App() MyCdkPyProjectStack(app, "MyCdkPyProjectStack") app.synth()
- my_cdk_py_project
-
スタックファイルが含まれまるスタックファイル。CDK CLI はこちらで次のものを作成します。
-
__init__.py
– 空の Python パッケージ定義ファイル。 -
my_cdk_py_project
– CDK スタックを定義するファイル。次に、コンストラクトを使用してスタック内の AWS リソースおよびプロパティを定義します。
次の内容はスタックファイルの例です。
from aws_cdk import Stack from constructs import Construct class MyCdkPyProjectStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # code that defines your resources and properties go here
-
- requirements-dev.txt
-
requirements.txt
に似ていますが、本番ではなくて開発目的専用に依存関係を管理するために使用されます。 - requirements.txt
-
プロジェクトの依存関係を指定および管理するため、Python プロジェクトで使用される一般的なファイル。
- source.bat
-
Python 仮想環境のセットアップに使用される Windows のバッチファイル。
- テスト
-
CDK プロジェクト用のテストを含むディレクトリ。
次の内容はユニットテストの例です。
import aws_cdk as core import aws_cdk.assertions as assertions from my_cdk_py_project.my_cdk_py_project_stack import MyCdkPyProjectStack def test_sqs_queue_created(): app = core.App() stack = MyCdkPyProjectStack(app, "my-cdk-py-project") template = assertions.Template.from_stack(stack) template.has_resource_properties("AWS::SQS::Queue", { "VisibilityTimeout": 300 })
- Java
-
次の内容は、
cdk init --language java
コマンドを使用してmy-cdk-java-project
ディレクトリで作成されたプロジェクトの例です。my-cdk-java-project ├── .git ├── .gitignore ├── README.md ├── cdk.json ├── pom.xml └── src ├── main └── test
- pom.xml
-
CDK プロジェクトに関する設定情報とメタデータを含むファイル。このファイルは Maven の一部です。
- src/main
-
アプリケーションおよびスタックファイルを含むディレクトリ。
次の内容は、アプリケーションファイルの例です。
package com.myorg; import software.amazon.awscdk.App; import software.amazon.awscdk.Environment; import software.amazon.awscdk.StackProps; import java.util.Arrays; public class MyCdkJavaProjectApp { public static void main(final String[] args) { App app = new App(); new MyCdkJavaProjectStack(app, "MyCdkJavaProjectStack", StackProps.builder() .build()); app.synth(); } }
次の内容は、スタックファイルの例です。
package com.myorg; import software.constructs.Construct; import software.amazon.awscdk.Stack; import software.amazon.awscdk.StackProps; public class MyCdkJavaProjectStack extends Stack { public MyCdkJavaProjectStack(final Construct scope, final String id) { this(scope, id, null); } public MyCdkJavaProjectStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); // code that defines your resources and properties go here } }
- src/test
-
テストファイルを含むディレクトリ。以下に例を示します。
package com.myorg; import software.amazon.awscdk.App; import software.amazon.awscdk.assertions.Template; import java.io.IOException; import java.util.HashMap; import org.junit.jupiter.api.Test; public class MyCdkJavaProjectTest { @Test public void testStack() throws IOException { App app = new App(); MyCdkJavaProjectStack stack = new MyCdkJavaProjectStack(app, "test"); Template template = Template.fromStack(stack); template.hasResourceProperties("AWS::SQS::Queue", new HashMap<String, Number>() {{ put("VisibilityTimeout", 300); }}); } }
- C#
-
次の内容は、
cdk init --language csharp
コマンドを使用してmy-cdk-csharp-project
ディレクトリで作成されたプロジェクトの例です。my-cdk-csharp-project ├── .git ├── .gitignore ├── README.md ├── cdk.json └── src ├── MyCdkCsharpProject └── MyCdkCsharpProject.sln
- src/MyCdkCsharpProject
-
アプリケーションおよびスタックファイルを含むディレクトリ。
次の内容は、アプリケーションファイルの例です。
using Amazon.CDK; using System; using System.Collections.Generic; using System.Linq; namespace MyCdkCsharpProject { sealed class Program { public static void Main(string[] args) { var app = new App(); new MyCdkCsharpProjectStack(app, "MyCdkCsharpProjectStack", new StackProps{}); app.Synth(); } } }
次の内容は、スタックファイルの例です。
using Amazon.CDK; using Constructs; namespace MyCdkCsharpProject { public class MyCdkCsharpProjectStack : Stack { internal MyCdkCsharpProjectStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) { // code that defines your resources and properties go here } } }
このディレクトリには、次のものも含まれています。
-
GlobalSuppressions.cs
– プロジェクト全体で特定のコンパイラ警告やエラーを抑制するために使用されるファイル。 -
.csproj
– プロジェクト設定、依存関係、ビルド設定の定義に使用される XML ベースのファイル。
-
- src/MyCdkCsharpProject.sln
-
関連プロジェクトの整理および管理に使用される Microsoft Visual Studio Solution File。
- Go
-
次の内容は、
cdk init --language go
コマンドを使用してmy-cdk-go-project
ディレクトリで作成されたプロジェクトの例です。my-cdk-go-project ├── .git ├── .gitignore ├── README.md ├── cdk.json ├── go.mod ├── my-cdk-go-project.go └── my-cdk-go-project_test.go
- go.mod
-
モジュール情報を含めて、Go プロジェクトの依存関係およびバージョニングを管理するために使用されるファイル。
- my-cdk-go-project.go
-
CDK アプリケーションおよびスタックを定義するファイル。
以下に例を示します。
package main import ( "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/constructs-go/constructs/v10" "github.com/aws/jsii-runtime-go" ) type MyCdkGoProjectStackProps struct { awscdk.StackProps } func NewMyCdkGoProjectStack(scope constructs.Construct, id string, props *MyCdkGoProjectStackProps) awscdk.Stack { var sprops awscdk.StackProps if props != nil { sprops = props.StackProps } stack := awscdk.NewStack(scope, &id, &sprops) // The code that defines your resources and properties go here return stack } func main() { defer jsii.Close() app := awscdk.NewApp(nil) NewMyCdkGoProjectStack(app, "MyCdkGoProjectStack", &MyCdkGoProjectStackProps{ awscdk.StackProps{ Env: env(), }, }) app.Synth(nil) } func env() *awscdk.Environment { return nil }
- my-cdk-go-project_test.go
-
サンプルテストを定義するファイル。
以下に例を示します。
package main import ( "testing" "github.com/aws/aws-cdk-go/awscdk/v2" "github.com/aws/aws-cdk-go/awscdk/v2/assertions" "github.com/aws/jsii-runtime-go" ) func TestMyCdkGoProjectStack(t *testing.T) { // GIVEN app := awscdk.NewApp(nil) // WHEN stack := NewMyCdkGoProjectStack(app, "MyStack", nil) // THEN template := assertions.Template_FromStack(stack, nil) template.HasResourceProperties(jsii.String("AWS::SQS::Queue"), map[string]interface{}{ "VisibilityTimeout": 300, }) }