1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】検証!CloudFormation IDE Experienceを使ってサクッとCloudFormationを書こう

1
Last updated at Posted at 2025-12-02

はじめに

この記事では「この前リリースされた機能って実際に動かすとどんな感じなんだろう」とか「もしかしたら内容次第では使えるかも??」などAWSサービスの中でも特定の機能にフォーカスして検証していく記事です。

主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど)
誤りなどがあれば書き直していく予定です。

今回はCloudFormation IDE Experienceを検証してみます。

今のはCDKじゃねぇ、CloudFormationだ

AWS CDKやTerraformなどのIaCツールが普及してきていますが、やはりCloudFormationを直接使いたいというニーズも根強くあります。
例えば以下のようなケースです。

  • 既存のCloudFormationテンプレートを活用したい
  • IaCツールを導入するほどではないのでCloudFormationでインフラを管理したい
  • IaCツールの学習コストを避けたい

あるいはIaC個々の辛みを避けるために、CloudFormationを選択する場合もあります。
Terraformの状態管理の煩雑さや、CDKのバージョンアップに伴う互換性問題などが挙げられます。

と言ってもCloudFormationにも落とし穴があります。
例えば以下のような問題です。

  • テンプレートの記述ミスや構文エラーの検出が難しい
  • リソース間の依存関係の把握が困難
  • 大規模なテンプレートの管理が複雑
  • json/yamlの記述が煩雑でミスが発生しやすい

筆者はyamlで書くことが多く、基本的には自動生成されたものを修正して使うことが多いのですが、やはりミスが発生しやすいです。
言語サーバー(LSP)やリンターがあったら便利だなと思っていたところに、今回のCloudFormation IDE Experienceの発表がありました。

CloudFormation IDE Experience とは

簡単に説明すると、CloudFormationテンプレートの作成と管理を支援するためのIDE(統合開発環境)向けの機能セットです。これにより、開発者はCloudFormationテンプレートをより効率的に作成、編集、デバッグできるようになります。

公式ブログには以下のように説明されています。

IDE内でエンドツーエンドの開発ループを構築することで、コードとしてのインフラストラクチャの構築方法を刷新します。一般的なYAMLやJSONエディタとは異なり、これはインフラストラクチャ開発者向けに特別に構築されたCloudFormationファーストのソリューションです。
※一部抜粋して翻訳

引用:Announcing CloudFormation IDE Experience: End-to-End Development in Your IDE

なお、この機能を利用するには、拡張機能としてAWS ToolkitをIDEにインストールする必要があります。

セットアップ

まずはAWS ToolkitをVSCodeの拡張機能としてインストールします。

AWS Toolkit - VSCode Marketplace

ハンズオン

早速試してみます。今回はいくつかのシナリオを試してみます。

  • パブリックサブネットを持つVPCのCloudFormationテンプレート作成
  • サブネットを重複させてみる
  • 既存のリソースからテンプレートを生成してみる

パブリックサブネットを持つVPCのCloudFormationテンプレート作成

以下のようなCloudFormationテンプレートをtemplate.ymlとして作成します。

Resources:
  AppVpc:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
      - Key: Name
        Value: dev
  PublicSubnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref AppVpc
      CidrBlock: 10.0.1.0/24
      MapPublicIpOnLaunch: true

すると以下のように、Resourcesで破線が表示されます。

cfn1.png

これはAppVpcのサブネットがパブリックとして設定されていることを警告しており、AWSのセキュリティの柱となるルールに基づき、セキュリティとコンプライアンスをチェックしています。

また、VpcId!Refを使用した際、利用できるリソースの候補が表示されます。(template.ymlを修正して実際にやってみましょう)

サブネットを重複させてみる

次に、同じCIDRブロックを持つサブネットを追加してみます。PublicSubnetAPublicSubnetBを作成し、同じCIDRブロックを指定します。

Resources:
  AppVpc:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
      - Key: Name
        Value: dev
  PublicSubnetA:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref AppVpc
      CidrBlock: 10.0.1.0/24
      MapPublicIpOnLaunch: true
  PublicSubnetB:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref AppVpc
      CidrBlock: 10.0.1.0/24
      MapPublicIpOnLaunch: true

すると以下のように、CIDRブロックの重複に関する警告が表示されます。MapPublicIpOnLaunchの警告も引き続き表示されています。

cfn2.png

既存のリソースからテンプレートを生成してみる

AWS Toolkitを使用して、既存のリソースからCloudFormationテンプレートを生成することもできます。

まずはtemplate3.ymlというファイルを作成して開いたままにします。

次にAWS Toolkitを開き、CloudFormationセクションに移動して+をクリックします。

cfn3.png

リソースタイプを入力するように求められるので、AWS::S3::Bucketと入力します。

cfn4.png

チェックボックスにチェックを入れて、OKをクリックします。

cfn5.png

すると、ResourcesセクションのS3バケットにアクセスする項目が生成されるので展開します。

cfn6.png

筆者の環境ではS3バケットが複数あるため、S3バケット一覧が表示されます。表示内容は環境のよって異なります。
ここで+をクリックすると、選択したS3バケットのCloudFormationテンプレートがtemplate3.ymlに生成されます。

cfn7.png

これにより、既存のインフラストラクチャをコードとして管理することが容易になります。

まとめ

CloudFormationはAWSを勉強し始めた頃に触る最初のIaCで最初はなかなかとっつきにくいところがあると思います。

CloudFormationのドキュメントを読めるようになるとある程度ですが、勘と経験でエラーはなんとかなることもあります。

それでもどうにもならないときというとどの設定を忘れているのかを特定できないこともあるかと思います。※昔はそういうのでめちゃくちゃ悩んでました。

CloudFormation IDE Experienceを使うことでCloudFormationの構文をあまり知らなくても実装することができます。
とはいっても、最近ではコーディングエージェントを使うことである程度ちゃんとしたCloudFormationがかけてしまうので、この機能の良さについてはなんとも言えないのが現状です。

しかし、今回の拡張機能を使うことでベストプラクティスに沿ったコードを書くことや検知がリアルタイムでできるのでそれはとても役に立つだろうなと思いました。

使えるタイミングがあったら積極的に使いたいと思いました。

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?