依存関係の管理 - AWS Cloud Development Kit (AWS CDK) v2

これはAWS CDK v2 開発者ガイドです。古いCDK v1は2022年6月1日にメンテナンスを開始し、今後は重大なバグ修正とセキュリティパッチのみが提供されます。新機能はCDK v2専用に開発されます。CDK v1 Support は、2023 年 6 月 1 日に完全に終了します。

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

依存関係の管理

AWS CDKアプリまたはライブラリの依存関係は、パッケージ管理ツールを使用して管理されます。これらのツールは通常、アプリを開発する際に使用するプログラミング言語で使用されます。

通常、CDK は、その言語の標準または公式のパッケージ管理ツールがあればサポートし、存在しない場合は最も一般的な、または広くサポートされているパッケージ管理ツールをサポートします。他のツールも使用できる場合があります。特に、サポートされているツールと相互運用できる場合は、他のツールも使用できる場合があります。ただし、代替ツールのサポートには限りがあります。

CDK は以下のパッケージマネージャーをサポートしています。

言語 サポートされているパッケージ管理ツール
TypeScript/JavaScript NPM (ノードPackage マネージャー) または Yarn
Python PIP (Python 用Package インストーラー)
Java Maven (メイヴン)
C# NuGet
Go Go モジュール
注記

によって生成されるプロジェクトは、CDKcdk init コアライブラリと安定版コンストラクトの依存関係を指定します。

このトピックの残りの部分では、AWS CDK各言語での依存関係の使用について詳しく説明します。

TypeScript と JavaScript

TypeScript および JavaScript CDK プロジェクトでは、package.json依存関係はプロジェクトのメインディレクトリで指定されます。AWS CDKコアモジュール (すべての安定版構成を含む) は単一の NPMaws-cdk-lib パッケージに入っています。APIがまだ改良されていない不安定なモジュールは、独自のモジュールで配布されます。さらに、constructconstructs基本クラスとサポートコードはモジュール内にあります。

ヒント

を使用してパッケージをインストールするとnpm install、NPMpackage.json がそのパッケージを自動的に記録します。

必要に応じて、NPM の代わりに Yarn を使用することもできます。ただし、CDK は Yarn 2 plug-and-play のデフォルトモードである Yarn のモードをサポートしていません。この機能をオフにするには、.yarnrc.ymlプロジェクトのファイルに以下を追加してください。

nodeLinker: node-modules

アプリケーション

以下に示しているのは、package.jsonが生成した例ですcdk init --language typescript。 JavaScript で生成されたファイルも同様ですが、 TypeScript関連するエントリがないだけです。

{ "name": "my-package", "version": "0.1.0", "bin": { "my-package": "bin/my-package.js" }, "scripts": { "build": "tsc", "watch": "tsc -w", "test": "jest", "cdk": "cdk" }, "devDependencies": { "@types/jest": "^26.0.10", "@types/node": "10.17.27", "jest": "^26.4.2", "ts-jest": "^26.2.0", "aws-cdk": "2.16.0", "ts-node": "^9.0.0", "typescript": "~3.9.7" }, "dependencies": { "aws-cdk-lib": "2.16.0", "constructs": "^10.0.0", "source-map-support": "^0.5.16" } }

デプロイ可能な CDK アプリについては、aws-cdk-libdependenciesのセクションで指定する必要がありますpackage.json。キャレット (^) バージョン番号指定子を使用すると、同じメジャーバージョン内にある限り、指定されたバージョンよりも新しいバージョンを受け入れることを示すことができます。

API が変更される可能性のある alpha Construct ライブラリモジュールの正確なバージョンを指定してください。これらのモジュールの新しいバージョンでは API が変更され、アプリが機能しなくなる可能性があるため、^ や ~ は使用しないでください。

devDependenciesのセクションで、アプリのテストに必要なライブラリとツールのバージョン (jestテストフレームワークなど) を指定しますpackage.json。オプションで、^ を使用して、新しい互換バージョンも受け入れられるように指定できます。

ライブラリーの構築

構成ライブラリを開発する場合は、package.json次のサンプルファイルに示すように、peerDependenciesdevDependenciesとセクションを組み合わせて依存関係を指定します。

