View a markdown version of this page

CloudFormation 言語サーバー - AWS CloudFormation

CloudFormation 言語サーバー

AWS CloudFormation 言語サーバーは、エディタでの CloudFormation テンプレートの記述に役立ちます。入力すると同時にリソースタイプとプロパティを提案し、ドキュメントを表示して、エラーを検出するとともに、定義へのジャンプ機能や一部の問題の修正案も提供します。言語サーバープロトコル (LSP) を使用しているため、サーバーはさまざまなエディタと連動できます。これらのローカルオーサリング機能のための言語サーバーの起動と使用に AWS アカウントや AWS 認証情報は必要ありません。

AWS Toolkit 統合も、AWS サービスを呼び出すオンラインワークフローに言語サーバーを使用します。これらのワークフローは、リソースとスタックを参照できます。また、サービス側でのテンプレート検証の実行、テンプレートのデプロイ、変更セット差分の表示、スタックイベントのモニタリングを行うこともできます。これらのオンラインワークフローは、アクティブな AWS アカウントと有効な AWS 認証情報が必要になる唯一の機能です。

さまざまなエディタのリリースノートとセットアップ例については、GitHub の「CloudFormation Language Server」を参照してください。

CloudFormation 言語サーバーと統合する IDE

AWS は、次の IDE の AWS Toolkit を介して CloudFormation 言語サーバーとの既成統合を提供します。

次の IDE も CloudFormation 言語サーバーをサポートします。

  • Kiro:

  • カーソル

  • ほとんどの VS Code フォークとディストリビューション

Visual Studio Code IDE および JetBrains IDE の場合は、AWS Toolkit をインストールします。Toolkit には言語サーバーが含まれており、自動的に起動されるため、言語サーバーを個別にダウンロードする必要はありません。

LSP をサポートする別のエディタの場合は、GitHub の「最新リリース」からお使いのコンピュータ用のファイルをダウンロードし、ファイルを展開して、次のコマンドを実行するようにエディタを設定します。

node /path/to/install-location/cfn-lsp-server-standalone.js --stdio

サポートされている Node.js バージョン、利用可能なダウンロード、ファイル検証、異なるエディタのセットアップ例については、「スタンドアロンインストールガイド」を参照してください。

開始方法

次のステップは、Visual Studio Code IDE および JetBrains IDE 向けの AWS Toolkit を使用して言語サーバーを使用する方法を説明します。別のエディタの場合は、「スタンドアロンインストールガイド」のセットアップ例に従ってください。

前提条件

開始する前に、以下を確認してください。

  • macOS、Windows、または Linux でサポートされている IDE を使用していること。

  • Visual Studio Code IDE および JetBrains IDE の場合は、AWS Toolkit をインストールします。

  • 別のエディタの場合は、サポートされている Node.js バージョンをインストールし、お使いのコンピュータ用の言語サーバーファイルをダウンロードします。サポートされているバージョンとファイルのリストは、スタンドアロンインストールガイドに掲載されています。

言語サーバーの起動、またはそのローカルオーサリング機能とテンプレートチェック機能の使用に AWS アカウントや AWS 認証情報は必要ありません。リソースまたはスタックを参照するオンラインワークフローを使用する、CloudFormation サービスを呼び出す、またはテンプレートをデプロイする場合にのみ、Toolkit で有効な AWS 認証情報を設定します。

ステップ 1: AWS Toolkit をインストールまたはアップグレードする

IDE の拡張機能またはプラグインマネージャーから最新バージョンの AWS Toolkit のインストールまたは最新バージョンへの更新を行い、IDE を再起動します。

