概要
AWS CDK v2.235.1は、v2.234.0で発生したAPI Gateway V2のリグレッションを修正するパッチリリースです。DomainName.fromDomainNameAttributes()でインポートしたドメイン名を使用してHTTP APIをデプロイする際に、NotFoundExceptionエラーが発生する問題が修正されました。
バグ修正
API Gateway V2: fromDomainNameAttributesでインポートしたドメイン名の参照を修正 (#36710)
v2.234.0以降、DomainName.fromDomainNameAttributes()でインポートしたカスタムドメイン名を使用してHTTP APIをデプロイすると、以下のエラーが発生する問題がありました。
Resource handler returned message: "Invalid domain name identifier specified
(Service: AmazonApiGatewayV2; Status Code: 404; Error Code: NotFoundException; ...)
問題の原因
fromDomainNameAttributes()メソッドで作成されるDomainNameReferenceオブジェクトが、カスタムドメイン名(例: api.example.com)ではなく、リージョナルドメイン名(例: d-xxxxxxxx.execute-api.us-east-1.amazonaws.com)を使用していたことが原因です。
AWS::ApiGatewayV2::ApiMappingリソースのDomainNameプロパティには、カスタムドメイン名を指定する必要がありますが、誤ってリージョナルドメイン名が設定されていたため、存在しないドメイン名を参照してエラーが発生していました。
修正内容
DomainNameReferenceのdomainNameプロパティとARN生成時のresourceNameが、attrs.regionalDomainNameからattrs.name(カスタムドメイン名)を使用するように修正されました。
// 修正前(v2.234.0-v2.235.0)
public readonly domainNameRef: DomainNameReference = {
domainName: attrs.regionalDomainName, // ❌ リージョナルドメイン名
domainNameArn: Stack.of(this).formatArn({
// ...
resourceName: attrs.regionalDomainName, // ❌ リージョナルドメイン名
}),
};
// 修正後(v2.235.1)
public readonly domainNameRef: DomainNameReference = {
domainName: attrs.name, // ✅ カスタムドメイン名
domainNameArn: Stack.of(this).formatArn({
// ...
resourceName: attrs.name, // ✅ カスタムドメイン名
}),
};
修正後の正しい使い方
import * as apigwv2 from 'aws-cdk-lib/aws-apigatewayv2';
// 別のスタックやアカウントで作成されたカスタムドメイン名をインポート
const importedDomain = apigwv2.DomainName.fromDomainNameAttributes(this, 'ImportedDomain', {
name: 'api.example.com', // カスタムドメイン名
regionalDomainName: 'd-xxxxxxxx.execute-api.us-east-1.amazonaws.com', // リージョナルドメイン名
regionalHostedZoneId: 'Z1234567890ABC', // ホストゾーンID
});
// インポートしたドメインを使用してHTTP APIを作成
const api = new apigwv2.HttpApi(this, 'HttpApi', {
createDefaultStage: true,
defaultDomainMapping: {
domainName: importedDomain, // ✅ v2.235.1で正常動作
mappingKey: 'v1', // オプション: パスマッピング
},
});
影響を受けるバージョン
- 影響あり: v2.234.0, v2.234.1, v2.235.0
- 修正済み: v2.235.1以降
v2.233.0以前を使用している場合、またはDomainName.fromDomainNameAttributes()を使用していない場合は影響を受けません。
Alphaモジュール (2.235.1-alpha.0)
このリリースでは、Alphaモジュールに変更はありません。
まとめ
AWS CDK v2.235.1は、API Gateway V2の重要なリグレッションを修正するパッチリリースです。DomainName.fromDomainNameAttributes()でインポートしたカスタムドメイン名を使用している場合は、v2.235.1へのアップグレードを推奨します。
v2.234.0〜v2.235.0を使用していて、インポートしたドメイン名でデプロイエラーが発生している場合は、このバージョンにアップグレードすることで問題が解決されます。