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

GitHub Actions で CloudFormation template の Linter の実行

Last updated at Posted at 2024-07-21

CloudFormation の template にも Linter があることを知ったので、記事にしておきます。
CloudFormation のベストプラクティスに Linter が記載されていました。

install

Linter(cfn-lint) は Python で実装されているため、 Python が必要となります。

pip3 install cfn-lint

cfn-lint

試しに、未使用の Parameter(ExistingVPC)があるテンプレートファイルに cfn-lint を実行してみます。

template/sample.yml
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
  ExistingSecurityGroups:
    Type: List<AWS::EC2::SecurityGroup::Id>
  ExistingVPC:
    Type: AWS::EC2::VPC::Id
    Description: The VPC ID that includes the security groups in the ExistingSecurityGroups parameter.
  InstanceType:
    Type: String
    Default: t2.micro
    AllowedValues:
      - t2.micro
      - m1.small

下記のように、5行目の ExistingVPC が未使用という指摘が出ます。

$ cfn-lint template/*.yml
W2001 Parameter ExistingVPC not used.
template/sample.yml:5:3

E1151 '!Ref ExistingVPC' is not a 'AWS::EC2::VPC.Id'
template/sample.yml:56:7

GitHub Actions

GitHub にテンプレートを push した時に、cfn-lint が実行されるように GitHub Action を設定します。

.github/workflows/test.yml
name: CloudFormation lint

on:
  push:
    branches:
        - '**'
    tags-ignore:
        - '**'

jobs:
  cfn-lint:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v3

    - name: Install cfn-lint
      shell: bash
      run: pip3 install cfn-lint

    - name: cfn-lint
      shell: bash
      run: |
        cfn-lint template/*.yml

Push 時に cfn-lint が実行され、テンプレートファイルに指摘がある場合は、エラーとなります。

スクリーンショット 2024-07-21 19.46.08.png

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