インストール後、AWS Toolkit は自動的に CloudFormation IDE のサポートを有効にします。CloudFormation 言語サーバーが含まれる AWS Toolkit を初めてインストールまたはアップグレードすると、匿名の使用状況データを収集するための許可を AWS に付与するよう求められます。このデータは、AWS が CloudFormation 言語サーバーを改善し、オーサリングエクスペリエンスを向上させるのに役立ちます。機密情報は収集されず、AWS はテンプレートコンテンツ、リソース設定、または識別可能な顧客データを記録したり保存したりしません。IDE 設定からテレメトリ設定は、いつでも変更できます。変更を有効にするには、IDE を再起動します。収集された使用状況データは、機能インタラクションとパフォーマンスメトリクスのみに焦点を当てています。これらのインサイトは、AWS が検証の迅速化、オートコンプリートの強化、エラー診断の改良など、改善点を特定して優先順位を付けるのに役立ちます。

ステップ 2: AWS Toolkit で CloudFormation にアクセスする

AWS Toolkit をインストールした後、IDE で CloudFormation パネルを開きます。VS Code で、アクティビティバーから AWS Toolkit パネルを開き、[CLOUDFORMATION] を選択します。JetBrains IDE で、サイドバーから AWS Toolkit ツールウィンドウを開き、[CloudFormation] タブを選択します。

CloudFormation パネルには、以下のセクションが含まれています。

  • [リージョン]: 現在の AWS リージョン を表示します。VS Code では、リージョン名を選択するか、コマンドパレットから [AWS CloudFormation: Select Region] コマンドを使用して変更できます。JetBrains IDE では、リージョンは AWS Toolkit 接続設定を使用して設定されます。

  • [スタック]: アカウントの CloudFormation スタックのページ分割されたリストを表示します。スタックを展開して、そのスタックに関連付けられた変更セットを一覧表示する [Change Sets] ノードを表示します。[View Stack Detail] アクションを使用して、スタックの概要、イベント、出力、リソースが表示されるスタックの詳細ビューを開きます。

  • [Resources]: リソースタイプを追加すると、パネルにアカウントのそのタイプの AWS リソースが表示されます。テンプレートを表示、更新、コピー、またはテンプレートにインポートできます。

JetBrains IDE では、ツリーの上にあるツールバーから、[Validate and Deploy]、[Rerun Validate and Deploy]、Add Resource Type]、[Refresh] などの一般的なアクションにすばやくアクセスできます。アクションには、ツリーノードの右クリックコンテキストメニューからもアクセスできます。

ステップ 3: テンプレートを検証、テスト、および改善する

CloudFormation テンプレートを記述すると、CloudFormation 言語サーバーがバックグラウンドで実行され、AWS 認証情報なしでローカルオーサリング支援を提供します。

  • コード補完: CloudFormation スキーマに基づいてリソースタイプ、パラメータ、およびプロパティを提案します。

  • パラメータに抽出する: カーソルがテンプレートのリテラル値 (t2.micro などの文字列) にある場合、IDE は、値を Parameters セクションに抽出してリテラルを新しいパラメータへの !Ref でリテラルを置き換えるリファクタリングアクションを提供します。同じリテラル値が複数の場所に表示されている場合は、すべてのインスタンスを一度に抽出することができます。

Toolkit は、テンプレートに既存の AWS リソースを追加するためのオンラインワークフローも提供します。このワークフローには有効な AWS 認証情報が必要です。ワークフローは、AWS クラウドコントロール API (CCAPI) を使用してリソースのライブ設定とプロパティを取得することで、テンプレート内の既存インフラストラクチャのクローン作成や再利用を支援します。

