AWS CDK 入門 - ユースカジノ 口コミ
投稿日: 2024/03/11
はじめに
本記事は CDK ユースカジノ 口コミ入門記事です。
CDK のアサーションテストに興味があるが、始め方が分からない方向けに、ユースカジノ 口コミ的な内容を整理しました。
前提
本記事は以下を使用する前提で記載しています。
- Typescript: 5.2.2
- Jest: 29.7.0
- CDK: 2.128.0
CDK におけるユニットユースカジノ 口コミ / アサーションユースカジノ 口コミとは?
まず、CDK ではどのようにユニットユースカジノ 口コミを行うのか説明します。
CDK でユニットユースカジノ 口コミを行う際は、アプリの開発と同様に、各言語で使用される一般的なテスティングフレームワーク(Typescript で言えば jest 等)を使用してユースカジノ 口コミコードを実装できます。
また、公式から CDK のユースカジノ 口コミを支援するためのモジュールが提供されているため、通常、これらを使用してユースカジノ 口コミコードを書きます。
ユースカジノ 口コミモジュール | 説明 |
---|---|
アサーションユースカジノ 口コミ (Fine-GrainedAssertion Test) |
|
スナップショットユースカジノ 口コミ (Snapshot Test) |
|
アサーションユースカジノ 口コミは伝統的なインフラ構築における、単体ユースカジノ 口コミ(パラメータ確認)に相当するイメージです。
スナップショットユースカジノ 口コミはコードを修正した際に、テンプレートが構成するリソースの内容の更新箇所を把握するために使用します。
因みに、上記はいずれも AWS 環境ではなく、コードに対してユースカジノ 口コミを行います。 余談にはなりますが、リソースを作成して、ユースカジノ 口コミしたい場合は、CDK integ-tests / integ-rnnnerがあります。(現時点では、アルファ版の公開)
CDK ユースカジノ 口コミ解説
CDK Assertion test モジュールの基本的な説明をします。
CDK ユースカジノ 口コミクラス
Template
CDK スタックのアサーションユースカジノ 口コミスイートになります。
簡単に言うと、Template に CDK スタックを入力し、Template を作成すると、スタックから合成されたCloudFormation テンプレートに対する各種ユースカジノ 口コミができるようになります。
テンプレートクラスでは、例えば以下のようなユースカジノ 口コミ用のメソッドが提供されています。
- 特定のサービスのリソース数量をカウントする: resourceCountIs()
- 特定のサービスにおける、指定のプロパティを持つリソースをカウントする。: resourcePropertiesCountIs()
- 特定のサービスにおける、指定のプロパティを持つリソースが存在するか確認する。: hasResourceProperties()
CDK API リファレンス / ユースカジノ 口コミ-cdk-lib.assertions.Template
Match
パラメータの一致条件です。例えば、以下のようなものがあります。
- 非 Null のいずれかの値に一致: Match.anyValue ()
- 配列の部分一致: Match.arrayWith ()
- 配列の正確な一致: Match.arrayEquals ()
マッチャーのメソッド全容は以下の ユースカジノ 口コミ CDK の API リファレンスを参照してください。
CDK API リファレンス / ユースカジノ 口コミ-cdk-lib.assertions.Match
アサーションユースカジノ 口コミを書く際に使うリンク集
- Jest の仕様について調べたい時
- CDK のアサーションユースカジノ 口コミモジュールの仕様について調べたい時
- CloudFormaton のリソースタイプの仕様について調べたい時
アサーションユースカジノ 口コミをやってみる
本セクションでは、CDK のアサーションユースカジノ 口コミを実際にやってみます。
サンプルプログラム の準備
以降では、ユースカジノ 口コミ ソリューションコンストラクトのユースカジノ 口コミ-cloudfront-s3
をユースカジノ 口コミ対象として、ユースカジノ 口コミコードを記載しています。
ユースカジノ 口コミ Solutions Constructs / ユースカジノ 口コミ-cloudfront-s3
CDK アプリの準備
以下を実行して、CDK アプリのテンプレートを作成します。
cdk init app --language typescript # cdk アプリのひな形を作成する。
npm i -S @ユースカジノ 口コミ-solutions-constructs/ユースカジノ 口コミ-cloudfront-s3 # ユースカジノ 口コミ-cloudfront-s3 ソリューションコンストラクトのインストール
jest はcdk init app
により、インストールされます。
ディレクトリ構成
以降では、以下にユースカジノ 口コミコードファイルを作成して、ユースカジノ 口コミコードを記述していきます。
.
└── test
└── cloudfront-s3-construct.test.ts // コンストラクトに対するユースカジノ 口コミコード
ユースカジノ 口コミ実行
まずは、ユースカジノ 口コミコードを流してみます。
ユースカジノ 口コミコードの記述
本記事では、test/cloudfront-s3-construct.test.ts
の中身を次のように実装します。
{
template.resourceCountIs("ユースカジノ 口コミ::CloudFront::Distribution", 1);
});
});
例えば、AWS CodeWhisperer (※AWSのAI コードジェネレータサービス) を使用することで、単純なユースカジノ 口コミケースであれば、高精度で作成できます。
ユースカジノ 口コミ実行
以下のコマンドで、jest を実行します。
- 全体のユースカジノ 口コミファイルを実行
npx jest
※実行するユースカジノ 口コミファイル範囲は、jest.config.js
にて、指定ができます。
- 指定したユースカジノ 口コミファイルを実行
npx jest {ファイルパス}
実行結果は以下になります。
実行結果
ユースカジノ 口コミが成功し、コンストラクトの中に CloudFront が 1 リソース存在しているのが分かります。

