LoginSignup
7
3

More than 1 year has passed since last update.

CodeBuildでSSMパラメーターストアやSecrets Managerでパラメーターを参照する

Posted at

CodeBuildの環境情報を外部に出す

AWSを利用したCI/CDで、ビルドが必要な場合に利用することになるCodeBuild。
CodeBuildで行われるビルドの詳細設定はbuildspec.yamlというファイルに記述することになります。
ビルドの設定を書く際には参照する他リソースのarnや、アクセスキー等の情報が必要となるケースがあります。
しかし通常のプログラムと同様に、環境情報を直接ファイルに書くのは、セキュリティや水平展開の面でアンチパターンとなります[1]。
そこでCodeBuildはenvパラメーターの中で外部から環境情報を読み込むことができます。
ここで設定できる環境情報はCodeBuild自体に設定された値も参照できますが、SSMパラメーターストアやSecretsManagerからも直接読み込めます。

buildspec.yaml
env:
  parameter-store:
    ssm_parameter: "[パラメーターの名前]"
  secrets-manager:
    secret_parameter: "[シークレットの名前]:[シークレットのキー]"

phases:
  pre_build:
    commands:
      - PARAM1=${ssm_parameter}
      - PARAM2=${secret_parameter}
      #以下省略.どちらの値もログ出力では***になる.

またIAMロールに対応するサービス(今回であればパラメーターストアとシークレットマネージャー)の読み込みポリシーをアタッチするのを忘れずに。ないと権限がないとエラーが出てきます。
(ただこの時の権限エラーは、何の権限がないか出てくれるので非常にわかりやすいです。)

余談ですがパラメーター名にハイフンを含めないようにしましょう。
シェルスクリプトはハイフンを用いたパラメーター名を使うことができないです。
これでひっかかった

その他のbuildspec.yamlの詳細な記述については公式ドキュメント[2]が参考になるかと思います。

参考

[1]https://qiita.com/yusukaaay/items/7ae2df0b0e9cc66ac572

[2]https://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-spec-ref.html#build-spec.env.parameter-store

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3