リソースをテンプレートに追加するには

  • リソースタイプを追加する: AWS Toolkit CloudFormation パネルの [リソース] で、参照するリソースタイプを追加します。VS Code では、[Add +] アイコンをクリックするか、コマンドパレットから [AWS CloudFormation: Add Resource Types] コマンドを使用します。JetBrains では、ツールバーの [Add Resource Type] ボタンをクリックするか、[Resources] ノードを右クリックします。

  • リソースタイプを検索する: 検索ダイアログで、追加する AWS リソースタイプを入力します。例:

    • AWS::S3::Bucket

    • AWS::Lambda::Function

  • リソースを参照する: [リソース] セクションには、アカウントで検出された AWS リソースのページ分割されたリストが表示されます。多くのリソースがある場合は、最初のページのみが表示されます。追加のページ間を移動し、使用可能なすべてのリソースを表示するには、ナビゲーションコントロールを使用します。

  • テンプレートに含めるリソースを選択します。

  • リソースをテンプレートに挿入するには、目標に応じて、2 つの方法があります。

    • 既存のリソースのクローンを作成する: 既存の AWS リソースのライブ設定とプロパティを使用して、テンプレートに新しいリソースを作成します。

    • 既存のリソースをインポートする: ライブの状態を使用して実際のリソースをテンプレートに追加することで、そのリソースをスタックに挿入します。

ヒント

  • [リソース] セクションはいつでも更新して、アカウントまたはリージョンで利用可能なリソースの最新リストを表示できます。

  • リソースをインポートしている場合は、同じアカウントの既存の CloudFormation スタックに既に属しているリソースを追加しないでください。

  • リソースが既に CloudFormation によって管理されているかどうかを確認するには、リソースの横にある情報アクションを使用します。VS Code では、[i] アイコンをクリックします。JetBrains IDE では、リソースを右クリックして [Get Stack Management Info] を選択します。

VS Code で、コマンドパレットから [AWS CloudFormation: Add Related Resources by Type] コマンドを実行します。テンプレートで既に定義されているリソースタイプからリソースタイプを選択します。IDE は、選択されたタイプがそのプロパティを通じて参照できるリソースタイプを一覧表示します。例えば、AWS::EC2::Instance を選択した場合、IDE は AWS::EC2::SecurityGroup または AWS::EC2::Subnet を提案する場合があります。1 つ、または複数の関連リソースタイプを選択してから、新しいリソース定義を作成するか、既存のリソースをインポートするかを選択します。現在、この機能は JetBrains IDE ではサポートされていません。

静的検証

CloudFormation 言語サーバーは、CloudFormation Linter と CloudFormation Guard を活用する組み込みの静的検証を提供します。これらのチェックはバックグラウンドでローカルに実行され、AWS 認証情報は必要ありません。これらは、デプロイ前に構文エラー、コンプライアンス不備、ベストプラクティス問題を特定するのに役立ちます。

静的検証の概要

IDE には 2 種類のリアルタイム静的検証が示されます。

  • CloudFormation Linter (cfn-lint): CloudFormation リソース仕様とスキーマルールに対してテンプレートを検証します。

  • Guard (cfn-guard): コンプライアンスルールと組織ポリシーパックに対してテンプレートを検証します。

CloudFormation Linter (cfn-lint)

CloudFormation Linter は、IDE に統合されており、入力時にテンプレートの構文と構造を自動的にチェックします。

  • スキーマの検証: 構文とスキーマのエラーを検出して、テンプレートが CloudFormation リソーススキーマに準拠していることを確認します。

  • エラーの強調表示: デプロイのブロッカーまたは警告を表すインラインマーカーが問題の下に表示されます。

  • マウスホバーのヘルプ: エラーの上にマウスを置くと、その問題に関連する診断メッセージが IDE に表示されます。利用可能な場合は、クイック修正も提供されます。

Guard 統合

Guard は、コンプライアンスポリシーとセキュリティポリシーを定義するルールセットに対してテンプレートを検証します。IDE は CloudFormation 言語サーバーを介してリアルタイムで Guard 検証を実行し、テンプレートの作成中にすぐにフィードバックを提供します。

  • デフォルトルールパック: IDE には、リソースのセキュリティと設定の健全性に関する基本的なベストプラクティスに焦点を当てた、事前登録済みの一連の Guard ルールが含まれています。詳細については、GitHub の「AWS Guard Rules Registry」を参照してください。

  • ルールパックの追加: ルールセットを追加または変更するには、IDE 設定を開いて Guard 設定セクションにナビゲートし、追加の Guard ルールパックを選択またはアップロードします。