ユースカジノ 口コミパターン集
Template クラスのメソッド毎によく使用するユースカジノ 口コミパターンをまとめます。
また、エラーの出力例も記載しており、メソッド毎どのようなエラーが出力されるのか参考にしてください。
No. | ユースカジノ 口コミパターン | サンプル | 使用する Template メソッド |
---|---|---|---|
1 | 特定のサービスのリソース数量をカウントする。 | S3 バケットの数量を確認する。 | resourceCountIs(type, count) |
2 | 特定のサービスにおける、指定のプロパティを持つリソースをカウントする。 | アクセスログを出力する S3 バケットの数量を確認する。 | resourcePropertiesCountIs(type,props, count) |
3 | 特定のサービスにおける、指定のプロパティを持つリソースが存在するか確認する。 | CloudFront がアクセスログを出力することをを確認する。 | hasResourceProperties(type, props) |
4 | 特定のサービスの全てのリソースが指定のプロパティを持つか確認する。 | 全ての S3 Bucket がバージョニングを有効にしていることをを確認する。 | allResourcesProperties(type, props) |
5 | 特定の論理 ID のリソースが指定のプロパティを持つか確認する。(応用) | CloudFront アクセスログ用のバケットのバージョニングが有効であることを確認する。 | findResources(type, props?) |
1. 特定のサービスのリソース数量をカウントする
ユースカジノ 口コミコード
resourceCountIs
を使用して、S3 バケットの数量を確認する。
{
template.resourceCountIs("ユースカジノ 口コミ::S3::Bucket", 4);
});
エラー出力例
数量を 4 から 3 にして実行してみます。
失敗の場合、resourceCountIs
では、リソースの実際の数量が出力されます。

2. 特定のサービスにおける、指定のプロパティを持つリソースをカウントする
ユースカジノ 口コミコード
resourcePropertiesCountIs
を使用して、アクセスログを出力する S3 バケットの数量を確認する。
{
template.resourcePropertiesCountIs(
"ユースカジノ 口コミ::S3::Bucket",
{
LoggingConfiguration: Match.anyValue(),
},
2,
);
});
エラー出力例
数量を 2 から 3 にして実行してみます。
resourcePropertiesCountIs
では、リソースの実際の数量が出力されます。

3. 特定のサービスにおける、指定のプロパティを持つリソースが存在するか確認する
ユースカジノ 口コミコード
hasResourceProperties
を使用して、CloudFront がアクセスログを出力することをを確認する。
{
template.hasResourceProperties("ユースカジノ 口コミ::CloudFront::Distribution", {
DistributionConfig: {
Logging: {
Bucket: Match.anyValue(),
},
},
});
});
その為、複数のリソースが条件に一致することが期待される場合には、allResourcesProperties を使用します。
エラー出力例
Logging Bucket が指定されていないことをユースカジノ 口コミするように修正してみます。(Match.anyValue()
の部分をMatch.absent()
に変更する。)
失敗の場合、hasResourceProperties
では、実際のリソースのプロパティとエラー箇所が出力されます。

4. 特定のサービスの全てのリソースが指定のプロパティを持つか確認する
ユースカジノ 口コミコード
全ての S3 Bucket がバージョニングを有効にしていることを確認する。
{
template.allResourcesProperties("ユースカジノ 口コミ::S3::Bucket", {
VersioningConfiguration: {
Status: "Enabled",
},
});
});
エラー出力例
全ての S3 Bucket: バージョニングが有効でないことをユースカジノ 口コミするように修正してみます。(Enabled
の部分をDisabled
に変更する。)
失敗の場合、allResourcesProperties
では、条件に一致しないリソース論理 ID の一覧が出力されます。

