Back to Releases
v2.178.1 2025年2月7日

AWS CDK v2.178.1 リリース解説

CLI の SDK ログ出力問題とカスタムリソースの Provider Framework Lambda の権限不足を修正したパッチリリース

clicustom-resourcelambda

概要

AWS CDK v2.178.1 は、2つの重要なバグを修正したパッチリリースです。このリリースでは、CLI で SDK ログが常に出力される問題と、カスタムリソースの Provider Framework Lambda に必要な IAM 権限が不足していた問題が修正されました。

バグ修正

CLI: SDK ログが常に出力される問題の修正

関連PR: #33324 関連Issue: #33320

v2.173.0 の PR #33273 で導入された変更により、CLI を実行すると SDK のログが常に出力されるようになっていました。この問題により、ログ出力を有効にしていない場合でも、AWS SDK の詳細なログが表示されていました。

影響を受けるケース

以下のような通常の CDK CLI コマンドを実行した際に、不要な SDK ログが表示されていました:

# 通常のデプロイコマンドでもSDKログが表示される
cdk deploy

# 出力例(本来表示されるべきでないログ)
[AWS SDK] Request: ...
[AWS SDK] Response: ...

修正内容

SDK ログの出力レベルが正しく設定されていなかったため、常にログが出力されていました。このリリースでは、ログレベルを正しく設定することで、明示的にログ出力を有効にした場合のみログが表示されるようになりました。

修正されたファイル:

  • packages/aws-cdk/lib/api/aws-auth/sdk-logger.ts - ログレベルの設定を修正
  • packages/aws-cdk/test/api/aws-auth/sdk-logger.test.ts - テストケースを更新

SDK ログを有効にする方法

必要に応じて SDK ログを有効にするには、以下の環境変数を設定します:

# デバッグログを有効にする
export AWS_SDK_JS_LOG_LEVEL=debug
cdk deploy

# または、CDK のログレベルを verbose に設定
cdk deploy --verbose

影響範囲

この修正により、すべての CDK CLI コマンドで不要なログ出力がなくなり、より見やすい出力が得られるようになります:

  • cdk deploy
  • cdk synth
  • cdk diff
  • cdk destroy
  • その他すべての CLI コマンド

カスタムリソース: Provider Framework Lambda に GetFunction 権限を追加

関連PR: #33315 関連Issue: #26838

カスタムリソースの Provider Framework で使用される Lambda 関数に lambda:GetFunction 権限が不足していたため、特定の状況下でエラーが発生していました。

問題の背景

Provider Framework Lambda には、ユーザー定義ハンドラー Lambda の呼び出しでエラーが発生した場合、その Lambda が ACTIVE 状態になるまでポーリングする機能があります(PR #22612 で追加)。

このポーリング処理では、AWS SDK の waitUntilFunctionActiveV2 関数を使用しており、内部的に Lambda の GetFunction API を呼び出します。しかし、Provider Framework Lambda の IAM ロールに lambda:GetFunction 権限が付与されていなかったため、以下のようなエラーが発生していました:

AccessDeniedException: User is not authorized to perform: lambda:GetFunction

影響を受けるケース

この問題は、以下のような状況で発生していました:

  1. カスタムリソースを使用している
  2. ユーザー定義ハンドラー Lambda の呼び出しでエラーが発生する
  3. Lambda 関数が INACTIVE 状態になっている(14日間使用されていない関数など)
import * as cdk from 'aws-cdk-lib';
import * as cr from 'aws-cdk-lib/custom-resources';
import * as lambda from 'aws-cdk-lib/aws-lambda';

const stack = new cdk.Stack();

// ユーザー定義のカスタムリソースハンドラー
const onEventHandler = new lambda.Function(stack, 'OnEventHandler', {
  runtime: lambda.Runtime.NODEJS_20_X,
  handler: 'index.onEvent',
  code: lambda.Code.fromAsset('lambda'),
});

// Provider Framework を使用したカスタムリソース
const provider = new cr.Provider(stack, 'MyProvider', {
  onEventHandler: onEventHandler,
  // ハンドラーがINACTIVE状態でエラーになった場合、
  // Provider Framework Lambda がポーリングを試みるが、
  // GetFunction 権限がないため失敗していた
});

new cdk.CustomResource(stack, 'MyCustomResource', {
  serviceToken: provider.serviceToken,
});

修正内容

Provider Framework Lambda の IAM ロールに lambda:GetFunction 権限が追加されました。これにより、ユーザー定義ハンドラー Lambda の状態をポーリングする処理が正常に動作するようになります。

修正後、Provider Framework Lambda は以下の権限を持ちます:

// Provider Framework Lambda のロールに追加された権限
{
  Effect: 'Allow',
  Action: [
    'lambda:InvokeFunction',  // ユーザー定義ハンドラーの呼び出し(既存)
    'lambda:GetFunction',     // 関数の状態確認(新規追加)
  ],
  Resource: '<ユーザー定義ハンドラーのARN>',
}

影響範囲

この修正により、以下のシナリオでカスタムリソースがより安定して動作するようになります:

  • 長期間使用されていない Lambda 関数(INACTIVE 状態)を使用するカスタムリソース
  • エラーハンドリングとリトライが必要なカスタムリソース
  • Provider Framework を使用するすべてのカスタムリソース

注意事項

この変更は IAM 権限の追加であり、既存のカスタムリソースの動作に影響を与えません。デプロイ時に Provider Framework Lambda のロールが自動的に更新されます。

# アップグレード後、次のデプロイで権限が自動的に追加される
npm install aws-cdk-lib@2.178.1
cdk deploy

Alpha モジュール

Alpha モジュール (2.178.1-alpha.0) には変更はありません。

まとめ

AWS CDK v2.178.1 は、CLI とカスタムリソースに関する2つの重要なバグを修正するパッチリリースです。

  • CLI: 不要な SDK ログが常に表示される問題を修正し、より見やすい出力を実現
  • カスタムリソース: Provider Framework Lambda に不足していた lambda:GetFunction 権限を追加し、エラーハンドリングの安定性を向上

特にカスタムリソースを使用しているプロジェクトや、CLI の出力が冗長に感じていた場合は、このバージョンへのアップグレードを推奨します。

# アップグレード方法
npm install aws-cdk@2.178.1 aws-cdk-lib@2.178.1

参考リンク