ヒント: 診断インジケーターの理解

  • 青のインジケーター: ベストプラクティスのヒントまたは最適化の推奨事項。

  • 黄色のインジケーター: ノンブロッキングの問題 (タグやパラメータの欠落など) に関する警告。

  • 赤のインジケーター: 無効なプロパティ名、必須フィールドの欠落、スキーマの不一致などのデプロイブロッカー。

ステップ 4: テンプレート内をナビゲートする

IDE は、Parameters、Resources、Outputs、Mappings などのセクションに整理された CloudFormation テンプレートの構造化された階層ビューを提供し、各リソースタイプと論理 ID を示します。これにより、大きなテンプレート内の特定のリソースやパラメータをすばやく見つけてナビゲートすることが容易になります。VS Code では、この構造は [Explorer] サイドバーの [Outline] パネルに表示されます。JetBrains IDE では、[Structure] ツールウィンドウを開くと現在開いているファイルのテンプレート構造が表示されます。

GetAtt や Ref などの組み込み関数用に [定義に進む] を使用して、テンプレート内の参照されるリソースやパラメータに直接ジャンプすることができます。これは、依存関係を追跡し、リソースの関係を理解し、編集をより効率的に行うことに役立ちます。

ステップ 5: 検証してデプロイする

[検証とデプロイ] は、CloudFormation サービスを呼び出すオンラインワークフローであり、有効な AWS 認証情報が必要です。テンプレートをデプロイする準備ができたら、この機能を使用して変更セットを作成します。テンプレートが IDE によって検証されます。ブロッキングエラーが見つからない場合は、ドリフト対応変更セットの作成に進みます。次に、IDE に差分ビューが表示されるので、変更セットを実行する前に、提案されたすべての変更を確認できます。

VS Code では、コマンドパレットを開き、[AWS CloudFormation: Validate and Deploy] を実行します。テンプレート、スタック名、パラメータ、機能、その他のデプロイオプションの選択がコマンドパレットでステップごとにガイドされます。JetBrains IDE では、ツールバー [Validate and Deploy] ボタンを使用するか、エディタでテンプレートファイルを右クリックするか、ツリーでスタックを右クリックします。JetBrains でウィザードダイアログが表示され、テンプレートの選択、スタック名、パラメータ、機能、タグ、詳細オプションなど、すべてのデプロイオプションを設定できます。

検証の仕組み

IDE はデプロイ前の検証チェックを自動的に実行し、次のような一般的な障害の原因に対してテンプレートを検証します。

  • 無効なプロパティ構文またはスキーマの不一致: これらの問題は通常、オーサリング中に cfn-lint によって検出されますが、それらに対処せずにデプロイを進めた場合、CloudFormation のデプロイ時の検証で、スタックが作成または更新される前に同じエラーが表示されます。

  • リソース名が、アカウント内の既存のリソースと競合しています。

  • S3 バケット名の競合や暗号化の欠落など、サービス固有の制約。

検証でエラーが検出された場合、IDE では問題が直接テンプレート内で強調表示され、診断パネルにエラーが一覧表示されます。各問題には、推奨される修正とともに、障害の原因となった特定のプロパティまたはリソースが含まれます。ブロックエラーがない場合は、デプロイフェーズに進むことができます。

警告が見つかった場合 (ノンブロッキングの問題)、ダイアログが表示され、デプロイを続行するか、キャンセルして修正することができます。

IDE で [ドリフト対応変更セット] が開き、現在のテンプレートとデプロイされたスタック設定の違いが表示されます。これにより、実行前に変更セットを確認、確認、またはキャンセルできます。デプロイをキャンセルすると、変更セットが削除されます。