5. 特定の論理 ID のリソースが指定のプロパティを持つか確認する(応用)
特定のリソースのプロパティチェックをする場合、運用でタグや物理名の命名規則があれば、それを条件に指定することもできますが、ない場合は論理 ID を使用します。
ユースカジノ 口コミコード
CloudFront アクセスログ用のバケットのバージョニングが有効であることを確認する。
{
// 条件に合致するリソースのオブジェクトを取得
const resources = template.findResources("AWS::S3::Bucket", {
Properties: {
VersioningConfiguration: {
Status: "Enabled",
},
},
});
// resourcesのキーが論理IDなので、resourcesに指定の論理IDが含まれるかユースカジノ 口コミする。
expect(resources).toHaveProperty("CloudFrontToS3CloudfrontLoggingBucket8350BE9B");
});
findResources
で取得した Object に論理 ID が含まれていることをユースカジノ 口コミしています。
エラー出力例
CloudFront アクセスログ用 S3 Bucket: バージョニングが有効でないことをユースカジノ 口コミするように修正してみます。(論理 IDCloudFrontToS3CloudfrontLoggingBucket8350BE9B
の部分をdummy
に変更する。)
失敗の場合、findResources の結果オブジェクトが出力されます。

リソース間の参照をユースカジノ 口コミする方法
リソース間の参照をユースカジノ 口コミする必要がある場合があります。
例えば、Cloudfront のログ出力設定に特定の S3 バケットが設定されているかをユースカジノ 口コミしたいケースです。
この例では、Cloudformation テンプレートは以下になります。
CloudFormation テンプレート
CloudFrontToS3CloudFrontDistribution241D9866 :: {
"Type": "ユースカジノ 口コミ::CloudFront::Distribution",
"Properties": {
"DistributionConfig": {
"Logging": {
"Bucket": {
"Fn::GetAtt": [ "CloudFrontToS3CloudfrontLoggingBucket8350BE9B", "RegionalDomainName" ]
}
},
...
}
},
}
この時、S3Bucket 論理 ID "CloudFrontToS3CloudfrontLoggingBucket8350BE9B"はどのように取得すればよいでしょうか?
2 パターンの方法があります。
1.hasResourceProperties
で失敗させ、エラー出力の論理 ID を見て取得する方法
ユースカジノ 口コミ CDK Workshopで紹介されている方法です。
プロダクトコードで"CloudFront アクセスログバケット"にアクセスログを出力する CloudFront が存在している状態で、次のようなユースカジノ 口コミコードを書いて実行し、わざと失敗させます。
ユースカジノ 口コミコード
{
template.hasResourceProperties("ユースカジノ 口コミ::CloudFront::Distribution", {
DistributionConfig: {
Logging: {
Bucket: "Dummy",
},
},
});
});
"CloudFront アクセスログバケット" の論理 ID を"Dummy"に指定して失敗させます。
実行結果

上記の実行結果に論理 ID が出力されるので、これを見て修正します。
S3 Bucket の論理 ID「CloudFrontToS3CloudfrontLoggingBucket8350BE9B」が含まれているので、「CloudFront アクセスログバケット」だということを確認して、ユースカジノ 口コミコードを修正します。
ユースカジノ 口コミコード
{
template.hasResourceProperties("ユースカジノ 口コミ::CloudFront::Distribution", {
DistributionConfig: {
Logging: {
Bucket: {
"Fn::GetAtt": ["CloudFrontToS3CloudfrontLoggingBucket8350BE9B", "RegionalDomainName"],
},
},
},
});
});
ただし、論理IDが変更されるとリソースもリプレースになり、一般的に、検知したい内容だと思いますので、ユースカジノ 口コミが失敗するのは問題ないはずです。
2.findResources
で論理 ID を指定して検索する方法。
最初の方法で、ユースカジノ 口コミの失敗結果から取得する方法にしっくり来ない方もいるかと思います。
その場合k、次のような方法も考えられます。
※ この方法の場合、「CloudFront アクセスログバケット」を一意に特定するキー情報(タグや物理名等)が必要です。
ユースカジノ 口コミコード
{
// Nameタグ等をキーにfindResourcesで論理IDのリストを取得。
const bucketLogicalIds = Object.keys(
template.findResources("ユースカジノ 口コミ::S3::Bucket", {
Properties: {
Tags: Match.arrayWith([
{
Key: "Name",
Value: "CloudFrontAccessLogBucket",
},
]),
},
}),
);
// 論理IDが一意であることを確認
expect(bucketLogicalIds).toHaveLength(1);
// CloudFrontのプロパティにS3 バケットの論理IDを指定する。
template.hasResourceProperties("ユースカジノ 口コミ::CloudFront::Distribution", {
DistributionConfig: {
Logging: {
Bucket: {
"Fn::GetAtt": [bucketLogicalIds[0], "RegionalDomainName"],
},
},
},
});
});
まとめ
今回は、CDK ユースカジノ 口コミについて解説しました。
ユースカジノ 口コミは、AWSのビジネス利活用に向けて、お客様のステージに合わせた幅広い構築・運用支援サービスを提供しています。
経験豊富なエンジニアが、ワンストップかつ柔軟にご支援します。
ぜひ、お気軽にユースカジノ 登録ください。