Back to Releases
AWS CDK 2026年5月8日

AWS CDK v2.253.1 リリース解説

クロスリージョン参照の「exports cannot be updated」エラーの修正、S3 Deploy で空のソースを使用した際のデプロイエラーの修正が含まれます。

概要

このリリースでは、クロスリージョン参照を使用する際に発生していた「exports cannot be updated」エラーが修正されました。また、BucketDeployment で空のソース配列を使用した場合にデプロイが失敗する問題も解消されています。

リリース: v2.253.1

バグ修正

クロスリージョン参照での「exports cannot be updated」エラーの修正 (#37790)

  • クロスリージョン参照を使用しているスタックで、参照元の値を更新しようとすると「exports cannot be updated」エラーが発生する問題がありました
  • ExportWriter/ExportReader メカニズムは CloudFormation の Fn::ImportValue/Export と同様に強い参照を生成するため、単純に Fn::GetStackOutput に置き換えることはできませんでした
  • この修正では、クロスリージョン参照の内部実装が見直され、参照の更新が正しく処理されるようになりました

修正後の動作:

import { Stack, App } from 'aws-cdk-lib';
import { Bucket } from 'aws-cdk-lib/aws-s3';
import { StringParameter } from 'aws-cdk-lib/aws-ssm';

const app = new App();

// プロデューサースタック(us-east-1)
const producerStack = new Stack(app, 'ProducerStack', {
  env: { region: 'us-east-1' },
  crossRegionReferences: true,
});

const bucket = new Bucket(producerStack, 'MyBucket');

// コンシューマースタック(us-west-2)
const consumerStack = new Stack(app, 'ConsumerStack', {
  env: { region: 'us-west-2' },
  crossRegionReferences: true,
});

// クロスリージョン参照を使用
// 修正前: bucket の設定を変更すると「exports cannot be updated」エラーが発生
// 修正後: 正しく更新が処理される
new StringParameter(consumerStack, 'BucketArnParam', {
  parameterName: '/app/bucket-arn',
  stringValue: bucket.bucketArn,
});

ポイント:

  • crossRegionReferences: true を設定しているスタック間の参照で発生していた問題です
  • プロデューサースタック側のリソースを更新した際に、コンシューマースタック側でエラーになるケースが解消されました
  • 既存のクロスリージョン参照を使用しているプロジェクトでは、この修正により安定した更新が可能になります

BucketDeployment で空のソースを使用するとデプロイエラーになる問題の修正 (#37786)

  • BucketDeploymentsources プロパティに空の配列を渡すと、デプロイ時にエラーが発生する問題がありました
  • 内部で Lazy から Box API への移行時に、omitEmpty: true が設定されていたため、空の配列が undefined として処理され、カスタムリソースのプロパティが正しく生成されませんでした
  • omitEmpty: false に修正することで、空の配列でも正しくリソースが生成されるようになりました

修正後の動作:

import { BucketDeployment, Source } from 'aws-cdk-lib/aws-s3-deployment';
import { Bucket } from 'aws-cdk-lib/aws-s3';

const bucket = new Bucket(stack, 'DestinationBucket');

// 条件付きでソースを追加するケース
const sources: Source[] = [];

if (shouldIncludeAssets) {
  sources.push(Source.asset('./assets'));
}

// 修正前: sources が空の場合にデプロイエラー
// 修正後: 空の配列でも正しくデプロイされる
new BucketDeployment(stack, 'Deploy', {
  sources: sources,
  destinationBucket: bucket,
});

ポイント:

  • 条件分岐によってソースを動的に追加するユースケースで、条件に該当しない場合に空の配列になることがあります
  • この修正により、空のソースでも BucketDeployment が正しく動作するようになりました

まとめ

このリリースでは、クロスリージョン参照の更新時エラーと BucketDeployment の空ソース問題が修正されました。特にクロスリージョン参照を使用しているプロジェクトでは、スタック更新時の安定性が向上しています。