「AWS無料相談会」をオンラインで開催中

セッションマネージャーを利用してCodebuildをデバッグする

セッションマネージャーを利用してCodebuildをデバッグする

CodeBuildとは

CodeBuild は、ソースコードをコンパイルし、テストを実行し、デプロイ可能なソフトウェアパッケージを作成できる完全マネージド型のビルドサービスです。https://aws.amazon.com/jp/codebuild/

類似サービスでは、CircleCiやJenkinsなどが挙げられます。

Session Managerとは

Session Manager はフルマネージド型 AWS Systems Manager 機能であり、インタラクティブなワンクリックブラウザベースのシェルや AWS Command Line Interface (AWS CLI) を介して Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、オンプレミスインスタンス、および仮想マシン (VM) を管理できます。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager.html

今回は、Codebuild実行中の仮想環境にアクセスする目的で利用します。

いつデバッグしたいのか

Coebuild構築中にビルド失敗した際に、修正したものを再度ソースプロバイダにpushするよりも素早く修正したものが正しく動作するかを確認することができます。

方法

buildspecファイルにcodebuild-breakpointコマンドを挿入する

ビルドを一時停止するには、buildspec ファイルの任意のビルドフェーズに codebuild-breakpoint コマンドを挿入します。この時点でビルドが一時停止されます。

phases:
  pre_build:
    commands:
      - echo Entered the pre_build phase...
      - echo "Hello World" > /tmp/hello-world
      - codebuild-breakpoint

デバッグする

  • 「上書きでビルドを開始する」をクリックします。
  • 「高度なビルドの上書き」をクリックします。
  • 「セッション接続の有効化」にチェックを入れます。
  • 「AWS CodeBuild にこのサービスロールの編集を許可し、このビルドプロジェクトでの使用を可能にする」にチェックを入れます。これによって、セッションマネージャーにアクセスするポリシーが自動で付与されます。
    {
    "Effect": "Allow",
    "Action": [
    "ssmmessages:CreateControlChannel",
    "ssmmessages:CreateDataChannel",
    "ssmmessages:OpenControlChannel",
    "ssmmessages:OpenDataChannel"
    ],
    "Resource": "*"
    }

  • 「ビルドを開始」をクリックします。ビルドが開始されます。
  • しばらくすると、「AWS セッションマネージャー」が表示されるのでクリックすると、セッションが開始されます。
  • セッション内でcodebuild-resumeコマンドを実行するとビルドが再開されて最後まで処理が行われます。

参考

Session Manager で実行中のビルドを表示する