みなさんこんばんは。
年明け早々 aws-cdk のリポジトリを見に行ったら、割と影響の大きそうなリリースがされていたのでキャッチアップを兼ねて記事を書くことにしました。 cdk を利用している全ての方の参考になれば幸いです。
結論
AWS CDK CLI v2.1100.0(2025年12月12日リリース)以降で、テレメトリデータの自動収集が有効になりました。
- 対象: CDK CLI v2.1100.0 以降を使用するすべてのユーザー
- 方式: デフォルト有効(オプトアウト方式)
- v2.1100.0未満: 収集されない
オプトアウトしたい場合は、後述の方法で無効化できます。
何が収集されるか
収集されるデータ
| 項目 | 内容 |
|---|---|
| 識別子 | Installation ID, Session ID, Event ID(ランダムUUID) |
| 環境情報 | CDKバージョン, Node.jsバージョン, OS, リージョン, タイムスタンプ |
| 実行情報 | コマンド, パラメータ, 実行時間, 成功/失敗 |
| 依存関係 | AWS所有ライブラリのバージョン(aws-cdk-lib等) |
| その他 | CI/CD環境かどうか, リソース数, エラー名 |
フリーテキスト(スタック名等)はすべてサニタイズされ、$STACK1 のような形式に置換されます。
収集されないデータ
- 顧客コンテンツ(Customer Content)
- AWSアカウントID
- エラーメッセージ、スタックトレース、ログ
顧客コンテンツ(Customer Content)とは
- ユーザーがAWSサービスに転送・処理・保存するソフトウェア、データ、テキスト、画像、その他のコンテンツ
- AWSアカウント内でユーザーが作成・管理するすべてのもの
エラー詳細情報は明示的なオプトインが必要で、現時点では収集機能自体が未実装です。
送信先(エンドポイント): cdk-cli-telemetry.us-east-1.api.aws/metrics
経緯
この変更は Issue #34892 で議論されました。多数の反対リアクションとコメントが寄せられ、大きな議論を呼びました。
2025/7/2:テレメトリ収集の発表
CDKチームが「8月8日以降にテレメトリ収集を開始する」と発表。当初の仕様では、匿名化されたアカウントIDやエラーログも収集対象に含まれていました。
2025/7/10:コミュニティの反応を受け仕様変更
プライバシーや透明性に関する懸念を受け、以下の変更が発表されました:
- 匿名化アカウントID、エラーログ、エラーメッセージ、スタックトレースは明示的オプトインなしでは収集しない
- ドメインブロックによる組織的オプトアウト方法をドキュメント化
- グローバルフラグによるオプトアウト改善の検討(現在の公式手段は
--no-version-reporting) -
cdk cli-telemetry --statusコマンドの追加 - リリース日を9月に延期
2025/8/1:ローカル確認機能のリリース
v2.1022.0 で、収集されるデータを事前に確認できるローカルファイル書き出し機能がリリースされました。
# v2.1100.0 未満の場合(--unstable=telemetry が必須)
cdk deploy --unstable=telemetry --telemetry-file=my/local/filepath
# v2.1100.0 以降の場合
cdk deploy --telemetry-file=my/local/filepath
2025/8/29:リリース日を9月15日以降に延期
2025/9/26:リリース日未定に
継続的な議論を受け、リリース日を「未定」に変更。
2025/11/12:12月12日リリースを発表
v2.1100.0 での収集開始を正式発表。テレメトリエンドポイントは cdk-cli-telemetry.us-east-1.api.aws/metrics であることが公開されました。
2025/12/12:テレメトリ収集開始
v2.1100.0 がリリースされ、テレメトリ収集が開始されました。
なぜオプトアウト方式なのか
コミュニティからは「オプトイン方式にすべき」という意見が多数ありましたが、最終的にオプトアウト方式が採用されました。
CDKチームが述べた目的:
- CLIの回帰を素早く検出する
- 実際の使用状況に基づいて機能の優先順位を決める
オプトアウト方式の理由は明示されていません。 一般的には、オプトインだとデータ収集率が低くなり統計的に有意なデータが得られない、という理由が挙げられることが多いです。なお、npm や VS Code など他の主要CLIもオプトアウト方式を採用しています。
コミュニティからの主な反論:
- 全環境でオプトアウト設定するのは負担が大きい
- GDPRとの整合性への懸念
オプトアウト方法
プロジェクト単位
コマンドで設定する場合:
cdk cli-telemetry --disable # 無効化
cdk cli-telemetry --enable # 有効化
cdk.context.json に { "cli-telemetry": false } または { "cli-telemetry": true } が追加されます。
設定ファイルで設定する場合:
cdk.json に以下を追加:
{
"cli-telemetry": false
}
マシン全体(グローバル)
~/.cdk.json に以下を追加:
{
"context": {
"cli-telemetry": false
}
}
環境変数
export CDK_DISABLE_CLI_TELEMETRY=true
組織・企業向け(ネットワークレベル)
以下のドメインをファイアウォールでブロック:
cdk-cli-telemetry.us-east-1.api.aws
現在の状態確認
cdk cli-telemetry --status
環境変数、cdk.json、~/.cdk.json などすべての設定を考慮した上でステータスが表示されます。
実行結果の例(有効な場合):
CLI Telemetry is enabled. See https://github.com/aws/aws-cdk-cli/tree/main/packages/aws-cdk#cdk-cli-telemetry for ways to disable.
最後に
知らず知らずのうちにテレメトリーデータが外部に送信されていたとなるといくら匿名化されているとはいえかなりヒヤッとするでしょうから、cdk のバージョンを更新する際は皆さんご注意ください。