Tag: CodeBuild

aws/codebuild

CodeBuildで設定した方が良さそう環境変数リスト

※ サービス固有に設定した方が良さそうな環境変数もあるので注意が必要( たとえば外部サービスの鍵など )

変数用途
${AWS_ID}開発と本番で共通のbuildspec.ymlを利用したい。それぞれAWS IDが異なるので環境変数で設定可能にする。
${API_ROOT}開発時に参照するエンドポイントと本番系は異なるため開発: dev.hoge.com 本番: wwww.hoge.com
${NODE_ENV}開発時はdev、本番時はproductionを指定することが多い( productionを設定していると、yarn install時、devDependinciesが無視される) devはMac上の開発環境で使い、ECSはproductionを用いる開発: dev 本番: production
${ECS_TASK}開発時はenv**という名前でECSのリソース(タスク定義、サービス)をアサインする。本番系はenvではなくサービス名称を用いるため異なる。開発: dev32 本番: wwwなど
${ECS_SERVICE}開発、本番で異なるため
${ECS_CLUSTER}ECSクラスター名も開発と本番で異なる(開発環境は都度クラスターを構築するのは工数がかかりすぎるので統一している。が本番系は別にクラスターを構築し、コンテナ間でリソースの上限やお互いのサービスの負荷の影響を与える可能性を考慮して、クラスターレベルで分離している)
${API_SHARED_ACCCESS_TOKEN}
${AWS_ACCOUNT_ID}
${AWS_DEFAULT_REGION}
${HOST_NAME}
${IMAGE_REPO_NAME}
${IMAGE_TAG}
${PORT}
${WWW_ROOT}

ECRのタグ( buildspec内でdocker pushしている )ポリシー

開発用のECSタスク定義で使用するDockerイメージには dev のタグをつける

イメージに対しては必ずタグをつける( タグがないイメージにアクセスしにくいので、実質的にバックアップの意味にもならない。

Read more...

aws/codebuildで設定を複製する

CodeBuildの設定を複製する

環境固有の環境変数の修正がある。

既存の設定情報を取得する

aws codebuild batch-get-projects --names hoge-web | jq '.projects[0]' > ~/original.json

取得したjsonファイルを修正する

比較として、CodeBuildを作成する際に参考になるjsonは aws codebuild create-project –generate-cli-skeleton で取得可能

取得したjsonと –generate-cli-skeleton で取得した雛形を比較しながら、 取得したjsonを修正する。

  1. name を修正
  2. arn は新規に割り振られるので削除
  3. environment.environmentVariables を修正 IMAGE_REPO_NAME SERVICE_NAME
  4. logsConfig.cloudWatchLogs.groupName を修正
  5. badge を削除

反映

aws codebuild create-project –cli-input-json file://修正したもの.json

Read more...