{ "name": "my-package", "version": "0.0.1", "peerDependencies": { "aws-cdk-lib": "^2.14.0", "@aws-cdk/aws-appsync-alpha": "2.10.0-alpha", "constructs": "^10.0.0" }, "devDependencies": { "aws-cdk-lib": "2.14.0", "@aws-cdk/aws-appsync-alpha": "2.10.0-alpha", "constructs": "10.0.0", "jsii": "^1.50.0", "aws-cdk": "^2.14.0" } }

ではpeerDependencies、キャレット (^) を使用して、aws-cdk-libライブラリが使用するバージョンのうち最も低いバージョンを指定します。これにより、ライブラリのさまざまな CDK バージョンとの互換性が最大化されます。API が変更される可能性のある alpha Construct ライブラリモジュールの正確なバージョンを指定してください。peerDependenciesを使用すると、node_modulesツリーにはすべての CDK ライブラリのコピーが 1 つだけ存在するようになります。

devDependencies、テストに必要なツールとライブラリを指定します。オプションで ^ を付けて、互換性のある新しいバージョンでも問題ないことを示します。aws-cdk-libライブラリと互換性のあるCDKパッケージの最下位バージョンおよびその他の CDK パッケージを正確に (^ または ~ なしで) 指定してください。この方法により、テストがそれらのバージョンに対して実行されるようになります。これにより、新しいバージョンにしかない機能を誤って使用した場合でも、テストでその機能をcatch できます。

警告

peerDependenciesNPM 7 以降でのみ自動的にインストールされます。NPM 6 以前を使用している場合、または Yarn を使用している場合は、依存関係の依存関係をに含める必要がありますdevDependencies。そうしないと、これらはインストールされず、未解決のピア依存関係に関する警告が表示されます。

依存関係のインストールと更新

次のコマンドを実行して、プロジェクトの従属関係をインストールします。

NPM
# Install the latest version of everything that matches the ranges in 'package.json' npm install # Install the same exact dependency versions as recorded in 'package-lock.json' npm ci
Yarn
# Install the latest version of everything that matches the ranges in 'package.json' yarn upgrade # Install the same exact dependency versions as recorded in 'yarn.lock' yarn install --frozen-lockfile

インストールされたモジュールを更新するにはnpm installyarn upgrade前述のコマンドを使用できます。どちらのコマンドでも、package.jsonパッケージはのルールを満たす最新バージョンに更新されます。node_modulesただし、package.json自動更新は行われないため、新しい最小バージョンを設定したい場合もあるでしょう。パッケージをホストしている場合は GitHub、Dependabot のバージョン更新が自動的に更新されるように設定できますpackage.json。または npm-check-updates を使用します。

重要

設計上、依存関係をインストールまたは更新する際、NPM と Yarn はで指定された要件を満たすすべてのパッケージの最新バージョンを選択しますpackage.json。これらのバージョンが(誤って、または意図的に)壊れてしまう危険性は常にあります。プロジェクトの依存関係を更新した後は、十分にテストしてください。

Python

Python では、依存関係を (アプリケーションの場合) またはrequirements.txtsetup.py (構成ライブラリの場合) に入れて指定します。その後、依存関係は PIP ツールで管理されます。PIP は、次のいずれかの方法で呼び出されます。

pip command options python -m pip command options

python -m pipこの呼び出しはほとんどのシステムで機能するためpip、PIP の実行ファイルがシステムパス上にある必要があります。pip動作しない場合は、に置き換えてみてくださいpython -m pip

cdk init --language python新しいプロジェクト用の仮想環境を作成します。これにより、requirements.txt各プロジェクトには独自のバージョンの依存関係と基本ファイルがあります。プロジェクトの作業を開始するたびに、この仮想環境 (source .venv/bin/activate) をアクティブ化する必要があります。

アプリケーション

例の requirements.txt を次に示します。PIP には依存関係ロック機能がないため、次に示すように == 演算子を使用してすべての依存関係の正確なバージョンを指定することをお勧めします。

aws-cdk-lib==2.14.0 aws-cdk.aws-appsync-alpha==2.10.0a0

