TECH PLAY

Datadog

イベント

該当するコンテンツが見つかりませんでした

マガジン

該当するコンテンツが見つかりませんでした

技術ブログ

本記事は 2026 年 3 月 31 日 に公開された「 Announcing General Availability of AWS DevOps Agent  」を翻訳したものです。 本日、 AWS DevOps Agent の一般提供開始をお知らせします。AWS DevOps Agent は、いつでも対応可能な運用チームメイトです。インシデントの解決とプロアクティブな予防を行い、アプリケーションの信頼性とパフォーマンスを最適化し、そして AWS、マルチクラウド、オンプレミス環境をまたいでオンデマンドの SRE タスクをこなします。 運用チームはインシデント調査、複数ツールにわたるデータの相関付け、アラートの手動トリアージに膨大な時間を費やしています。この運用負荷がエンジニアをイノベーションや戦略的な業務から遠ざけています。AWS DevOps Agent は、経験豊富な DevOps エンジニアのようにインシデントを調査し、この負担を解消します。アプリケーションとその関係性を学習し、オブザーバビリティツール、ランブック、コードリポジトリ、CI/CD パイプラインと連携して、それら全てのテレメトリ、コード、デプロイデータを横断的に相関付けます。プレビュー期間中、AWS DevOps Agent を使用したお客様とパートナーからは、MTTR が最大 75% 削減、調査時間が 80% 短縮、根本原因特定精度が 94% を達成し、インシデント解決が 3〜5 倍速くなったと報告されています。 プレビュー開始以降、さまざまな業界の組織が AWS DevOps Agent を運用ワークフローに統合しています。彼らは AWS DevOps Agent を Amazon CloudWatch と、 Datadog 、 Dynatrace 、 New Relic 、 Splunk 、 GitHub 、 GitLab 、 ServiceNow 、 Slack のようなパートナーツールと接続しています。今回の GA リリースでは、 Azure 、 Azure DevOps 、 PagerDuty 、 Grafana などの組み込みサポートを追加しました。 AWS DevOps Agent の仕組み AWS DevOps Agent は、 フロンティアエージェントという新しいクラスのエージェントです。目標達成のために自律的に動作し、大規模な並行タスクに対応して、人間の常時監視なしで継続的に稼働します。AWS DevOps Agent は、検知から調査、復旧、予防まで、インシデントライフサイクル全体を通じて運用チームと連携します 。 自律的なインシデント対応 AWS DevOps Agent は、深夜 2 時でもピーク時間帯でも、アラートを受信した瞬間から調査を開始します。平均復旧時間 (MTTR) を短縮し、アプリケーションを最適なパフォーマンスに迅速に復旧します。 AWS DevOps Agent のインシデント対応調査記録 プロアクティブなインシデント予防 AWS DevOps Agent は、チームをリアクティブな消火活動からプロアクティブな運用改善へと導きます。過去のインシデントパターンを分析し、的確な推奨事項を提供します。推奨事項は将来のインシデントを予防し、プロセスとシステムのレジリエンスを強化します。 カテゴリ別の推奨事項を表示する予防ダッシュボード オンデマンド SRE タスクの処理 AWS DevOps Agent はあなたの環境を深く理解しています。単に質問するだけでなく、アプリケーション環境をより深く掘り下げられます。カスタムチャートやレポートを作成、保存、共有できます。 インフラストラクチャをクエリするための会話型 AI アシスタントを備えたオンデマンド SRE チャットインターフェース 一般提供での新機能 GA リリースでは、お客様のフィードバックに基づいて AWS DevOps Agent の機能を拡張しました。多様な運用環境でインシデント対応をよりスケーラブルで、柔軟に、インテリジェントにするようになりました。 ユースケースの拡大 Azure サポート: AWS DevOps Agent は AWS 環境を超えて Azure ワークロードのインシデント調査にも対応するようになりました。マルチクラウドデプロイメント全体のデータを相関付けて、アプリケーションが AWS、Azure、またはその両方で実行されていても一貫したインシデント対応を実施します。 オンプレミスサポート: AWS DevOps Agent は Model Context Protocol (MCP) を使用してオンプレミスアプリケーションのインシデント調査にも対応するようになりました。メトリクス、ログ、コードを分析してオンプレミスリソースを検出し、包括的なトポロジを構築します。AWS、Azure、オンプレミス環境全体で一貫したインシデント対応を実施します。 オンデマンド SRE タスク: 会話型 AI アシスタントを使用して、AWS、 マルチクラウド 、オンプレミス環境全体でアプリケーションアーキテクチャについてのクエリやシステムヘルスの分析を自然言語で行えるようになりました。リソース、システムメトリクス、アラームステータス、デプロイ履歴、インシデントパターンについて質問できます。即座にコンテキストに応じた回答を取得し、カスタムチャートやレポートを作成してチームと保存・共有できます 。 Triage Agent : Triage Agent はインシデントの重大度を自動評価し、重複チケットを特定します。重複を検出すると、メイン調査に「LINKED」ステータスでリンクします。リンクされたタスクは自動開始されないため、ノイズを減らしてチームの取り組みを主要インシデントに集中できます。 インテリジェンスの強化 学習済みスキル: AWS DevOps Agent は組織の調査パターン、ツール使用、トポロジから学びます。チームが特定タイプのインシデントを解決する方法に基づいてスキルを構築します。時間とともに、組織固有の運用課題への対応力が向上します。 カスタムスキル: システム固有の調査手順、ベストプラクティス、組織のナレッジを追加できるようになりました。ワークフローを一度作成すれば、関連するすべての調査で自動的に使用されます。スキルは特定のエージェントタイプ (On-demand、Incident Triage、Incident RCA、Incident Mitigation、Evaluation) に設定できます。コンテキスト消費を削減し、フォーカスを向上させます。 コードインデックス: エージェントはアプリケーションコードリポジトリをインデックス化できるようになりました。コード構造を理解し、調査中に潜在的なバグを特定し、緩和計画の一部としてコードレベルの修正を提案できます。 新しいインテグレーション Datadog、Dynatrace、New Relic、Splunk、GitHub Actions、GitLab CI/CD、ServiceNow との既存インテグレーションに加え、以下のインテグレーションを追加しました: PagerDuty : PagerDuty アラートによる自動インシデント対応のネイティブインテグレーション Grafana: 組み込みの Grafana MCP サーバーは、セルフマネージド、Grafana Cloud、Amazon Managed Grafana を含むあらゆる Grafana インスタンスに接続できます。接続後、エージェントは Prometheus、Loki、OpenSearch などのインスタンスに設定されたすべてのデータソースにアクセスできます。オープンソースのテレメトリモニタリングとシステムイントロスペクションを実現します。 Azure DevOps : Azure 環境でのデプロイとコード変更を追跡する Azure Pipelines とのインテグレーション Amazon EventBridge : カスタム自動化ワークフロー用に Amazon EventBridge 経由で調査イベントが利用可能になりました。 新しい API : AWS CLI 、 AWS SDK 、 AWS MCP Server のサポートを更新 これらのインテグレーションにより、AWS DevOps Agent は既存の運用ツールチェーンとシームレスに連携できます。 エンタープライズ対応機能 リージョン拡大: AWS DevOps Agent は本日から一般提供を開始し、世界中の6つのリージョンで利用できます。北米では米国東部 (バージニア北部) と米国西部 (オレゴン)、欧州ではフランクフルトとアイルランド、アジアパシフィックではシドニーと東京で利用可能です。ワークロードがどこで実行されていても、エージェントをより近くに配置できます。この地理的分散により、データレジデンシー要件を満たしながら運用チームのレイテンシーを削減できます。 プライベート接続: AWS DevOps Agent のプライベート接続によって、あなたの Agent Space は VPC や内部ネットワークで実行されているサービスへ、パブリックインターネットにさらされることなく安全に接続できるようになりました。プライベート接続は、MCPサーバー、セルフホストのGrafanaまたはSplunkインスタンス、ソース管理システムなど、プライベートエンドポイントに到達する必要のあるあらゆるインテグレーションと連携します。プライベート接続の仕組みについては、「 VPC 内のプライベートサービスに AWS DevOps Agent をセキュアに接続する 」を参照してください。 セキュリティ: AWS DevOps Agent はカスタマーマネージドキーと、オペレーターポータルアクセス用の Okta および Microsoft Entra ID との直接 ID プロバイダー (IdP) 統合をサポートするようになりました。 ローカライゼーション: AWS DevOps Agent はブラウザのロケール設定に応答し、エージェントの応答を翻訳するようになりました。グローバルチームが好みの言語で AWS DevOps Agent とやり取りできます。 お客様の成功事例 早期に導入いただいたお客様はすでに大幅な運用改善を実現しています。 Western Governors University Western Governors University (WGU) は 191,000 人以上の学生にサービスを提供するオンライン大学のリーダーであり、AWS DevOps Agent を本番環境に導入した最初の組織の 1 つです。大規模な Dynatrace ユーザーとして、WGU は AWS DevOps Agent のネイティブ Dynatrace インテグレーションを活用し、Dynatrace Intelligence が問題レコードを自動的にエージェントにルーティングして調査し、充実した調査結果を Dynatrace に直接返します。 最近の本番調査では、WGU の SRE チームが AWS DevOps Agent を使用してサービス中断シナリオを分析し、総解決時間を推定 2 時間からわずか 28 分に短縮しました。これは MTTR が 77% 改善したことを示しています。エージェントは Lambda 関数設定内にある根本原因を迅速に特定し、以前は埋もれていた内部ドキュメントにのみ存在していた重要な運用知識を発掘しました。 「エージェントは決定的な証拠を提供し、Lambda が原因であることを特定しました。調査はフロントエンドで確認した内容とほぼ完璧に一致するメトリクスを示しました。昨日は大きな勝利でした。発見を加速し続けられれば、組織にとってどれほどの勝利になるか言葉では表せません」と Angel Marchena 氏 (技術運用ディレクター) は述べています。 AWS DevOps Agent Skills 機能を活用する計画により、WGU は調査時間をさらに短縮する軌道に乗っています。 Zenchef Zenchef は、レストランが予約、テーブル運営、デジタルメニュー、決済、ゲストマーケティングを手数料なしの単一システムで管理できるレストランテクノロジープラットフォームです。少人数の DevOps チームが部門間で共有の本番環境を管理しているため、彼らは実際の試練に直面しました。社内ハッカソン中に顧客向けの問題が発生したのです。ほとんどのエンジニアはイベントに集中しており、また、モニタリングには解決への正しい方向を示すような重要な情報は何も表示されていませんでした。 エンジニアをハッカソンから引き離す代わりに、チームは問題を AWS DevOps Agent に入力しました。エージェントは体系的に問題に取り組みました。認証を手がかりとして除外し、ECS デプロイメントの調査に方向転換し、最終的に GitHub をホストする EC2 インスタンスの IAM 設定ミスが根本原因であることを突き止めました。調査全体は 20〜30 分で完了し、手動で行った場合の 1〜2 時間と比較して約 75% の削減でした。調査結果は担当エンジニアに直接共有され、スムーズな引き継ぎが行われました。 「ハッカソン中、調査する余裕はほぼありませんでしたが、調査をする必要もありませんでした。私たちは常に数手先を読もうとしていますが、このようなプロアクティブな調査は通常は不可能です。DevOps Agent は我々のプラットフォームの動作を理解する新しい方法になっています。」と Theo Massard 氏 (プラットフォームエンジニアリングマネージャー) は述べています。 T-Mobile T-Mobile US, Inc. は米国を代表するワイヤレスキャリアの 1 つであり、全米で 1 億 4,000 万人以上の加入者にモバイル音声、メッセージング、データサービスを提供しています。 「AWS が AWS DevOps Agent を発表したとき、T-Mobile は初日からテーブルについていました。設計のパートナーとして、AWS DevOps Agent が本番環境全体で根本原因分析を大幅に改善できることを確認しました。私たちの実際のフィードバックが製品の進化に直接影響を与えました。私たちのインフラストラクチャは複数のクラウドとオンプレミス環境にまたがり、アプリケーションログはオンプレミスの Splunk デプロイメントに集約されています。AWS DevOps Agent がこれらの多様な環境全体で Splunk とシームレスに統合してログを分析できる能力は、ソリューションの試験運用を続ける中で大きな影響を与えています」と Aravind Manchireddy 氏 (SVP、テクノロジーオペレーション) は述べています。 Granola Granola は、文字起こしと要約の重労働を処理する AI 搭載のメモ帳であり、お客様は手動でメモを取ることに気を取られることなく完全に集中できます。AWS DevOps Agent は Granola の AI 搭載インシデント管理ワークフローにシームレスに統合され、根本原因分析を加速し、平均解決時間を短縮します。 「AWS DevOps Agent をインシデント対応プロセスに直接統合し、重大度の高い CloudWatch アラームで自動的に調査をトリガーしています」と Granola の Eddie Bruce 氏は述べています。「AWS DevOps Agent のデータベース調査機能、特に PostgreSQL ログの分析と RDS パフォーマンスインサイトの表示は、評価した他のツールを一貫して上回っています。SRE 機能を拡張する中で、AWS DevOps Agent はインシデント管理ツールキットの一翼を担っていることが証明されています」と Eddie Bruce 氏 (プロダクトエンジニア) は述べています。 その他のお客様の成功事例は AWS DevOps Agent の お客様 ページをご覧ください。 Getting Started AWS DevOps Agent は本日から利用可能です。すぐに価値を実感する方法を紹介します: クイックウィンから始める Agent Space を作成: AWS マネジメントコンソール で AWS DevOps Agent に移動し、最初の Agent Space を作成します。 オブザーバビリティツールを接続: 既存のツール (Datadog、Grafana、Dynatrace など) をリンクして、エージェントがテレメトリデータにアクセスできるようにします。 最初の調査を実行: 自動インシデント対応を設定するか、Web アプリを使用してアラートを手動で調査します。エージェントの調査結果を確認し、学習済みスキルを改善するためのフィードバックを提供します。 最近のインシデントを再調査: 過去 30 日間にチームが調査した本番インシデントを選択します。AWS DevOps Agent を使用して同じ問題を調査し、結果を比較します。時間短縮と精度向上をすぐに実証できます。 成功を加速する 本番ベストプラクティスに従う: エージェントを運用ワークフローに統合するガイダンスについては、 AWS DevOps Agent を本番環境にデプロイするためのベストプラクティス をご覧ください。 影響を測定する: MTTR の改善、調査時間の短縮、正解率を追跡して、AWS DevOps Agent が組織にもたらす価値を定量化します。 体系的に拡大する: 1 つのチームまたはサービスから始め、価値を実証してから、追加のチームとユースケースに拡大します。 料金 AWS DevOps Agent では、エージェントが運用タスクに費やした時間に対して秒単位で課金されます。前払いのコミットメントはありません。いつでもエージェントの使用を開始および停止できます。AWS サポートのお客様は、AWS サポート支出総額の一定割合に基づいて、AWS DevOps Agent 使用量に対する月額クレジットを受け取ります。割合はサポートプランによって異なります。料金の詳細については、AWS DevOps Agent の 料金ページ をご覧ください。 まとめ 詳細については、 AWS DevOps Agent をご覧いただき、 ユーザーガイド をご確認ください。ご質問や AWS DevOps Agent が組織にどのように役立つかについては、AWS アカウントチームにお問い合わせください。今すぐ サインアップ しましょう。 翻訳はソリューションアーキテクトの大西朔が担当しました。原文は こちら です。 著者について Madhu Balaji AWS のシニア WW Agentic Development スペシャリスト SA として、お客様のクラウドソリューションの設計と実装を支援しています。開発とアプリケーションアーキテクチャで 20 年以上の経験を持ち、エージェント AI と AI 搭載開発者ツールを専門としています。AI コーディングアシスタント、開発者生産性プラットフォーム、AWS でのソフトウェア構築とデプロイ方法を変革する自律型 AI エージェントに関する専門知識を持っています。
目次 はじめに 背景と課題 避難訓練の全体像 GUIベースのツールを選定した理由 AIによるシナリオ ...
はじめに こんにちは。プラットフォームエンジニアリングチームに所属している徳富( @yannKazu1 )です。 新規プロダクトを立ち上げるとき、インフラ構築って意外とやることが多いですよね。その中でも地味にめんどくさいのが DBユーザーの作成と権限付与 。手動でやると「あ、権限つけ忘れた」「このユーザー名スペルミスってない?」みたいなヒヤリハットが発生しがちです。 今回は、この作業をTerraformでIaC化した話を書いていきます。 背景:ボイラープレートでインフラ構築を爆速にしている 弊社では Terraformのボイラープレート と、それをもとにインフラを構築するための Devinへの指示プロンプト をセットで管理しているリポジトリがあります。 新規プロダクトのインフラが必要になったら、このリポを使ってDevinにお願いするだけ。数時間もあれば、AWSアカウントの作成、VPC・ECS・Auroraなどの基盤構築、Terraform実行に必要なIAMロール・バックエンド・CI/CDワークフローの設定に加え、Datadog設定、監査設定、ログ基盤の作成まで、必要なインフラがひととおり立ち上がります。 このボイラープレートを整備するにあたって目指したのは、「Devinにお願いするだけで、新規プロダクトのインフラを簡単に作れる状態」でした。ところが、 DBユーザーの作成だけはどうしても手動作業が残ってしまっていました 。 せっかくDevinに投げれば数時間でインフラができるのに、DBユーザーだけは人間が踏み台経由でDBに繋いで CREATE USER して GRANT して……とやらないといけない。これだとボイラープレートの意味が薄れてしまいますし、手動オペレーションにはミスのリスクもあります。 ここをTerraformでIaC化できれば、ボイラープレートにサクッと組み込めて、Devinに任せるだけでインフラ構築が完結するようになります。 なぜTerraform? DBユーザーの管理といえばAnsibleを使うパターンも考えました。ただ、弊社のインフラは基本的にTerraformで一元管理しているので、できればTerraformの中で完結させたい。ツールが増えると学習コストも運用コストも増えますし、ボイラープレートにAnsibleのステップを追加するよりも、Terraformモジュールとして組み込む方がシンプルです。 というわけで、Terraformでなんとかする方向で調査を進めました。 Aurora Data APIという選択肢 弊社ではAurora MySQLを使用しており、バージョン3.07以降でRDS Data APIに対応しています。 Data APIは、HTTPSエンドポイント経由でSQLを実行できるAPIです。従来のようにVPC内から直接DBに接続する必要がなく、AWS CLIやSDKからサクッとSQLを叩けます。 これを terraform_data リソースの local-exec プロビジョナーと組み合わせれば、Terraformの中からDBユーザーを作成できるというわけです。 モジュールの実装 実際に作ったTerraformモジュールを紹介します。 DBユーザーの作成・削除 resource "terraform_data" "db_user" { input = { rds_cluster_arn = var.rds_cluster_arn rds_secret_arn = var.rds_secret_arn database_name = var.database_name username = var.username ssm_parameter_name = var.ssm_parameter_name } provisioner "local-exec" { command = <<-EOT PASSWORD=$(aws ssm get-parameter --name "$ { self.input.ssm_parameter_name } " --with-decryption --query 'Parameter.Value' --output text) aws rds-data execute-statement \ --resource-arn "$ { self.input.rds_cluster_arn } " \ --secret-arn "$ { self.input.rds_secret_arn } " \ --database "$ { self.input.database_name } " \ --sql "CREATE USER IF NOT EXISTS '$ { self.input.username } '@'%' IDENTIFIED BY '$PASSWORD'" EOT } provisioner "local-exec" { when = destroy command = <<-EOT aws rds-data execute-statement \ --resource-arn "$ { self.input.rds_cluster_arn } " \ --secret-arn "$ { self.input.rds_secret_arn } " \ --database "$ { self.input.database_name } " \ --sql "DROP USER IF EXISTS '$ { self.input.username } '@'%'" EOT } } ポイントは以下のとおりです。 terraform_data リソースを使って、 local-exec プロビジョナーでData API経由のSQLを実行 CREATE USER IF NOT EXISTS で冪等性を担保 when = destroy のプロビジョナーで、 terraform destroy 時にユーザーを自動削除 パスワードはSSM Parameter Storeから取得(後述の工夫で安全に管理) 権限の付与・取り消し resource "terraform_data" "db_grant" { for_each = { for idx, grant in var.grants : idx => grant } depends_on = [ terraform_data.db_user ] input = { rds_cluster_arn = var.rds_cluster_arn rds_secret_arn = var.rds_secret_arn database_name = var.database_name username = var.username privileges = each.value.privileges grant_database = coalesce (each.value.database, var.database_name) grant_table = coalesce (each.value.table, "*" ) } provisioner "local-exec" { command = <<-EOT aws rds-data execute-statement \ --resource-arn "$ { self.input.rds_cluster_arn } " \ --secret-arn "$ { self.input.rds_secret_arn } " \ --database "$ { self.input.database_name } " \ --sql "GRANT $ { self.input.privileges } ON $ { self.input.grant_database } .$ { self.input.grant_table } TO '$ { self.input.username } '@'%'" EOT } provisioner "local-exec" { when = destroy command = <<-EOT aws rds-data execute-statement \ --resource-arn "$ { self.input.rds_cluster_arn } " \ --secret-arn "$ { self.input.rds_secret_arn } " \ --database "$ { self.input.database_name } " \ --sql "REVOKE $ { self.input.privileges } ON $ { self.input.grant_database } .$ { self.input.grant_table } FROM '$ { self.input.username } '@'%'" || true EOT } } for_each で権限セットを柔軟に定義できるようにしています。DMLとDDLを分けて付与したい、みたいなケースにも対応可能です。 使い方 モジュールの呼び出しはこんな感じです。 module "db_user_app" { source = "../../modules/db_user" rds_cluster_arn = module.aurora_main.cluster_arn rds_secret_arn = module.aurora_main.cluster_master_user_secret [ 0 ] .secret_arn database_name = "hoge_db" username = "hoge_app_user" ssm_parameter_name = aws_ssm_parameter.app_db_password.name depends_on = [ aws_ssm_parameter.app_db_password, module.aurora_main, ] grants = [ { # DML権限: データの読み書き privileges = "SELECT, INSERT, UPDATE, DELETE" } , { # DDL権限: マイグレーション実行用(テーブル作成・変更・削除、インデックス操作) privileges = "CREATE, ALTER, DROP, INDEX, REFERENCES" } ] } DMLとDDLの権限を分けて書けるのが個人的に気に入っています。どの権限を付与しているかが一目でわかりますし、将来的に読み取り専用ユーザーを追加したいときもモジュールを再利用するだけでOKです。 パスワードをstateに残さない工夫 ここが今回一番こだわったポイントです。 Terraformでパスワードを扱うとき、普通にやるとstateファイルにパスワードが平文で残ってしまいます。 sensitive = true をつけても、plan出力でマスクされるだけでstateには書き込まれてしまう。これはセキュリティ的によろしくないですよね。 そこで活用したのが、 Terraform 1.10で導入された ephemeral リソース と、 Terraform 1.11で導入された value_wo (write-only引数) です。 ephemeral "random_password" "app_db" { length = 32 special = false } resource "aws_ssm_parameter" "app_db_password" { name = "/$ { var.app_name } /$ { var.env } /db/app_user_password" type = "SecureString" value_wo = ephemeral.random_password.app_db.result value_wo_version = 1 } ephemeral リソースとは Terraform 1.10で登場した新しいリソースタイプです。通常の resource や data と違い、planやstateに一切値が保存されません。毎回のplan/apply時に一時的に生成され、使い終わったら破棄されます。 ephemeral "random_password" を使うことで、パスワードの生成結果がstateに残ることを防げます。従来の resource "random_password" だと、生成したパスワードがstateファイルにそのまま記録されてしまっていたので、これは大きな改善です。 value_wo (write-only引数)とは Terraform 1.11で導入されたwrite-only引数の仕組みです。 aws_ssm_parameter リソースの value_wo を使うと、SSM Parameter Storeへの書き込みは行われますが、その値がTerraformのstateやplanファイルに保存されることはありません。 value_wo_version は変更検知のためのバージョン番号です。パスワードをローテーションしたい場合はこの値をインクリメントすれば、次のapply時に新しいパスワードが生成・設定されます。逆にバージョンを変えなければ、 ephemeral が毎回新しいパスワードを生成しても、SSM Parameter Storeの値は更新されません。 この2つを組み合わせることで、パスワードの生成から保存まで、 一度もstateファイルにパスワードが記録されない フローが実現できました。 現時点での制約:パスワードの更新には対応していない ここまで読んで「パスワードのローテーションはどうするの?」と思った方もいるかもしれません。正直に言うと、 このモジュールはパスワードの更新( ALTER USER )には対応していません 。 理由はシンプルで、Terraformのプロビジョナーには when = create と when = destroy しかなく、 when = update が存在しない からです。つまり、リソースの入力値が変わったときに「更新用のSQLを実行する」ということができません。 terraform_data の input が変わると、Terraformは古いリソースをdestroyしてから新しいリソースをcreateする(replace)動きになります。DBユーザーの場合、これは DROP USER → CREATE USER という流れになるので、パスワード変更だけしたいケースには少々大げさです。 この when = update の追加については、HashiCorpのGitHubリポジトリにIssueが上がっています( hashicorp/terraform#35825 )。いつか実装されれば、パスワードローテーションもこのモジュールの中でスマートに対応できるようになるはずです。それまでは、パスワードの更新が必要になった場合は手動対応か、別の仕組みで対応する必要があります。 とはいえ、新規プロダクト立ち上げ時の初期ユーザー作成という用途においては、create/destroyだけで十分に機能しています。 まとめ やったことをまとめると以下のとおりです。 Aurora MySQLのData API(3.07以降で利用可能)を使って、Terraformの terraform_data + local-exec でDBユーザーの作成・権限付与をIaC化 Terraform 1.10の ephemeral リソースと1.11の value_wo を活用して、パスワードをstateに残さないセキュアな構成を実現 これらをモジュール化してボイラープレートに組み込み、新規プロダクトのインフラ構築をさらにスムーズに プロビジョナーに when = update がないため、パスワードの更新には現時点では未対応 Terraformの ephemeral や value_wo はまだ比較的新しい機能なので、知らない方も多いかもしれません。パスワード管理で困っている方はぜひ試してみてください。 参考リンク Amazon Aurora MySQL で RDS Data API のサポートを開始 RDS Data API でサポートされているリージョンと Aurora DB エンジン - Amazon Aurora Terraform 1.11 brings ephemeral values to managed resources with write-only arguments Ephemeral values in Terraform Ephemeral values in resources | Terraform | HashiCorp Developer Use temporary write-only arguments | Terraform | HashiCorp Developer I would like provisioner/s to support when=update - hashicorp/terraform#35825

動画

該当するコンテンツが見つかりませんでした

書籍