1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudFormation テンプレート作成をより便利にするVSCodeの拡張機能

Last updated at Posted at 2024-11-14

1. はじめに

株式会社TechoesインフラチームのOです。
今回は、AWS CloudFormationのテンプレート作成をVSCodeで行う際に、拡張機能のCloudFormationでテンプレートやリソースの骨組みを作成したり、CloudFormation Linter, Cfn-Nag Linterで静的解析を行ったりするための環境構築をまとめました。

2. 実行環境

  • macOS Sequoia 15.0.1
  • Homebrew 4.4.5

3. 環境構築

1. CloudFormation : テンプレートの骨組みを作成する機能

  • VSCode拡張機能からインストール

  • CloudFormationに紐付いてYAML(拡張機能)もインストールされる
    yaml.png

  • YAML : 歯車マークから設定を開き、settings.jsonを開く
    4-yaml-customtag.png

  • CloudFormationの独自関数はエラーとして認識されるためカスタムタグを設定
    (YAMLスキーマを登録しておくと指定したフォルダ構成時に自動で適用される)

settings.json
"yaml.schemas": { "https://d33vqc0rt9ld30.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json": [
        "templates/*.yaml",
    ]
},
"yaml.customTags": [
    "!And",
    "!If",
    "!Not",
    "!Equals",
    "!Or",
    "!FindInMap sequence",
    "!Base64",
    "!Cidr",
    "!Ref",
    "!Sub",
    "!GetAtt",
    "!GetAZs",
    "!ImportValue",
    "!Select",
    "!Select sequence",
    "!Split",
    "!Join sequence"
]

2. CloudFormation Linter : 静的解析

  • VSCode拡張機能からインストール

※ 拡張機能だけでは利用できないので下記手順を踏む

  • cfn-lintをターミナルからインストール
  • cfn-lintのパスを保存
brew install cfn-lint
which cfn-lint
  • 設定でCFn Lint:Pathを検索して、保存したパスを入力
    3-cfn-path.png

3. Cfn-Nag Linter : セキュリティチェック

  • VSCode拡張機能からインストール

※ 拡張機能だけでは利用できないので下記手順を踏む

  • Cfn-Nagをターミナルからインストール
  • Cfn-Nagのパスを保存
1. brew install ruby brew-gem
2. brew gem install cfn-nag
3. which cfn_nag
  • 設定でCFn Nag Lint:Pathを検索して、保存したパスを入力
    スクリーンショット 2024-11-12 16.30.14.png

4. 使い方

  1. yaml.schemasでパス(templates/*.yaml)を通しているのでtemplatesフォルダと任意のyamlファイルを作成 → cfn-lintがファイルに適用される

  2. startと入力すると、CloudFormationの骨組みを自動生成
    ※ 今回はResourcesのみ使用する
    1start.png

  3. vpcでリソースの作成

  4. ターミナルを開き cfn-lint ファイル名.yamlを実行

  5. テンプレートに問題がある場合、エラーとして出力される
    3vpc temp err.png

  6. security-groupを作成して、必要な項目を追加

  7. ターミナルを開き cfn_nag ファイル名.yamlを実行

  8. セキュリティに問題がある場合、警告を出してくれる
    スクリーンショット 2024-11-13 14.11.34.png

  9. metadataに出力されたidを書くと警告されたルールを許可(非表示)できる
    (例 : VPCフローログをアタッチしたくない)
    スクリーンショット 2024-11-13 14.50.22.png

test.yaml
Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 0.0.0.0/0
      EnableDnsSupport: true
      Tags:
        - Key: name
          Value: value
    Metadata:
      cfn_nag:
        rules_to_suppress:
          - id: W60

5. おすすめの設定と拡張機能

  1. Editor: Auto Indent (設定)
    改行時にインデントを自動で調整されないようにする設定→ストレス減
    スクリーンショット 2024-11-14 12.06.06.png

  2. Editor: Bracket Pairs (設定)
    括弧の色付け機能
    スクリーンショット 2024-11-14 14.04.29.png

  3. Editor: Format On Save (設定)
    保存するとCfn-lint, Cfn-Nagが実行→エラーや警告を出力
    スクリーンショット 2024-11-12 17.24.23.png

  4. Error Lens : エラーを表示
    2.併用すると警告が出ている箇所にエラーメッセージも表示されるので必須
    スクリーンショット 2024-11-14 11.57.19.png

  5. indent-rainbow : インデントを深さごとに色付け
    LambdaやIAMロールなどを作成する時にインデントが深くなりがちなので、色があることによりズレを防止できる。
    スクリーンショット 2024-11-13 15.13.42.png

  6. Code Spell Checker : スペルミスを強調表示
    スペルミスを修正するだけでなく、修正候補も提示してくれるので便利
    独自の変数名などはuser settingに追加するとエラーとして表示されない
    スクリーンショット 2024-11-13 15.13.50.png

6. まとめ

環境構築の難易度も低く、CloudFormationでテンプレートや作りたいリソースの骨組みを簡単に作成したり、Linter, Nag Linterでテンプレートに問題がないか確認できるため、以前に比べて作業効率が大幅に上がりました。また、おすすめの拡張機能と併用することでミスも減りました。

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?