3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CodePipelineで作る変更管理パイプライン

Posted at

この記事は「Opt Technologies Advent Calendar 2017」2日目となります。

はじめに

こんにちは、mshibuyaです。
今回は以前よりあたためていた「変更管理パイプライン」の導入に向け、AWS CodePipeline/CodeBuildを触る機会がありましたので内容をご紹介したいと思います。

変更管理パイプラインとは

オライリー社より出ている「Infrastructure as Code」12章に出てくる概念で、雑にいうとインフラコードのデプロイパイプラインです。

ソースとなるコードリポジトリへコミットされたインフラコードの変更に対し、流れるように

  • 自動化されたテスト
  • 自動化されたデプロイ
  • 変更内容のチェックおよび承認

などを組み合わせ、動作環境への反映までを行うフローをつくることで、本番環境への変更の反映をスムーズに行える仕組みとなります。

これを活用することで、

  • 変更のデリバリーの省力化
  • 手作業によるインフラ変更の防止(自動化されたパイプラインに乗せる方が楽になれば、皆そうするようになる)
  • デプロイ作業の均質化(手作業によるミスの防止)
  • トレーサビリティの向上

など、様々なメリットを享受できるようになります。いいですねー

試した内容

ここでは実現可能性の検証ということで、次のようなパイプラインを作成しました。

  • GitHubリポジトリの変更を検知
  • CodeBuildによりCloudFormation Template JSONを生成
  • 得られたTemplate JSONによりCloudFormation Stack更新
codepipeline.png

はまりどころ

CodePipelineからCloudFormationスタック更新をしようとして、次のようなエラーに遭遇しました

Template exceeds maximum length of 51200 bytes

CloudFormationでは通常テンプレートの上限サイズが51,200bytesとなっており、S3にテンプレートを一度アップロードして渡すことによりその制約を回避し460,800bytesまでのサイズが扱えるのですが、CodePipelineからはS3にアップロードしての渡し方が行えないとのこと。
https://forums.aws.amazon.com/thread.jspa?messageID=785905&tstart=0

これ普通に困りますね…なんとかして欲しいです。上記スレッドで提案されている回避策は「CodeBuildからS3にアップロードしてCloudFormation適用する」みたいな感じで…まぁ、確かにそれで動くでしょうけど。。。

今後

わりとイメージしていた通りのことが出来る見通しは立ったので、次は実際にステージング環境での運用をはじめたいなーと思っております。
進展があったらまたご報告したいです!

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?