LoginSignup
4
1

More than 1 year has passed since last update.

AWS CodeBuildをデバックするならssm接続でやろう (セッションマネージャを利用しビルドコンテナへのログインする方法)

Posted at

概要

  • 以前、CodeBuildのデバックをしようとした際に、マネージドで立ち上がるビルドコンテナをどうやってデバックしようか迷ったことがありました。
  • そんな時、セッションマネージャを利用したビルドコンテナにログインする機能が大変役にたったので、今回は方法について記事にしていきます。

セッションマネージャを利用しAWS CodeBuildのビルドコンテナに接続

  • まず初めにセッションマネージャを利用しAWS CodeBuildのビルドコンテナに接続するにはいくつか条件があります。
    • 利用するイメージにSSMエージェントがインストールされており、SSM エージェントのコンテナモードが有効になっていること
    • AWS CodeBuildのサービスロールにSSMのポリシーが追加されていること
      => ただこちらは、ビルドの開始時にこのポリシーをサービスロールに自動的にアタッチするように設定することができます。手動でアタッチする場合は、下記のようなポリシーをアタッチしましょう。
{
  "Effect": "Allow",
  "Action": [
    "ssmmessages:CreateControlChannel",
    "ssmmessages:CreateDataChannel",
    "ssmmessages:OpenControlChannel",
    "ssmmessages:OpenDataChannel"
  ],
  "Resource": "*"
}

※ こちらの機能を利用する際に、注意点が2つあります。

  • AWS CodeBuildはビルドを開始してから終了するまでの時間で課金が発生するため、デバック時に一時停止したビルドコンテナをそのままにするのはやめましょう(一応、AWS CodeBuild自体にタイムアウトの設定ができるので、タイムアウトで落ちるようにはなっています。)
  • セッションマネージャの設定は複数作成できないので、既存でセッションマネージャを利用している場合Session Manager経由でログインした時のログが全て同一のS3のバケットの中に吐かれるようになります。また、その関係のSSMがログを吐くような設定をしていれば、上記のポリシーにS3へログを吐けるような権限を追加しないといけません。

やってみましょう

  • 今回検証用に1つCodeBuildを作成しました。

スクリーンショット 2022-06-28 13.58.59.png

スクリーンショット 2022-06-28 13.54.39.png

  • BuildSpecは、下記のようにしています。
  • ここが重要なのですが、Buildspecにcodebuild-breakpointというコマンドを追加することで、追加したポイントでビルドを一時停止させることができます。でバックする際にどこにブレイクポイントを追加したいかによってBuildspecを更新しましょう。
version: 0.2

phases:
  pre_build:
    commands:
      - echo "Hello World"
      - codebuild-breakpoint
  • また上記で説明したセッションマネージャ用のポリシーを追加しました。
  • 今回は、S3へログは吐き出さないようにしています。
    スクリーンショット 2022-06-28 14.02.37.png

実行してみる

  • 先ほど設定したブレイクポイントで一時停止し、セッションマネージャでログインするには実行時に「ビルドの実行」ではなく、「上書きでビルドを開始する」を選択します。

スクリーンショット 2022-06-28 14.06.17.png

  • また、次の画面で「高度なビルドの上書き」を選択する必要があります。

スクリーンショット 2022-06-28 14.07.23.png

  • 次に「セッション接続」のセクションで「セッション接続の有効化」にチェックします。
    スクリーンショット 2022-06-28 14.08.32.png

設定は完了したので、ビルドを実行しましょう!

セッションマネージャによるビルドコンテナへのログイン

  • ビルドの実行が始まると下記のように、設定したブレイクポイントまでいった時に、セッションマネージャへの接続するリンクが表示されるようになります。

スクリーンショット 2022-06-28 14.21.14.png

  • 「AWS セッションマネージャ」を選択すると下記のようにビルドコンテナへ接続することができます。
  • あとはデバックしたいことを実施するだけです。
  • またセッションを切断したあとは、必ず「ビルドの停止」をしましょう。

スクリーンショット 2022-06-28 14.21.50.png

まとめ

  • AWS CodeBuildをデバックしようとした時に非常に便利な機能なので、ぜひご活用ください!

参考

4
1
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
4
1