pip installを使用してモジュールをインストールしてもモジュールはに追加されないため、自分でインストールする必要があります。requirements.txt依存関係を新しいバージョンにアップグレードする場合は、requirements.txtでバージョン番号を編集します。

作成または編集後にプロジェクトの依存関係をインストールまたは更新するにはrequirements.txt、以下を実行します。

python -m pip install -r requirements.txt
ヒント

pip freezeこのコマンドは、インストールされているすべての依存関係のバージョンを、テキストファイルに書き込める形式で出力します。これはで要件ファイルとして使用できますpip install -r。このファイルは、すべての依存関係 (推移的な依存関係を含む) をテストしたバージョンにピン留めするのに便利です。後でパッケージをアップグレードする際の問題を回避するには、freeze.txt (notrequirements.txt) などの別のファイルを使用してください。次に、プロジェクトの依存関係をアップグレードするときに再生成します。

ライブラリーの構築

ライブラリでは、依存関係はで指定されるためsetup.py、アプリケーションでパッケージが使用されると推移的な依存関係が自動的にダウンロードされます。そうしないと、パッケージを使用するすべてのアプリケーションが、依存関係をそのパッケージにコピーする必要がありますrequirements.txtsetup.pyここでは例を示します。

from setuptools import setup setup( name='my-package', version='0.0.1', install_requires=[ 'aws-cdk-lib==2.14.0', ], ... )

開発用のパッケージを使用するには、仮想環境を作成またはアクティブ化してから、次のコマンドを実行します。

python -m pip install -e .

PIP は推移的な依存関係を自動的にインストールしますが、インストールできるパッケージは 1 つだけです。依存関係ツリーで最上位に指定されたバージョンが選択され、アプリケーションには常にインストールされるパッケージのバージョンが最後に表示されます。

Java

Java では、依存関係は Mavenpom.xml で指定され、Maven を使用してインストールされます。<dependencies>コンテナには、<dependency>各パッケージの要素が含まれています。以下は、一般的な CDK Javapom.xml アプリケーションのセクションです。

ヒント

多くの Java IDE には Mavenpom.xml サポートとビジュアルエディターが統合されており、依存関係の管理に便利な場合があります。

<dependencies> <dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>aws-cdk-lib</artifactId> <version>2.14.0</version> </dependency> <dependency> <groupId>software.amazon.awscdk</groupId> <artifactId>appsync-alpha</artifactId> <version>2.10.0-alpha.0</version> </dependency> </dependencies>

Maven は依存関係ロックをサポートしていません。でバージョン範囲を指定することも可能ですがpom.xml、ビルドを繰り返し実行できるように、常に正確なバージョンを使用することをお勧めします。

Maven は推移的な依存関係を自動的にインストールしますが、各パッケージのコピーは 1 つしかインストールできません。POM ツリーで最上位に指定されたバージョンが選択されます。アプリケーションには常に、インストールされるパッケージのバージョンが最後に表示されます。

Maven は、プロジェクトをビルド (mvn compile) またはパッケージ化 () するたびに、依存関係を自動的にインストールまたは更新します。mvn packageCDK Toolkit は実行するたびに自動的にこの処理を行うため、通常、手動で Maven を呼び出す必要はありません。

C#

C#AWS CDK アプリでは、 NuGetを使用して依存関係を管理します。 NuGet には、ほぼ同等の標準インターフェースが4つあり、ニーズや作業スタイルに合ったものを使用できます。Paketなどの互換性のあるツールを使用したりMyGet.csprojファイルを直接編集したりすることもできます。

NuGet 依存関係のバージョン範囲を指定することはできません。すべての依存関係は特定のバージョンに固定されています。

依存関係を更新すると、Visual Studio NuGet は次回のビルド時に各パッケージの指定されたバージョンを取得するために使用します。Visual Studio を使用していない場合は、dotnet restoreコマンドを使用して依存関係を更新してください。

プロジェクトファイルを直接編集する

.csprojプロジェクトのファイルには、<ItemGroup><PackageReference依存関係を要素として一覧表示するコンテナが含まれています。

