概要
AWS CDK v2.243.0では、@aws-cdk/cfn-property-mixinsが安定版パッケージとして正式にリリースされました。また、L1 CloudFormationリソース定義が更新され、EKS CapabilityとELBv2 LoadBalancerにvendedLogs設定が追加されています。DynamoDBでは、インデックス追加後のリソースポリシーにインデックスARNが含まれない問題が修正されました。
新機能
cfn-property-mixins: 安定版パッケージに昇格 (#37215)
CFNプロパティMixin機能が@aws-cdk/mixins-previewから@aws-cdk/cfn-property-mixinsとして安定版パッケージに昇格しました。すべてのCloudFormationリソースに対応するプロパティMixinクラスを提供します。
// 新しいインポートパス(安定版)
import { CfnBucketPropsMixin } from '@aws-cdk/cfn-property-mixins/aws-s3';
import { CfnFunctionPropsMixin } from '@aws-cdk/cfn-property-mixins/aws-lambda';
import { CfnTablePropsMixin } from '@aws-cdk/cfn-property-mixins/aws-dynamodb';
主な特徴:
| 特徴 | 説明 |
|---|---|
| パッケージ名 | @aws-cdk/cfn-property-mixins |
| モジュール構造 | aws-cdk-libと同じ構造(例:/aws-s3, /aws-lambda) |
| マージ戦略 | IMergeStrategyとPropertyMergeStrategyをaws-cdk-lib/coreからインポート |
使用例:
import * as s3 from 'aws-cdk-lib/aws-s3';
import { PropertyMergeStrategy } from 'aws-cdk-lib';
import { CfnBucketPropsMixin } from '@aws-cdk/cfn-property-mixins/aws-s3';
const bucket = new s3.CfnBucket(this, 'Bucket');
// Mixinを使用してプロパティを適用
const mixin = new CfnBucketPropsMixin({
versioningConfiguration: {
status: 'Enabled', // バージョニングを有効化
},
publicAccessBlockConfiguration: {
blockPublicAcls: true, // パブリックACLをブロック
blockPublicPolicy: true, // パブリックポリシーをブロック
ignorePublicAcls: true, // パブリックACLを無視
restrictPublicBuckets: true, // パブリックバケットを制限
},
}, {
strategy: PropertyMergeStrategy.combine(), // 深いマージ(デフォルト)
});
mixin.applyTo(bucket);
移行ガイド:
// 移行前(プレビュー版)
import { CfnS3BucketProps } from '@aws-cdk/mixins-preview';
// 移行後(安定版)
import { CfnBucketPropsMixin } from '@aws-cdk/cfn-property-mixins/aws-s3';
L1 CloudFormationリソース定義の更新 (#37201)
最新のAWS CloudFormationリソース仕様に基づいてL1コンストラクトが更新されました。
EKS Capability: vendedLogs の追加
AWS::EKS::CapabilityリソースにvendedLogs設定が追加されました。以下のログタイプがサポートされています:
| ログタイプ | 説明 |
|---|---|
EKS_CAPABILITY_ACK_S3_LOGS | ACK(AWS Controllers for Kubernetes)S3コントローラーのログ |
EKS_CAPABILITY_ARGOCD_APPLICATION_LOGS | ArgoCD アプリケーションログ |
EKS_CAPABILITY_KRO_LOGS | KRO(Kubernetes Resource Orchestrator)ログ |
各ログタイプで以下の出力先がサポートされています:
- S3(json, plain, w3c, parquet形式)
- CloudWatch Logs(plain, json形式)
- Firehose(json, plain, raw形式)
ELBv2 LoadBalancer: vendedLogs の追加
AWS::ElasticLoadBalancingV2::LoadBalancerリソースにALB用のvendedLogs設定が追加されました:
| ログタイプ | 説明 |
|---|---|
ALB_ACCESS_LOGS | ALBアクセスログ |
ALB_CONNECTION_LOGS | ALB接続ログ(TLSハンドシェイク情報を含む) |
ALB_HEALTH_CHECK_LOGS | ALBヘルスチェックログ |
バグ修正
DynamoDB: インデックス追加後のリソースポリシーにインデックスARNが含まれない問題を修正 (#37213)
DynamoDBテーブルで、グローバルセカンダリインデックス(GSI)を追加する前にパーミッションを付与すると、生成されるポリシードキュメントにインデックスのARNが含まれない問題が修正されました。
修正前の問題:
import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
import * as iam from 'aws-cdk-lib/aws-iam';
const table = new dynamodb.Table(this, 'Table', {
partitionKey: { name: 'pk', type: dynamodb.AttributeType.STRING },
});
// 問題: この順序だとインデックスARNがポリシーに含まれない
table.grantReadWriteData(new iam.ServicePrincipal('lambda.amazonaws.com'));
table.addGlobalSecondaryIndex({
indexName: 'GSI1',
partitionKey: { name: 'gsi1pk', type: dynamodb.AttributeType.STRING },
});
修正前は、grantReadWriteDataが呼び出された時点でARNが計算されていたため、後から追加されたインデックスのARNがポリシーに含まれませんでした。
修正後:
TableGrants内のARN計算が遅延評価(lazy evaluation)に変更され、呼び出し順序に関係なくすべてのインデックスARNがポリシーに正しく含まれるようになりました。
import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';
import * as iam from 'aws-cdk-lib/aws-iam';
const table = new dynamodb.Table(this, 'Table', {
partitionKey: { name: 'pk', type: dynamodb.AttributeType.STRING },
});
// 修正後: どちらの順序でも正しく動作
// パターン1: 先にgrant
table.grantReadWriteData(new iam.ServicePrincipal('lambda.amazonaws.com'));
table.addGlobalSecondaryIndex({
indexName: 'GSI1',
partitionKey: { name: 'gsi1pk', type: dynamodb.AttributeType.STRING },
});
// パターン2: 先にインデックス追加(従来通り動作)
table.addGlobalSecondaryIndex({
indexName: 'GSI2',
partitionKey: { name: 'gsi2pk', type: dynamodb.AttributeType.STRING },
});
table.grantReadWriteData(new iam.ServicePrincipal('another-service.amazonaws.com'));
どちらのパターンでも、生成されるIAMポリシーにはテーブルARNとすべてのインデックスARNが正しく含まれます。
Alphaモジュール (2.243.0-alpha.0)
このリリースではAlphaモジュールに特筆すべき変更はありません。
まとめ
AWS CDK v2.243.0は、cfn-property-mixinsの安定版リリースとDynamoDBのインデックスARN問題の修正が主な内容です。
主なポイント:
- cfn-property-mixins安定版:
@aws-cdk/mixins-previewから@aws-cdk/cfn-property-mixinsに移行し、正式サポートされました - EKS/ALB vendedLogs: CloudFormationリソース定義の更新により、EKS CapabilityとALBで詳細なログ設定が可能に
- DynamoDBバグ修正: インデックス追加とパーミッション付与の順序に関係なく、正しいポリシーが生成されるようになりました
アップグレード時の注意:
@aws-cdk/mixins-previewを使用している場合は、@aws-cdk/cfn-property-mixinsへの移行を検討してください