血と汗となみだを流す

クラウドエンジニアになるための修業の場

Developers.ioの記事を読んでやってみる「AWS CodeBuild」

対象

目的

  • CodeBuildがどういうものかを体験する

やってみる

前提

  • 機能を理解するのが目的なので、terraformは使わずにAWSコンソールからポチポチ
  • ローカル環境はMac

CodeBuildとは

レポジトリ作成

  • このレポジトリを参照して、自分のレポジトリにファイルを作る
  • Githubから「New Repository」作成(README.mdも一緒に作る)
  • git clone
$ git clone https://github.com/Anorlondo448/CodeBuild-test
  • 適当にブランチ作る
$ git checkout -b test_codebuild

ファイル追加

  • test.py
  • ここを見て写経
  • buildspec.yml
    • phases: ビルドの各段階でAWS CodeBuildが実行するコマンド
      • install: ビルド環境でのパッケージインストールに使うのがオススメ
        • commands: installが指定されている場合は必須。AWS CodeBuildが実行する単一のコマンドを書く
      • build: ビルド中に実行するコマンド
        • commands: buildが指定されている場合は必須。AWS CodeBuildが実行する単一のコマンドを書く
  • githubにPushしておく
$ git add test.py buildspec.yml
$ git commit -m "add test code for CodeBuild"
$ git push origin test_codebuild

AWS CodeBuildのプロジェクト作成

  • AWSコンソールにログイン
  • CodeBuildから「プロジェクトの作成」 f:id:Anorlondo448:20180521003622p:plain
  • 以下、変更した箇所のみ
  • 「保存」
  • ビルドプロジェクトができた模様 f:id:Anorlondo448:20180521003816p:plain

IAMロールの設定

  • 「プロジェクトの設定」内で指定した(今回はデフォルトにした)ロールにS3アクセスを付与する
  • と思ったらもうついているっぽいのでこのままとする f:id:Anorlondo448:20180521004129p:plain

ビルド実行

  • AWSコンソールから「ビルドの開始」 f:id:Anorlondo448:20180521004227p:plain
  • オプションを指定して開始する
  • ソースのバージョン指定も出来るっぽい f:id:Anorlondo448:20180521004351p:plain
  • ビルドのログがでる(なんか失敗したっぽい・・・) f:id:Anorlondo448:20180521004557p:plain

失敗の原因調査

  • AWSコンソールから詳細が見れるので見る f:id:Anorlondo448:20180521004728p:plain
メッセージstat /codebuild/output/src717145673/src/github.com/Anorlondo448/CodeBuild-test/buildspec.yml: no such file or directory
  • 「buildspec.yml」が見つからない・・・?
  • githubを見てみる f:id:Anorlondo448:20180521004908p:plain
  • 恥ずかしいtypo、、、ファイル名間違っとる
  • ファイル名を正しくして再度githubにプッシュ

ビルド再試行

  • 「再試行」 f:id:Anorlondo448:20180521005227p:plain
  • また失敗・・・! f:id:Anorlondo448:20180521010514p:plain

失敗の原因調査2回目

  • ビルドログを見る
An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
  • よく見るやつじゃん・・・!
  • IAMロールを見る f:id:Anorlondo448:20180521010713p:plain
  • resource指定されてた・・・!
  • S3バケット名がこのリソース名になっていなかったため
  • IAMロールに権限を追加(これは手順にあったのにちゃんと見てなかったのが原因・・・) f:id:Anorlondo448:20180521010947p:plain
  • 「複数」て・・・2個以上は複数って表示されるのかな

ビルド再試行2回目

  • 「再試行」 f:id:Anorlondo448:20180521011141p:plain
  • 成功した!
  • S3にもファイルできている!! f:id:Anorlondo448:20180521011212p:plain

感想

  • ビルドをコマンドラインで書けるのがわかりやすい
  • CodeBuild単体で触ったけど、ビルドした後にどのような連携が可能なのか気になる・・・!