<ItemGroup> <PackageReference Include="Amazon.CDK.Lib" Version="2.14.0" /> <PackageReference Include="Constructs" Version="%constructs-version%" /> </ItemGroup>

ビジュアルスタジオ NuGet GUI

Visual Studio NuGet のツールには、[ツール] > [NuGet Package マネージャー] > [ NuGet ソリューションのパッケージの管理] からアクセスできます。「ブラウズ」タブを使用して、AWSインストールするコンストラクトライブラリパッケージを検索します。モジュールのプレリリースバージョンを含め、必要なバージョンを選択して、開いているプロジェクトのいずれかに追加できます。

注記

AWSConstruct Library モジュールは、すべて「実験的」と見なされ (「」を参照バージョニング)、 NuGet プレリリースとしてフラグが付けられ、alpha名前のサフィックスが付きます。

更新ページを見て、パッケージの新しいバージョンをインストールしてください。

NuGet コンソール

NuGet コンソールは、Visual Studio PowerShell NuGet プロジェクトのコンテキストで動作するベースのインターフェイスです。Visual Studio で開くには、[ツール] > [Package マネージャー] > [NuGet Package マネージャーコンソール] を選択します。このツールの使用方法の詳細については、「Visual Studio のPackage マネージャーコンソールによるパッケージのインストールと管理」を参照してください。

dotnetコマンド

dotnetこのコマンドは、Visual Studio C# プロジェクトを操作するための主要なコマンドラインツールです。任意の Windows コマンドプロンプトから呼び出すことができます。多くの機能の中でも、Visual Studiodotnet NuGet プロジェクトに依存関係を追加できます。

Visual Studio プロジェクト (.csproj) ファイルと同じディレクトリにいると仮定して、次のようなコマンドを実行してパッケージをインストールします。メインの CDK ライブラリはプロジェクトの作成時に含まれるため、実験的なモジュールを明示的にインストールするだけで済みます。実験モジュールでは、明示的なバージョン番号を指定する必要があります。

dotnet add package Amazon.CDK.AWS.IoT.Alpha -v VERSION-NUMBER

コマンドは別のディレクトリから発行できます。そのためには、addキーワードの後に、プロジェクトファイルまたはプロジェクトファイルを含むディレクトリへのパスを含めてください。次の例では、AWS CDKプロジェクトのメインディレクトリにいることを前提としています。

dotnet add src/PROJECT-DIR package Amazon.CDK.AWS.IoT.Alpha -v VERSION-NUMBER

パッケージの特定バージョンをインストールするには、-vフラグと必要なバージョンを含めます。

パッケージを更新するには、dotnet addインストールに使用したのと同じコマンドを実行します。実験モジュールの場合も、バージョン番号を明示的に指定する必要があります。

dotnetコマンドを使用したパッケージ管理の詳細については、「dotnet CLI を使用したパッケージのインストールと管理」を参照してください。

nugetコマンド

nuget NuGet コマンドラインツールはパッケージをインストールおよび更新できます。ただし、Visual Studio プロジェクトは、cdk initプロジェクトの設定方法とは異なる方法で設定する必要があります。(技術的詳細:nugetPackages.configプロジェクトと連携しながら、cdk initPackageReference新しいスタイルのプロジェクトを作成します。)

nugetAWS CDKによって作成されたプロジェクトでこのツールを使用することはお勧めしませんcdk init。別のタイプのプロジェクトを使用していて、nuget使用したい場合は、NuGet CLIリファレンスを参照してください

Go

Go では、依存関係のバージョンはで定義されますgo.modgo.modデフォルトは、ここに示されているものと同様です。

module my-package go 1.16 require ( github.com/aws/aws-cdk-go/awscdk/v2 v2.16.0 github.com/aws/constructs-go/constructs/v10 v10.0.5 github.com/aws/jsii-runtime-go v1.29.0 )

Package 名 (Go 用語ではモジュール) は URL で指定され、必要なバージョン番号が付加されます。Go のモジュールシステムはバージョン範囲をサポートしていません。

go getコマンドを実行して、go.mod必要なモジュールをすべてインストールして更新します。依存関係で利用可能なアップデートのリストを確認するには、を押してくださいgo list -m -u all