Skip to content

환경변수

일반 텍스트 (Plain Text)

이 방식은 가장 단순하며, 환경 변수의 값을 직접 평문으로 입력합니다. 이는 비밀이 아닌 정보나 민감하지 않은 데이터에 적합합니다. 예를 들어, 애플리케이션의 실행 모드(개발 모드, 테스트 모드 등)를 지정하는 환경 변수에 사용할 수 있습니다.

주의사항

  • 쉘 스크립트: 환경 변수를 쉘 스크립트에서 직접 참조할 때 $환경변수 형식을 사용합니다. 이는 대부분의 Unix/Linux 쉘 및 Windows의 Command Prompt와 PowerShell에서 유효합니다.
  • 단일 따옴표와 이중 따옴표: 환경 변수를 문자열 내에서 사용할 때 이중 따옴표("`")를 사용해야 환경 변수가 올바르게 확장됩니다. 단일 따옴표('')를 사용하면, 환경 변수가 리터럴 문자열로 해석되어 변수 값이 아닌 변수 이름이 그대로 출력됩니다.
  • 환경 변수의 존재 여부 확인: 스크립트를 작성할 때 특정 환경 변수가 설정되어 있지 않은 경우를 대비하여, 해당 변수가 설정되었는지 먼저 확인하는 로직을 포함하는 것이 좋습니다.

Amazon EC2 Systems Manager (Parameter Store)

Parameter Store는 서버리스 애플리케이션, 데이터베이스 문자열, 비밀번호, 시스템 설정 등을 안전하게 저장하고 관리할 수 있는 서비스입니다. CodeBuild에서는 Parameter Store에 저장된 값을 환경 변수로 가져올 수 있습니다. 이 값은 빌드 시점에 동적으로 해석되며, 중요한 정보를 안전하게 관리할 수 있습니다. 예를 들어, 데이터베이스 연결 정보나 외부 서비스의 API 키 등을 Parameter Store에 저장하고, 이를 빌드 프로세스에서 사용할 수 있습니다.

유형

문자열 (String)

  • 사용 예: 단일 구성 값, 텍스트 데이터, 설정 등을 저장합니다.
  • 키-값 예: KeyName = "/MyApp/Database/Endpoint", Value = "db.example.com"

문자열 목록 (StringList)

  • 사용 예: 여러 개의 텍스트 항목을 하나의 파라미터로 저장할 때 사용합니다. 각 항목은 쉼표로 구분됩니다.
  • 키-값 예: KeyName = "/MyApp/Regions", Value = "us-east-1,eu-west-1,ap-northeast-2"

보안 문자열 (SecureString)

  • 사용 예: 비밀번호, API 키, 암호화 키 등과 같이 민감한 정보를 암호화하여 저장합니다. AWS KMS(Key Management Service) 키를 사용하여 값이 암호화됩니다.
  • 키-값 예: KeyName = "/MyApp/Database/Password", Value = 암호화된 데이터 (사용자가 직접 볼 수 없음)

codebuild 필요권한

json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssm:GetParameters",
        "ssm:GetParameter",
        "ssm:DescribeParameters"
      ],
      "Resource": "*"
    }
  ]
}

예시

yaml
version: 0.2

env:
  parameter-store:
    DB_PASSWORD: "/MyApp/DBPassword"
    SECRET_KEY: "/MyApp/SecretKey"

phases:
  build:
    commands:
      - echo "Using DB Password from Parameter Store"
      - echo "DB password is $DB_PASSWORD"
      - echo "Using Secret Key from Parameter Store"
      - echo "Secret key is $SECRET_KEY"

AWS Secrets Manager

Secrets Manager는 민감한 정보를 안전하게 저장하고, 이를 애플리케이션에서 사용할 수 있도록 관리하는 서비스입니다. 이는 Parameter Store와 유사하지만, 비밀 회전, 비밀 관리 생명주기, 비밀에 대한 액세스 관리와 감사 로그 기능 등 추가적인 기능을 제공합니다. CodeBuild에서 Secrets Manager의 비밀을 환경 변수로 사용할 수 있으며, 이를 통해 데이터베이스 비밀번호, 서드파티 API 키, 인증 토큰 등을 안전하게 관리할 수 있습니다.

보안 암호 유형

다른유형의보안암호로 생성되어 key, value의 형태로 저장됨.

codebuild 필요권한

json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "secretsmanager:GetSecretValue",
      "Resource": [
        "arn:aws:secretsmanager:region:account-id:secret:MySecretName-*"
      ]
    }
  ]
}

예시

yaml
version: 0.2

env:
  secrets-manager:
    MY_API_KEY: MySecretName:apiKey
    MY_OAUTH_TOKEN: MySecretName:oauthToken

phases:
  install:
    commands:
      - echo "Using secrets from Secrets Manager"
  build:
    commands:
      - echo "API Key: $MY_API_KEY"
      - echo "OAuth Token: $MY_OAUTH_TOKEN"