

これは AWS CDK v2 デベロッパーガイドです。旧版の CDK v1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。

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

# AWS CDK 機能フラグ
<a name="featureflags"></a>

AWS CDK は、リリースで潜在的な互換性破壊を伴う動作を有効にするために、*機能フラグ*を使用します。フラグは、[コンテキスト値と AWS CDK 値](context.md)として `cdk.json` (または `~/.cdk.json`) に保存されます。これらは、`cdk context --reset` または `cdk context --clear` コマンドによっては削除されません。

機能フラグはデフォルトでは無効になっています。フラグを指定していない既存のプロジェクトは、後続の AWS CDK のリリースでも以前と同様の動作を続けます。`cdk init` を使用して作成された新しいプロジェクトには、プロジェクトを作成したリリースで利用可能なすべての機能を有効にするフラグが含まれます。以前の動作を希望するフラグについては、`cdk.json` を編集して無効にできます。また、AWS CDK をアップグレードした後で、新しい動作を有効にするためにフラグを追加することもできます。

現在のすべての機能フラグのリストは、AWS CDK GitHub リポジトリの [FEATURE\$1FLAGS.md](https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md) で確認できます。特定のリリースで追加された新しい機能フラグの説明については、そのリリースの 「`CHANGELOG`」を参照してください。

## v1 の動作に戻す
<a name="featureflags-disabling"></a>

CDK v2 では、v1 と比較して、一部の機能フラグのデフォルト値が変更されています。これらの値を `false` に設定すると、特定の AWS CDK v1 の動作に戻すことができます。これらのフラグが必要かどうかを確認するには、`cdk diff` コマンドを使用して、合成されたテンプレートへの変更を調べます。

 `@aws-cdk/core:newStyleStackSynthesis`   
既知の名前を持つブートストラップリソースを前提とする、新しいスタック合成方式を使用します。[最新のブートストラップ](bootstrapping.md)が必要になりますが、その代わりに、[CDK Pipelines](cdk-pipeline.md) を介した CI/CD や、クロスアカウントデプロイをすぐに利用できるようになります。

 `@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId`   
アプリケーションが複数の Amazon API Gateway API キーを使用し、それらを使用プランに関連付けている場合。

 `@aws-cdk/aws-rds:lowercaseDbIdentifier`   
アプリケーションが Amazon RDS データベースインスタンスまたはデータベースクラスターを使用し、それらの識別子を明示的に指定している場合。

 `@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021`   
アプリケーションが Amazon CloudFront ディストリビューションで TLS\$1V1\$12\$12019 セキュリティポリシーを使用している場合。CDK v2 は、デフォルトでセキュリティポリシー TLSv1.2\$12021 を使用します。

 `@aws-cdk/core:stackRelativeExports`   
アプリケーションが複数のスタックを使用し、あるスタックのリソースを別のスタックで参照する場合、AWS CloudFormation エクスポートを構築する際に、絶対パスと相対パスのどちらを使用するかを決定します。

 `@aws-cdk/aws-lambda:recognizeVersionProps`   
`false` に設定すると、CDK は、Lambda 関数の変更の有無を検出する際に、メタデータを検出対象に含めるようになります。メタデータのみが変更された場合、重複するバージョンは許可されないため、デプロイが失敗する可能性があります。アプリケーション内のすべての Lambda 関数に少なくとも 1 つの変更を加えている場合、このフラグを元に戻す必要はありません。

`cdk.json` でこれらのフラグを元に戻すための構文を、以下に示します。

```
{
  "context": {
    "@aws-cdk/core:newStyleStackSynthesis": false,
    "@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": false,
    "@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021": false,
    "@aws-cdk/aws-rds:lowercaseDbIdentifier": false,
    "@aws-cdk/core:stackRelativeExports": false,
    "@aws-cdk/aws-lambda:recognizeVersionProps": false
  }
}
```