🤖

AWS CodeBuildの環境変数設定について

2024/11/12に公開

背景・目的

シークレット情報(パスワードやキー)などをソース保持することでセキュリティ上のリスクになりうる。そのため、ビルド時に環境変数として受け渡すことでそのリスクを軽減する。

方法

  1. AWS CodeBuildの環境変数設定にシークレットを設定する

  2. buildspecに定義したcommandから環境変数ファイルを作成し、シークレット情報を書き込む(Reactプロジェクトサンプル)

buildspec.yml
version: 0.2
phases:
    install:
        commands:
            - npm install
    pre_build:
        commands:
            - echo "Setting up environment variables"
            ######################ここがポイント#######################
            # CodeBuildの環境変数を .env ファイルに書き出す
            - echo "URL_PATH=${URL_PATH}" > .env
            - echo "ANON_KEY=${ANON_KEY}" >> .env

            - npm ci
    build:
        commands:
            - echo "Building the React app"
            - npm run build
artifacts:
    base-directory: build
    files:
        - "**/*"
cache:
    paths:
        - node_modules/**/*

  1. ソースコードで環境変数にアクセスし、シークレット情報を使用する
client.ts
const url: string = process.env.URL_PATH ?? "";
const anonKey: string = process.env.ANON_KEY ?? "";

備考

実際には、CodeBuildで設定した内容を.envファイルに書き出さなくてもymlファイルに直接指定する方法(参考)もあるようだが、うまくいかなかったので、一旦この方法で。
AWS SecretManagerなどに設定することでよりセキュアな環境変数の保持も可能なよう。

参考

https://dev.classmethod.jp/articles/codebuild-env/

Discussion