ドリフト対応変更セットは、スタックドリフトを安全に処理できるようにすることで、CloudFormation のデプロイプロセスを強化します。スタックドリフトは、リソースの実際の状態が CloudFormation テンプレートで定義されているものと異なる場合に発生します。これは多くの場合、AWS マネジメントコンソール、CLI、または SDK を介して行われた手動による変更が原因です。CloudFormation のドリフト対応変更セット は、処理されたスタック設定をライブのリソースの状態と比較し、IDE はこれらの違いを明らかにするので、デプロイ前にリソースをコンプライアンス状態に戻すことができます。

スタックイベントを表示する

デプロイが開始されたら、進捗状況を CloudFormation パネルからリアルタイムでモニタリングできます。[スタックイベント] には、デプロイ中に実行されたオペレーションのリストが表示されます。各イベントには、次のような詳細が含まれます:

  • [タイムスタンプ] — イベントが発生した時刻

  • [リソース]: 作成、更新、または削除される特定の AWS リソース

  • [ステータス]: オペレーションの現在の状態 (CREATE_IN_PROGRESS、UPDATE_COMPLETE、ROLLBACK_IN_PROGRESS など)

  • [理由]: 該当する場合、追加のコンテキストまたはエラーメッセージ

このパネルからスタックの [リソース] と [出力] を表示することもできます。[スタックイベント] ビューは、デプロイの進行状況を追跡し、潜在的な問題を特定し、スタックが正常に完了したことを確認するのに役立ちます。

IDE で CloudFormation プロジェクトを初期化する (VS Code のみ)

IDE での CloudFormation プロジェクトの初期化は、サービス側での検証とデプロイ用の正しいフォルダと環境設定を使用した構造化ワークスペースのセットアップに役立ちます。これらのオンラインワークフローには AWS 認証情報が必要ですが、言語サーバーのローカルオーサリング機能と静的検証機能には必要ありません。IDE から直接新しい CloudFormation プロジェクトを初期化して、この推奨セットアップを作成できます。現在、この機能は VS Code でのみ使用可能で、JetBrains IDE ではサポートされていません。

CloudFormation プロジェクトを初期化するには:

  • コマンドパレットを開きます

    • VS Code から、コマンドパレット (macOS の Ctrl+Shift+P または Cmd+Shift+P) を開きます。

    • [AWS CloudFormation: CFN Init: プロジェクトを初期化する] を選択します。

  • プロジェクトディレクトリを選択する

    • デフォルト: IDE は現在の作業ディレクトリを使用します。

    • このパスを CloudFormation テンプレートを保存する任意のフォルダに変更することができます。

  • AWS 認証情報プロファイルを選択する

    • AWS 認証情報プロファイルを選択するように求められます。選択したプロファイルは、環境の検出、サービス側での検証、デプロイに使用されます。

  • 環境をセットアップする

    • 環境を作成または選択するように求められます。

    • 環境は、テンプレートをデプロイまたは検証する場所と方法 (開発、ベータ、本番稼働など) を定義します。[AWS CloudFormation: CFN Init: 環境を追加する] を使用して、環境を選択または変更できます。

    • [AWS CloudFormation: CFN Init: Remove Environment] を使用して、選択した環境を削除できます。

  • (オプション) パラメータファイルをインポートする

    • 既存のパラメータファイルが既にある場合、IDE は初期化中にそれらをインポートすることを許可します。

    • IDE は互換性のあるファイルを自動的に検出し、テンプレートの検証とデプロイで使用するためにそれらをプロジェクトにリンクします。

  • プロジェクトを命名して確定する

    • ベータ環境などのプロジェクト名を提供し、セットアップを完了します。

    • IDE は、最初のプロジェクト構造と設定ファイルを作成します。

IDE から直接、検証を実行したり、デプロイをプレビューしたり、環境を切り替えたりできます。

サポートが必要ですか?

AWS re:Post で CloudFormation コミュニティをお試しください。