ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [26일차] yaml파일 작성
    교육/코드스테이츠 2023. 1. 2. 13:26

     

    https://www.atatus.com/glossary/yaml/

    Yaml

    yamlxmljson 포맷과 같이 타 시스템 간에 데이터를 주고받을 때 약속된 포맷(규칙)이 정의되어있는 또 하나의 파일 형식이라고 보면 된다.

    • 다만 좀더 인간 친화적으로 작성해 가독성을 높이는 쪽으로 무게를 두어 고급 컴퓨터 언어에 친화적이다.
    • json과 달리 주석도 쓸수 있으며, 간결한 문법으로 같은 데이터량이라도 코드길이를 많이 줄일수 있다.
    • yaml은 주로 Doker Compose, Kubernetes, Flutter, Spring boot 프로젝트에서 설정파일을 정의할때 자주 애용된다.
    • YAML JSON 보다 좀 더 복잡하기 때문에 파싱하고 생성하는데 YAML이 더 느리다.

    웹에서 데이터 통신을 위해 JSON을 많이 사용하고, reference를 정의할때 복잡한 object 구조를 표현 하기 위해 YAML이 적합하다고 보면 된다.

     

    YAML 문법 정리

    • yaml은 띄어쓰기로 데이터 구분을 한다.
    • Key: Value는 콜론을 기준으로 표기하며(:) 뒤에 띄어쓰기를 한번 해줘야 한다
    • 콜론(:) 뒤에 공백이 없으면 하나의 스트링으로 인식되어, 문법 오류가 나타나게 된다
    • 콤마 표기 안함
    • 중괄호로 계층 구조를 표현하는 JSON과 달리, YAML은 파이썬과 같이 들여쓰기로 계층 구조를 표현하기 때문에 들여쓰기 유무는 매우 중요하다. 들여쓰기는 기본적으로 2칸 혹은 4칸을 지원한다.
    • YAML을 쓸 때는 큰 따옴표, 작은 따옴표를 안 써도 자동으로 숫자와 문자열로 인식 된다. 그런데 만일 "쌍점 : "이 들어간 문자열의 경우 무조건 따옴표로 둘러쌓야 제대로 인식된다ex) "1:2"
    • YAML에서의 배열을 표현할 때는 하이픈(-)으로 시작하는 하위 엘리먼트로 표현하며 반드시 하이픈(-) 뒤에 띄어쓰기를 써주어야 리스트 인식이 된다. 하이픈(-) 대신, 일반적인 배열 표현법 같이 대괄호로 리스트를 한줄로 표현도 가능하다. ex) ingredients: [, 튀김가루, 자바소스]
    • Boolean 표현은 데이터 부분에 yes, no, true, false 를 지정하면 boolean 값으로 인식된다. 추가적으로 대문자 소문자를 가리지 않는다. 만약 yes no를 문자열 값으로서 전달하고자 한다면 따옴표로 묶어주어야 한다.
    • 하이픈(-) 뒤에 key: value 구조가 온다면 이것은 객체를 포함한 배열, 그냥 데이터가 바로 온다면 단순 원소 배열이라고 인식하면 된다
    ingredients: # 단일 원소 배열
    
    - 닭
    
    - 튀김가루
    
    - 자바소스
    
    
    
    ingredients2: # 객체 원소를 포함한 배열
    
    - animal: 닭
    
    - spice: 튀김가루
    
    - source: 자바소스

     

     

    Yaml 작성 연습

    test1:
      Car:
        Color: Blue
        Model:
          Name: Cyber Truck
          Year: 2022
        Fuel: Electric
        Price: $100,000
     
     
    test2:
      Version: 2012-10-17
      Statement:
        - Effect: Allow
          Action:
            - ec2:*
            - elasticloadbalancing:*
            - route53:*
            - autoscaling:*
            - cloudwatch:*
            - SNS:*
          Resource:
            - "*"
    
        - Effect: Allow
          Action:
            - s3:*
          Resource:
            - arn:aws:s3:::travis-terraform-state
            - arn:aws:s3:::travis-terraform-state/*
            - arn:aws:s3:::travis-shared-1-registry-images
            - arn:aws:s3:::travis-shared-1-registry-images/*
            - arn:aws:s3:::travis-shared-2-registry-images
            - arn:aws:s3:::travis-shared-2-registry-images/*
    
        - Effect: Allow
          Action:
            - iam:GetUser
          Resource:
            - arn:aws:iam::341288657826:user/igor-terraform
    
        - Effect: Allow
          Action:
            - iam:*
          Resource:
            - arn:aws:iam::341288657826:role/*
            - arn:aws:iam::341288657826:user/registry-shared-1
            - arn:aws:iam::341288657826:user/registry-shared-2
            - arn:aws:iam::*:user/cyclist-*
            - arn:aws:iam::*:user/worker-*
            - arn:aws:iam::*:user/build-trace-*
         
        - Effect: Allow
          Action:
            - dynamodb:*
          Resource:
            - arn:aws:dynamodb:us-east-1:341288657826:table/travis-terraform-state
     

    test3:
      name: Node.js CI
      on:
        push:
          branches: main
        pull_request:
          branches: main
      jobs:
        build:
          runs-on: ubuntu-latest
          steps:
          - uses: actions/checkout@v2
          - name: Use Node.js
            uses: actions/setup-node@v1
            with:
              always-auth: true
              node-version: 12.x
              registry-url: https://registry.npmjs.org
              scope: "@octocat"
          - name: Install dependencies
            run: npm ci
            env:
              NODE_AUTH_TOKEN: "${{secrets.NPM_TOKEN}}"

     

    ================================================================

    참고 문서

    https://www.atatus.com/glossary/yaml/

     

    YAML: Definition, How Does It Work, Features, and More

    YAML is a programming language that is frequently combined with a wide range of other languages and is mostly used for creating configuration files.

    www.atatus.com

     

Designed by Tistory.