ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • yml 환경 변수 설정
    Project/TravelFeelDog 2023. 7. 18. 16:39

     

    공개된 장소 인 퍼블릭 깃허브에는 데이터 베이스의 정보나 aws 키를 유출하면 안된다.

     

    이러한 사유로 .gitIgnore 를 사용해서 application.yml 전부를 제외를 시켰다.

     

    운영 측면에서 민감한 정보를 가지는 부분 즉 비공개용 정보보다는 공개가 가능한 부분이 많아 환경 변수를 이용하여 관리하고자 한다.

     

    .gitIgnore 에는 application-credentials.yml 파일만 설정 하고 나머지 yml 은 전부 공개를 해도 되는 환경으로 변경하고자 한다.

     

     

    기본 사용부터 보자. 데이테이스의 이름을 변수로 바꾸는 방법이다.

     

    1. graddle 에 다음과 같이 추가 해주자.

    implementation 'org.springframework.boot:spring-boot-configuration-processor'

     

    2. application.yml 이다 . 디비 이름을 환경변수로 관리 할 거다. 

    spring:
      datasource:
        #local
        url: jdbc:mysql://127.0.0.1:3306/${Db_Name}?serverTimezone=Asia/Seoul&characterEncoding=UTF-8

     

    3. application-credentials.yml  이다.

    #application-credentials.yml
    Db_Name : testDB

     

    4. 다음과 같이 config.import 를 사용하여 환경 변수를 넣어 주자.

    spring:
      config.import: application-credentials.yml
      datasource:
        url: jdbc:mysql://127.0.0.1:3306/${Db_Name}?serverTim....

     

     

     

    이번에는 aws 의 정보를 따로 관리 하는 상황의 예시이다.

     

    기존의 파일들의 위치와 같은 곳에서 다음과 같이 aws 설정파일을 만든다.

    file :  application-aws.yml

    #application-aws.yml
    cloud:
      aws:
        s3:
          bucket: ${S3_BUCKET_NAME}
        region:
          static: ap-northeast-2
        stack:
          auto: false
        credentials:
          instanceProfile: true
          accessKey: ${AWS_ACCESS_KEY}
          secretKey: ${AWS_SECRET_KEY}

     

    데이터 베이스 이름을 저장한 파일에 새로 작성한 aws 의 정보가 들어갈 것을  적는다.

     

    file :  application-credentials.yml

    #application-credentials.yml
    Db_Name : testDB
    S3_BUCKET_NAME : [이름]
    AWS_ACCESS_KEY : [접근 키]
    AWS_SECRET_KEY : [비밀 키]

     

     

    main 설정 파일을 수정해 준다.

     

    spring.profiles.active

      변수데이터가 있는 파일을 불러준후 활성해 주는 코드라고 이해하면 된다.

     

    file :  application.yml

    spring:
      datasource:
        #local
        url: jdbc:mysql://127.0.0.1:3306/${Db_Name}?server..
        ..
        
      config.import: classpath:application-credentials.yml
      profiles:
        active: credentials
        include:
          - aws
          - credentials

     

     

    - 분산 서비스 아키텍처를 구성시에는 스플링 부트 클라우드 컨피그를 이용하여  런타임 실행중에 데이터베이스의 연결 정보와 같은 것 들을

    주입이 가능하다 .  

     

     

Designed by Tistory.