Kanji
・클라우드 엔지니어 / 프리랜서 ・1993년생 ・에히메현 출신 / 도쿄도 시부야구 거주 ・AWS 경력 5년 프로필 상세
목차
VS 마켓플레이스 링크
이 플러그인은 VS Code를 일본어로 번역합니다.
기본적으로 VS Code는 설치 후 영어로 되어 있습니다.일본어로 사용하고 싶다면 이 플러그인을 설치해 주세요.
GitHub Copilot은 AI 기반 코드 완성 플러그인입니다.
구현하려는 프로세스를 함수 이름이나 설명에 설명하면 Copilot이 그에 맞는 코드를 제안합니다.
30일 무료 평가판이 있지만 계속 사용하려면 유료 요금제(월 $10 또는 연간 $100)가 필요합니다.
공식 페이지에는 Python, JavaScript, TypeScript, Ruby, Go, C# 및 C++에 특히 적합하다고 명시되어 있지만 Terraform 및 CloudFormation과 같은 인프라 코드에도 사용할 수 있습니다.
제 경험상 GitHub Copilot을 사용하면 개발 속도가 두 배 이상 빨라지므로 적극 추천합니다.
프로젝트에 대해 GitHub Copilot을 비활성화하려면 기본 설정에 다음 설정을 추가하여 해당 프로젝트에서 Copilot을 사용할 수 없게 만드세요.
{ "github.copilot.enable": { "*": false } }
텍스트를 선택하고 단축키(기본값은 Alt + Shift + T )를 누르면 구글 번역에 의한 번역 결과가 표시됩니다.
Alt + Shift + T
vscode를 벗어나지 않고도 번역이 가능하기 때문에 함수 이름을 생각하고 주석과 Git 커밋 메시지를 영어로 번역하고 싶을 때 유용합니다.
선택한 텍스트를 카멜 케이스, 스네이크 케이스, 파스칼 케이스 등으로 변환해주는 플러그인입니다.
대소문자를 변환하려는 텍스트를 선택하고 명령 팔레트(Windows(Windows는 Ctrl + Shift + P , Mac은 Command + Shift + P ))에서 다음 메뉴를 선택하여 변환할 수 있습니다.
Ctrl + Shift + P
Command + Shift + P
체인지 케이스 카멜
대소문자 상수 변경
대소문자 변경
케이스 케밥 변경
케이스 하단 변경
대소문자 변경 lowerFirst
케이스번호 변경
Case 매개변수 변경
케이스 변경 파스칼
케이스 경로 변경
사례문 변경
케이스 스네이크 변경
케이스 교체 변경
케이스 제목 변경
케이스 상부 변경
대소문자 upperFirst 변경
Draw.io는 무료로 사용할 수 있는 무료 사용 도구입니다.
draw.io 의 툴을 웹 브라우저에서 사용할 수 있으나, 내부 보안 규정으로 인해 웹에서 고객 정보를 입력할 수 없는 경우 오프라인에서도 사용할 수 있는 VSCode 플러그인을 사용할 수 있습니다.
AWS, GCP, Azure용 아키텍처 다이어그램을 생성하는 데 사용할 수 있습니다. 기존 아이콘만 있지만 복사하여 붙여넣기로 이미지를 가져오거나 XML 파일을 가져오는 방식으로 표준 아이콘 외 다른 항목을 사용할 수 있습니다.
Prettier는 다양한 언어를 지원하는 코드 포맷터입니다.
해당 언어는 [Prettier란 무엇인가요?]에 설명되어 있습니다.· 더 예뻐요](https://prettier.io/docs/en/).
언어에 따라 주요 Formatter가 많이 있지만, 넣어두면 일부 언어와 호환됩니다.
VS Marketplace 링크
SSH 연결을 이용하여 원격 서버에 연결하기 위한 플러그인입니다.
연결된 원격 서버 파일을 vscode에서 편집할 수 있습니다.
~/.ssh/config 에 연결 대상 정보를 기술함으로써 연결 정보를 중앙에서 관리할 수 있습니다.
~/.ssh/config
WSL(Linux용 Windows 하위 시스템)을 사용하여 WSL에서 실행되는 vscode를 시작하는 플러그인입니다.
WSL을 사용하는 사용자에게 꼭 필요한 플러그인입니다.
Docker 컨테이너를 이용하여 개발 환경을 구축하기 위한 플러그인입니다.
많이 사용하지는 않지만 DEV CONTAINER 구축 시 파일을 팀과 공유함으로써 개발 환경을 통일할 수 있습니다.
단, 컨테이너를 작동시키기 위해서는 일정 사양의 PC가 필요합니다.
인프라 엔지니어에게는 별로 필요하지 않을 수도 있지만, 뭔가 활용이 가능하지 않을까요? 그래서 추천으로 소개합니다.
Git 히스토리를 확인할 수 있는 주요 플러그인입니다.
브런치, 편집기, 파일의 기록을 표시하고 브런치와 커밋 간의 기록을 비교할 수 있습니다.
Git 히스토리는 Git 히스토리 확인으로 더 유명하지만, 브런치간 비교시 개인적으로는 이 방법이 더 사용하기 편해서 추천드립니다.
Git History에서는 모든 파일의 차이점이 브런치 간 비교처럼 에디터에 표시되지만, Git History Diff에서는 차이점이 사이드바에 표시되므로 어떤 파일에 차이점이 있는지 한눈에 알 수 있습니다.
Gitlens도 git 히스토리를 확인할 수 있는 플러그인인데, Git History, Git History Diff와 달리 코드에 직접 표시되기 때문에 코드를 보면서 히스토리를 확인할 수 있습니다.
화면이 엉망이 되어도 사용할 수 없지만, Git History처럼 커밋과 브런치의 차이를 확인할 수 있습니다.
마크다운 관련 기능이 담긴 플러그인입니다. 이 플러그인을 삽입하면 다음과 같은 기능을 사용할 수 있습니다.
단축키(굵게, 기울기, 취소선, 미리보기 등)
목차 자동 생성
목록 편집 시 들여쓰기 및 일련번호 자동 조정
HTML 파일로 변환
테이블 형식
수학 공식의 사용
텍스트를 선택하고 링크를 붙여넣으면 자동으로 링크가 생성됩니다.
제가 하는 목적은 Linting을 주로 사용하고 목차 자동생성 기능을 사용하고 있습니다. 다른 기능은 다른 플러그인이 사용하기 쉽기 때문에 해당 플러그인을 사용합니다.
클립보드에 복사된 이미지를 눌러 마크다운 파일 등에 붙여넣을 수 있는 플러그인입니다(Windows의 경우 Ctrl + Alt + V , Command + Alt + V ).
Ctrl + Alt + V
Command + Alt + V
붙여넣은 이미지는 지정된 디렉터리에 저장되며, 마크다운 파일에 경로가 기술되어 있습니다.
기본설정에 다음과 같은 설정을 넣어서 붙여넣은 파일과 같은 디렉터리에 .Images/ 디렉터리를 생성하고, 그 안에 이미지를 저장합니다.
.Images/
{ "pasteImage.basePath": "${currentFileDir}/.images", "pasteImage.path": "${currentFileDir}/.images", "pasteImage.insertPattern": "${imageSyntaxPrefix}.images/${imageFilePath}${imageSyntaxSuffix}" }
Markdown을 사용하여 테이블을 생성하고 모양을 만드는 플러그인입니다.
다양한 테이블 셰이핑 플러그인을 사용해 보았지만 일본어의 멀티바이트 문자가 포함된 테이블에서 제대로 셰이핑이 되었기 때문에 이것을 사용했습니다.(글꼴과 호환될 수 있습니다)
Markdown 파일을 PDF, HTML, JPEG, PNG 등으로 변환하는 플러그인입니다.
Markdown all in One에도 PDF 변환 기능이 있는데, 이 플러그인의 변환 대상으로 PDF 등을 선택할 수 있기 때문에 이것을 사용합니다.
Python의 Linter입니다. Python 코드를 작성할 때 코드의 품질을 확인하는 데 사용합니다. 예를 들어 다음과 같이 확인할 수 있습니다.
코드 길이가 100자를 초과합니까?
사용하지 않는 변수가 있나요?
가져온 모듈이 있습니까?
등.
기본 설정에 다음과 같은 설정을 하시면 Flake8로 확인할 수 있는 규칙을 맞춤 설정할 수 있습니다.
프로젝트 내에서 통합을 원할 경우 해당 프로젝트에 .vscode/Settings.json 을 생성하고 아래 설정을 작성하면 통합이 가능합니다.
.vscode/Settings.json
{ "flake8.args": [ "--ignore=S311,S410,W503", "--max-line-length=170", "--max-complexity=20" ] }
Python 코드의 형식을 지정하는 플러그인입니다. 예를 들어 다음과 같은 형식을 지정할 수 있습니다.
작은따옴표를 큰따옴표로 변환
들여쓰기를 4칸으로 변환
함수 사이의 빈 줄을 두 줄로 변환
기본설정에 다음과 같은 설정을 해주시면 Python 파일 저장시 자동으로 포맷이 가능합니다.
{ "[python]": { "editor.insertSpaces": true, "editor.detectIndentation": true, "editor.tabSize": 4, "editor.defaultFormatter": "ms-python.black-formatter", "editor.formatOnSave": true } }
CloudFormation은 JSON으로도 기술할 수 있지만 YAML로 기술하는 경우가 많기 때문에 YAML의 Linting 및 입력 보완을 위한 플러그인을 소개하겠습니다.
이 플러그인을 삽입하면 YAML 파일을 열 때 YAML의 구문 오류가 표시됩니다.
또한 YAML 파일을 편집할 때 들여쓰기와 키를 보완합니다.
CloudFormation의 Pseudo 함수는 기본적으로 포함되어 있지 않기 때문에 구문 오류가 표시됩니다. 기본 설정에 다음 설정을 넣으면 구문 오류가 표시되는 것을 방지할 수 있습니다.
[ "yaml.customTags": [ "!And sequence", "!Base64 scalar", "!Cidr scalar", "!Condition scalar", "!Equals sequence", "!FindInMap sequence", "!GetAZs scalar", "!GetAtt scalar", "!GetAtt sequence", "!If sequence", "!ImportValue scalar", "!Join sequence", "!Not sequence", "!Or sequence", "!Ref scalar", "!Select sequence", "!Split sequence", "!Sub scalar", "!Sub sequence", "!Transform mapping", ] ]
[ { "name": "AWS CloudFormation", "description": "AWS CloudFormation provides a common language for you to describe and provision all the infrastructure resources in your cloud environment", "fileMatch": [ "*.cf.json", "*.cf.yml", "*.cf.yaml", "cloudformation.json", "cloudformation.yml", "cloudformation.yaml" ], "url": "https://raw.githubusercontent.com/awslabs/goformation/master/schema/cloudformation.schema.json" } ]
{ "yaml.schemas": { "https://d33vqc0rt9ld30.cloudfront.net/latest/gzip/CloudFormationResourceSpecification.json": [ "*.cf.yaml", "*.cf.yml", "cloud*formation/*.yaml", "cloud*formation/*.yml" ] } }
CloudFormation Linter. 위에서 언급한 YAML 플러그인과 달리 CloudFormation 고유의 구문 오류를 표시합니다. 예를 들어 다음을 확인할 수 있습니다.
리소스 이름이 중복되나요?
리소스 속성이 올바른가?
리소스 간의 종속성이 올바른가?
확인할 수 있는 규칙은 main·aws-cloudformation/cfn-lint의 cfn-lint/docs/rules.md 입니다.
기본 설정에 다음과 같은 설정을 하시면 특정 규칙을 무시할 수 있습니다.
{ "cfnLint.ignoreRules": [ "W3011" ] }
CloudFormation 린터.CloudFormation Linter와 달리 보안을 확인할 수 있습니다. 예를 들어 다음과 같은 사항을 확인할 수 있습니다.
IAM 정책에 와일드카드가 포함되어 있습니까?
S3 버킷 서버 접속 로그가 유효한가요?
å 지정된 보안 그룹 인바운드 규칙에 0.0.0.0/0이 지정되어 있습니까?
확인할 수 있는 규칙은 메인·cdklabs/cdk-nag의 cdk-nag/RULES.md 에 설명되어 있습니다.
기본 설정에 다음 설정을 넣어주면 특정 규칙을 무시할 수 있습니다. cfn-nag는 무시되는 규칙을 settings.json 에 직접 기술할 수 없으므로 .cfn-nag-blacklist.yml 과 같은 적절한 이름으로 YAML 파일을 생성하고 이를 무시하는 규칙을 기술하면 됩니다. 무시해도 됩니다. 이 예시에서는 .vscode 디렉터리에 .cfn-nag-blacklist.yml 이 생성되며, 다음 설정을 설명합니다.
settings.json
.cfn-nag-blacklist.yml
.vscode
{ "cfnNagLint.blacklistPath": ".vscode/.cfn-nag-blacklist.yml" }
--- RulesToSuppress: # S3 Bucket should have access logging configured - id: W35 reason: No access log settings are required # Resource found with an explicit name, this disallows updates that require replacement of this resource - id: W28 reason: The IAM roll name is set by fixed, not dynamic # CloudWatchLogs LogGroup should specify a KMS Key Id to encrypt the log data - id: W84 reason: Do not use the encryption of the customer management key
Terraform 관련 기능이 담긴 플러그인입니다. 이 플러그인을 삽입하면 다음과 같은 기능을 사용할 수 있습니다.
공급자, 리소스 이름, 데이터 소스, 속성, 변수 이름 등에 대한 입력 보완입니다.
심포니 오류 확인
Terraform 코드 포맷( terraform fmt 실행)
terraform fmt
Terraform Cloud와의 협력
Terraform 모듈, 공급자 탐색기
명령 팔레트에서 terraform init 및 terraform plan 과 같은 명령을 실행합니다.
terraform init
terraform plan
Terraform의 Linter.Terraform 코드 작성 시 보안을 확인하는 데 사용됩니다. 예를 들어 다음을 확인할 수 있습니다.
S3 버킷 암호화가 효과적인가?
보안그룹 아웃바운드/인바운드 규칙에 0.0.0.0/0이 지정되어 있나요?
확인할 수 있는 규칙은 enable-access-logging - tfsec 입니다.