Back to Releases
v2.213.0 2025年8月28日

AWS CDK v2.213.0 リリース解説

DynamoDB Contributor Insights Modeのサポート追加と、S3 TablesのTablePolicy L2コンストラクトの追加。

dynamodbs3tables

概要

AWS CDK v2.213.0では、DynamoDB TableにContributor Insights Modeの設定機能が追加されました。また、Alphaモジュールでは、S3 TablesのTablePolicy L2コンストラクトと、テーブルへの権限付与メソッドが追加されました。

新機能

DynamoDB: Contributor Insights Mode の追加

DynamoDB TableとTableV2に、Contributor Insights Modeを設定できる機能が追加されました。Contributor Insightsは、テーブルやグローバルセカンダリインデックス(GSI)に対する読み書きのトラフィックパターンを分析し、最も頻繁にアクセスされるアイテムや、スロットルされているリクエストを特定するのに役立ちます。

使用方法

Table (V1) の場合:

import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';

const table = new dynamodb.Table(this, 'MyTable', {
  partitionKey: { name: 'id', type: dynamodb.AttributeType.STRING },
  // Contributor Insights を有効化(デフォルト: 無効)
  contributorInsightsMode: dynamodb.ContributorInsightsMode.ENABLED,
});

TableV2 の場合:

import * as dynamodb from 'aws-cdk-lib/aws-dynamodb';

const tableV2 = new dynamodb.TableV2(this, 'MyTableV2', {
  partitionKey: { name: 'pk', type: dynamodb.AttributeType.STRING },
  // テーブルレベルでContributor Insights Modeを設定
  contributorInsightsMode: dynamodb.ContributorInsightsMode.ENABLED,

  // GSIごとにも個別に設定可能
  globalSecondaryIndexes: [
    {
      indexName: 'GSI1',
      partitionKey: { name: 'gsi1pk', type: dynamodb.AttributeType.STRING },
      // このGSIのみContributor Insightsを有効化
      contributorInsightsMode: dynamodb.ContributorInsightsMode.ENABLED,
    },
  ],
});

ContributorInsightsMode の値

  • ContributorInsightsMode.ENABLED: Contributor Insightsを有効化
  • ContributorInsightsMode.DISABLED: Contributor Insightsを無効化(デフォルト)

この機能により、DynamoDBテーブルのアクセスパターンを詳細に分析し、パフォーマンスの最適化やコスト管理に役立てることができます。

参考: AWS CloudFormation - ContributorInsightsSpecification

Alphaモジュール

S3 Tables: TablePolicy L2コンストラクトと権限管理メソッドの追加

S3 TablesのTableにIAMポリシーを付与するための新しいL2コンストラクト TablePolicy が追加されました。また、Table コンストラクトに権限管理のための便利なメソッドが追加されました。

新しいL2コンストラクト: TablePolicy

TablePolicyは、S3 TablesのTableにリソースベースのIAMポリシーを定義するためのコンストラクトです。

import * as s3tables from '@aws-cdk/aws-s3tables-alpha';
import * as iam from 'aws-cdk-lib/aws-iam';

declare const table: s3tables.Table;

// TablePolicyを使用して、テーブルにIAMポリシーを定義
const tablePolicy = new s3tables.TablePolicy(this, 'MyTablePolicy', {
  table: table,  // 対象のテーブル
});

// ポリシーステートメントを追加
tablePolicy.document.addStatements(
  new iam.PolicyStatement({
    actions: ['s3tables:GetTableData'],
    principals: [new iam.AccountPrincipal('123456789012')],
    resources: [table.tableArn],
  }),
);

Table コンストラクトに追加された権限管理メソッド

Table コンストラクトに、より簡単に権限を付与できる以下のメソッドが追加されました。

1. addToResourcePolicy

テーブルのIAMポリシーにステートメントを追加します。

import * as s3tables from '@aws-cdk/aws-s3tables-alpha';
import * as iam from 'aws-cdk-lib/aws-iam';

declare const table: s3tables.Table;

// テーブルのリソースポリシーにステートメントを直接追加
table.addToResourcePolicy(
  new iam.PolicyStatement({
    actions: ['s3tables:GetTableData'],
    principals: [new iam.AccountPrincipal('123456789012')],
    resources: [table.tableArn],
  }),
);
2. grantRead

特定のプリンシパルにテーブルへの読み取り権限を付与します。

import * as s3tables from '@aws-cdk/aws-s3tables-alpha';
import * as iam from 'aws-cdk-lib/aws-iam';

declare const table: s3tables.Table;
declare const user: iam.User;

// ユーザーに読み取り権限を付与(s3tables:Get* アクション)
table.grantRead(user);

付与されるIAMアクション:

  • s3tables:Get*
3. grantWrite

特定のプリンシパルにテーブルへの書き込み権限を付与します。

import * as s3tables from '@aws-cdk/aws-s3tables-alpha';
import * as iam from 'aws-cdk-lib/aws-iam';

declare const table: s3tables.Table;
declare const role: iam.Role;

// ロールに書き込み権限を付与
table.grantWrite(role);

付与されるIAMアクション:

  • s3tables:PutTableData
  • s3tables:UpdateTableMetadataLocation
  • s3tables:RenameTable
4. grantReadWrite

特定のプリンシパルにテーブルへの読み取りと書き込み権限の両方を付与します。

import * as s3tables from '@aws-cdk/aws-s3tables-alpha';
import * as iam from 'aws-cdk-lib/aws-iam';

declare const table: s3tables.Table;
declare const lambdaFunction: iam.Role;

// Lambda関数に読み取りと書き込みの両方の権限を付与
table.grantReadWrite(lambdaFunction);

付与されるIAMアクション:

  • s3tables:Get*
  • s3tables:PutTableData
  • s3tables:UpdateTableMetadataLocation
  • s3tables:CreateTable

実用的な使用例

Lambda関数からS3 Tablesにアクセスする場合の例:

import * as s3tables from '@aws-cdk/aws-s3tables-alpha';
import * as lambda from 'aws-cdk-lib/aws-lambda';

declare const tableBucket: s3tables.TableBucket;

// S3 Tableを作成
const table = new s3tables.Table(this, 'MyTable', {
  tableBucket: tableBucket,
  tableName: 'my-analytics-table',
  dataLake: s3tables.DataLake.ICEBERG,
  columns: [
    { name: 'id', type: s3tables.ColumnType.STRING },
    { name: 'timestamp', type: s3tables.ColumnType.TIMESTAMP },
    { name: 'value', type: s3tables.ColumnType.DOUBLE },
  ],
  partitionKeys: [{ name: 'id', type: s3tables.ColumnType.STRING }],
});

// Lambda関数を作成
const dataProcessor = new lambda.Function(this, 'DataProcessor', {
  runtime: lambda.Runtime.NODEJS_20_X,
  handler: 'index.handler',
  code: lambda.Code.fromAsset('lambda'),
});

// Lambda関数に読み取り権限を付与
table.grantRead(dataProcessor);

これらの新機能により、S3 Tablesのアクセス制御がより簡単かつ柔軟に設定できるようになりました。

まとめ

AWS CDK v2.213.0では、DynamoDB TableへのContributor Insights Mode設定機能と、S3 TablesのTablePolicy L2コンストラクトが追加されました。これにより、DynamoDBのアクセスパターン分析とS3 Tablesの権限管理がより簡単に実装できるようになりました。

関連PR:

  • #35332 - DynamoDB Contributor Insights Mode機能追加
  • #35223 - S3 Tables TablePolicy L2サポート追加