セッションマネージャーで実行中のビルドを表示する - AWS CodeBuild

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

セッションマネージャーで実行中のビルドを表示する

AWS CodeBuild では、実行中のビルドを一時停止してから、AWS Systems Manager セッションマネージャーを使用してビルドコンテナに接続し、コンテナの状態を表示できます。

注記

この機能は、Windows 環境では使用できません。

Prerequisites

ビルドセッションでセッションマネージャーを使用できるようにするには、ビルドのセッション接続を有効にする必要があります。次の 2 つの前提条件があります。

  • CodeBuild Linux 標準でキュレーションされたイメージには、すでに SSM エージェントがインストールされており、SSM エージェントコンテナモードが有効になっています。

    ビルドにカスタムイメージを使用している場合は、次の操作を行います。

    1. SSM エージェントをインストールします。詳細については、「」を参照してください。Linux 用の EC2 インスタンスに SSM エージェントを手動でインストールするAWS Systems Manager ユーザーガイドの「」

    2. ファイルをコピーしますhttps://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/4.0/amazon-ssm-agent.json/etc/amazon/ssm/ディレクトリに表示されます。これにより、SSM エージェントでコンテナモードがイネーブルになります。

  • CodeBuild サービスのロールには、次の SSM ポリシーが必要です。

    { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" }

    CodeBuild コンソールは、ビルドの開始時に、このポリシーをサービスロールに自動的にアタッチするように設定できます。あるいは、このポリシーをサービスロールに手動でアタッチしても構いません。

  • 次のようになります。セッションアクティビティのログ記録と監査を有効にしている場合は、CodeBuild サービスの役割にも追加のアクセス許可が必要です。アクセス許可は、ログが格納されている場所によって異なります。

    [CloudWatch Logs]

    CloudWatch Logs を使用してログを保存する場合は、CodeBuild サービスロールに次のアクセス権限を追加します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "logs:DescribeLogGroups", "Resource": "arn:aws:logs:<region-id>:<account-id>:log-group:*:*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region-id>:<account-id>:log-group:<log-group-name>:*" } ] }
    Amazon S3

    Amazon S3 を使用してログを保存する場合は、CodeBuild サービスロールに以下のアクセス権限を追加します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetEncryptionConfiguration", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/*" ] } ] }

    詳細については、「」を参照してください。セッションアクティビティのログ記録と監査()AWS Systems Manager ユーザーガイド

ビルドの一時停止

ビルドを一時停止するには、codebuild-breakpointbuildspec ファイルのビルドフェーズのいずれかでコマンドを実行します。この時点でビルドは一時停止されます。これにより、ビルドコンテナに接続し、コンテナを現在の状態で表示できます。

たとえば、buildspecファイルのビルドフェーズに、以下を追加します。

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

このコードは、/tmp/hello-worldファイルを作成し、この時点でビルドを一時停止します。

ビルドを開始します

ビルドセッションでセッションマネージャーを使用できるようにするには、ビルドのセッション接続を有効にする必要があります。これを行うには、ビルドを開始するときに、次の手順に従います。

  1. AWS CodeBuild コンソールを開きます。https://console.aws.amazon.com/codesuite/codebuild/home

  2. ナビゲーションペインで、[Build projects] を選択します。ビルドプロジェクトを選択した後、[Start build] を選択します。

  3. [Advanced build overrides (高度なビルドの上書き)] を選択します。

  4. 環境セクションで、[] を選択します。セッション接続を有効にするオプション。このオプションが選択されていない場合、すべてのcodebuild-breakpointおよびcodebuild-resumeコマンドは無視されます。

  5. 環境セクションで、[] を選択します。AWS CodeBuild にこのサービスロールの変更を許可し、このビルドプロジェクトで使用できるようにするオプションを使用して、CodeBuild コンソールがセッションマネージャーポリシーをサービスロールに自動的にアタッチできるようにします。セッションマネージャーポリシーをロールにすでに追加している場合は、このオプションを選択する必要はありません。

  6. その他の必要な変更を行い、ビルドを開始します

  7. コンソールでビルドステータスを監視します。セッションが利用可能になると、AWS セッションマネージャーリンクは、[] に表示されます。ビルドステータスセクション。

ビルドコンテナConnect する

ビルドコンテナには、次の 2 つのいずれかにアクセスできます。

CodeBuild コンソール

ウェブブラウザで、AWS セッションマネージャーリンクをクリックして、ビルドコンテナに接続します。ターミナルセッションが開き、ビルドコンテナをブラウズして制御できます。

AWS CLI
注記

この手順を実行するには、ローカルマシンにセッションマネージャプラグインがインストールされている必要があります。詳細については、「」を参照してください。AWS CLI 用のセッションマネージャープラグインのインストールAWS Systems Manager ユーザーガイドの「」

  1. を呼び出しますbatch-get-buildsAPIをビルドIDに置き換えて、セッションターゲット識別子を含むビルドに関する情報を取得します。セッションターゲット識別子のプロパティ名は、awsコマンド。これは、--output jsonコマンドにオプションが追加されました。

    aws codebuild batch-get-builds --ids <buildID> --region <region> --output json
  2. をコピーしますsessionTargetプロパティの値を設定します。-sessionTargetプロパティ名は、出力タイプによって異なります。awsコマンド。これは、--output json前のステップでコマンドに追加されます。

  3. ビルドコンテナに接続するには、次のコマンドを使用します。

    aws ssm start-session --target <sessionTarget> --region <region>

この例では、/tmp/hello-worldファイルが存在し、Hello World

ビルドを再開する

ビルドコンテナーを調べ終わったら、codebuild-resumeコマンドをコンテナーシェルから実行します。

$ codebuild-resume