VSCode extentions dành cho AWS - phần 1 - edit CloudFormation template YAML 🧘‍♀️

VSCode extentions dành cho AWS - phần 1 - edit CloudFormation template YAML 🧘‍♀️

CloudFormation Linter

Khi mới bắt đầu edit AWSTemplateFormat trên vscode, nếu bạn gặp lỗi do vscode báo chỗ !Refunknow tag trong file AWSTemplateFormatVersion yaml thì bạn hãy cài thêm CloudFormation Linter extention đi nhé. Đó là do bạn đang cài redhat.vscode-yaml exention. Mặt khác redhat.vscode-yaml cũng chính là 1 dependencies - cái xây dựng nên CloudFormation Linter extension.

Ta phải cài dependencies của extention này, không đơn gian chỉ là ấn install trên mục extensions của vscode đâu. Đầu tiên là redhat.vscode-yaml extention.

Sau đó ta phải cài python3 đã, sau đó cài pipcfn-lint:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py

# test
pip --version
# if ok, delete unused `get-pip.py`
rm get-pip.py

# for lint
pip install cfn-lint

# for graph
pip install pydot

Đối với môi trường Ubuntu, mình đã thử cài và gặp vấn đề PIP package không tự động được thêm vào PATH nên trên vscode - file yaml vẫn hiển thị cảnh báo không tìm thấy cfn-lint. Đối với trường hợp này, có nhiều cách thêm cfn-lint vào PATH nhưng cách đơn giản nhất là dùng sudo:

sudo pip install cfn-lint

Vậy là ta có thể dựa vào cfn-lint để đọc và hiển thị các vấn đề về file template.

Còn 1 tính năng rất hay ho đó là render sơ đồ khối cấu trúc AWS mà CloudFormation này đang mô tả, thật sự hữu ích khi debug và rất trực quan. Để sử dụng ta cài pip install pydot như trên và:

  • ctrl + shift + P
  • cloud
  • chọn Preview CloudFormation template as graph

Kết quả là:

graph

hair flip

aws-cloudformation-yaml

aws-cloudformation-yaml cung cấp cho ta tính năng gõ tắt để gen ra 1 file template hoàn chỉnh, thêm vào nữa là khả năng gợi ý cú pháp cho CloudFormation.

Ví dụ ta gõ !And ta sẽ có gợi ý như sau:

recommended

Extention này sẽ tự động thêm Condition1Condition2 cho bạn tương ứng với cú pháp của AWS CloudFormation Fn::And.

Danh sách hỗ trợ gợi ý cú pháp cho các function bao gồm:

Functions có sẵn:

  • !FindInMap
  • !GetAtt
  • !GetAZs
  • !Cidr
  • !ImportValue
  • !Join
  • !Select
  • !Split
  • !Sub
  • !Ref

Condition Functions:

  • !And
  • !Equals
  • !If
  • !Not
  • !Or

like a boss

Vậy là ta đã có đủ bộ linter - check chính tả, review, gõ tắt cú pháp dành cho CloudFormation.

Tham khảo


Photo by Annie Spratt on Unsplash