GodLights Study

6. 환경 변수와 시크릿

Worker 코드 안에 API 키나 설정값을 하드코딩하면 안 됩니다. Cloudflare Workers는 두 가지 방식으로 값을 주입할 수 있습니다: 환경 변수(vars)시크릿(secrets).

6.1 환경 변수 (vars)

민감하지 않은 설정값은 wrangler.jsonc에 직접 적어둘 수 있습니다.

jsonc
{
  "name": "cloudflare-workers-course-sample",
  "main": "src/index.js",
  "compatibility_date": "2024-11-01",
  "vars": {
    "GREETING": "Hello"
  }
}

Worker 코드에서는 env 파라미터로 접근합니다.

js
export default {
  async fetch(request, env, ctx) {
    return new Response(`${env.GREETING}, World!`);
  },
};

이 강의의 샘플 프로젝트(sample-worker/wrangler.jsonc)에도 GREETING 변수가 정의되어 있고, sample-worker/src/index.js/api/hello 라우트에서 사용하고 있습니다.

6.2 시크릿 (secrets)

API 키, 비밀번호처럼 민감한 값은 절대 wrangler.jsonc나 코드에 커밋하면 안 됩니다. 대신 wrangler secret 명령으로 등록합니다.

bash
npx wrangler secret put API_KEY

실행하면 터미널에서 값 입력을 요청하고, 입력한 값은 Cloudflare에 암호화되어 저장됩니다. 사용하는 방식은 일반 환경 변수와 동일합니다.

js
export default {
  async fetch(request, env, ctx) {
    // env.API_KEY 는 wrangler secret put 으로 등록한 값
    const res = await fetch("https://api.example.com/data", {
      headers: { Authorization: `Bearer ${env.API_KEY}` },
    });
    return res;
  },
};

6.3 로컬 개발용 시크릿: .dev.vars

로컬에서 wrangler dev를 실행할 때는 실제 시크릿 대신 프로젝트 루트에 .dev.vars 파일을 만들어 사용합니다.

text
# .dev.vars
API_KEY=local-dev-fake-key

.dev.vars반드시 .gitignore에 추가해서 커밋되지 않도록 해야 합니다. 이 강의의 샘플 프로젝트 .gitignore에도 이미 포함되어 있습니다.

6.4 환경별로 값 분리하기 (staging / production)

wrangler.jsoncenv 필드로 배포 환경별 설정을 나눌 수 있습니다.

jsonc
{
  "name": "my-worker",
  "main": "src/index.js",
  "compatibility_date": "2024-11-01",
  "vars": { "GREETING": "Hello (default)" },
  "env": {
    "staging": {
      "vars": { "GREETING": "Hello (staging)" }
    },
    "production": {
      "vars": { "GREETING": "Hello (production)" }
    }
  }
}
bash
npx wrangler deploy --env staging
npx wrangler deploy --env production

참고 자료

➡️ 다음: Workers KV로 데이터 저장하기 ⬅️ 이전: 라우팅과 요청/응답 다루기