PowerShellでAWS CodeStarを構成しフルマネージドなCI/CDを実現する方法

PowerShellを活用してAWS CodeStarを構成し、プロジェクト全体をフルマネージドなCI/CD環境に統合する方法について解説します。

AWS CodeStarは、ソフトウェア開発プロジェクトを迅速に開始し、継続的インテグレーション(CI)や継続的デリバリー(CD)を簡単に構築できるAWSのサービスです。しかし、AWS管理コンソールを手作業で操作するのは効率が悪く、大規模プロジェクトでは自動化が不可欠となります。そこで、PowerShellを活用することで、スクリプトによるAWS CodeStarのセットアップやCI/CDの構成が可能になり、開発・運用の効率化を実現できます。

本記事では、PowerShellを利用してAWS CodeStarを構築し、CI/CDをフルマネージドな形で運用する方法を詳しく解説します。AWS CodeStarの基本概念から、AWS CLIとPowerShellの環境構築、プロジェクトの作成、CI/CDパイプラインの構築、トラブルシューティングまで、一通りの流れをステップバイステップで紹介します。

これにより、AWS CodeStarの導入を効率化し、開発のスピードを向上させることが可能になります。PowerShellを駆使して、AWS環境の自動化とCI/CDの最適化を目指しましょう。

目次

AWS CodeStarとは


AWS CodeStarは、ソフトウェア開発プロジェクトを迅速に立ち上げ、開発からデプロイまでを統合管理できるAWSの開発支援サービスです。AWS CodePipeline、AWS CodeCommit、AWS CodeBuild、AWS CodeDeployなどのAWS DevOpsツールを組み合わせ、CI/CDパイプラインを一元的に管理することができます。

AWS CodeStarの特徴


AWS CodeStarには以下のような特徴があります。

プロジェクトの迅速なセットアップ


AWS CodeStarは、プロジェクトテンプレートを提供しており、数クリックで新しい開発プロジェクトを作成できます。テンプレートには、Gitリポジトリ、ビルド環境、デプロイメント環境があらかじめ設定されています。

統合されたCI/CDパイプライン


CodeStarはAWS CodePipelineと統合されており、リポジトリへのコードのプッシュと同時に、自動でビルド・テスト・デプロイを実行することが可能です。手作業でのデプロイ作業を削減し、エラーの発生率を低減できます。

開発チーム向けのコラボレーション機能


AWS CodeStarは、IAMベースのアクセス制御を提供しており、プロジェクトごとに開発者の権限を細かく管理できます。また、JIRAなどの外部ツールとも連携でき、タスク管理を統合することも可能です。

AWS CodeStarの利点

簡単なCI/CD導入


AWS CodeStarを利用すれば、AWSのCI/CDツールを個別に設定する手間を省き、一元管理された環境で継続的デリバリーを実現できます。

AWSの各種サービスとのシームレスな統合


CodeStarはAWS LambdaやAmazon EC2、AWS Elastic Beanstalkなどと連携しやすく、さまざまな環境での開発・運用をスムーズに行えます。

スケーラビリティと高い可用性


AWS CodeStarはクラウドベースのフルマネージドサービスであり、プロジェクトの規模に応じた柔軟なスケーリングが可能です。AWSのインフラを活用することで、高可用性を確保しつつ開発を進められます。

AWS CodeStarの主な構成要素


AWS CodeStarを構成する主なサービスは以下の通りです。

CodeCommit


Gitリポジトリとして機能し、ソースコードのバージョン管理を提供します。

CodeBuild


ソースコードのビルドやテストを自動化します。

CodePipeline


CI/CDワークフローを構築し、ビルド・テスト・デプロイのプロセスを自動化します。

CodeDeploy


EC2やLambdaなどの環境へアプリケーションをデプロイするサービスです。

AWS CodeStarは、これらのサービスを統合して提供するため、開発者は最小限の設定でDevOps環境を整えることができます。次の章では、AWS CodeStarをPowerShellで管理する利点について詳しく解説します。

PowerShellを使用するメリット


AWS CodeStarを管理する方法には、AWS管理コンソールを利用する方法と、コマンドラインツールを使用する方法があります。その中でも、PowerShellを活用することで、作業の自動化や効率化が可能になります。本章では、AWS CodeStarの構成や管理においてPowerShellを使用するメリットについて解説します。

PowerShellを活用する理由

スクリプトによる自動化


AWS管理コンソールを手作業で操作する場合、繰り返し行う設定作業が多くなります。PowerShellを利用すれば、スクリプトを作成し、環境構築やCI/CDパイプラインの設定を自動化できます。これにより、作業時間の短縮やミスの削減が可能になります。

AWS PowerShellモジュールの活用


AWSは AWS Tools for PowerShell という公式モジュールを提供しており、AWSの各種サービスをPowerShellコマンドで操作できます。たとえば、CodeCommitのリポジトリ作成、CodePipelineの構築、CodeDeployのデプロイ管理などを簡単にスクリプト化できます。

Windows環境との親和性


PowerShellはWindows環境に標準搭載されており、Windows上でAWS環境を構築・管理する際に便利です。また、Active Directoryやタスクスケジューラと組み合わせることで、開発プロジェクトのCI/CDパイプラインをさらに自動化できます。

PowerShellでできること

AWS CodeStarのプロジェクト作成


PowerShellを利用すると、簡単なスクリプトでAWS CodeStarのプロジェクトを作成できます。

New-CSTProject -Id "MyProject" -Name "My AWS CodeStar Project" -ProjectTemplateId "AWS-CodePipeline" -Region "us-east-1"

このコマンドにより、AWS CodeStarのプロジェクトをスクリプトから作成できます。

CI/CDパイプラインの構成


AWS CodePipelineをPowerShellで設定することで、継続的インテグレーションと継続的デリバリー(CI/CD)を自動化できます。

New-CPPipeline -Name "MyPipeline" -RoleArn "arn:aws:iam::123456789012:role/service-role/AWSCodePipelineServiceRole"

このようにPowerShellスクリプトを利用することで、手作業では時間のかかる作業を一括で実行可能です。

リポジトリの管理


AWS CodeCommitのリポジトリをPowerShellから作成・管理できます。

New-CCRepository -RepositoryName "MyRepo" -Region "us-west-2"

このコマンドにより、新しいGitリポジトリをAWS CodeCommitに作成できます。

PowerShellを活用するメリットのまとめ

  • 設定作業の自動化:繰り返し作業をスクリプト化し、開発環境のセットアップを迅速に実行できる
  • AWS CLIよりも直感的なコマンド構文:PowerShellのオブジェクト指向のコマンドを使うことで、AWS CLIよりも柔軟に環境を管理できる
  • Windows環境との統合:タスクスケジューラなどのWindowsツールと連携し、定期的なジョブの実行や管理が可能
  • CI/CDパイプラインのスクリプト化:AWS CodePipelineをPowerShellで制御し、開発プロジェクトのデプロイを最適化できる

次の章では、AWS CodeStarの基本構成と、PowerShellを使ってどのように構成するのかを詳しく説明します。

AWS CodeStarの基本構成と必要なサービス


AWS CodeStarは、開発プロジェクトのCI/CDパイプラインを迅速に構築するための統合サービスであり、AWSの複数のサービスを組み合わせて動作します。本章では、AWS CodeStarの基本構成と、必要となる主要なAWSサービスについて解説します。

AWS CodeStarの基本構成


AWS CodeStarは、以下の主要コンポーネントで構成されています。

1. ソースコード管理(AWS CodeCommit)


AWS CodeStarは、Gitリポジトリとして AWS CodeCommit を利用します。CodeCommitは、フルマネージドのソース管理サービスであり、セキュアなコードホスティングを提供します。既存のGitHubリポジトリを使用することも可能です。

2. ビルドプロセス(AWS CodeBuild)


ソースコードをコンパイルし、テストを実行し、アーティファクト(ビルド成果物)を作成する役割を担います。CodeBuildは、スケーラブルでフルマネージドなビルド環境を提供し、手動のビルド作業を不要にします。

3. CI/CDパイプライン(AWS CodePipeline)


AWS CodePipelineは、開発プロジェクトのCI/CDパイプラインを管理します。新しいコードがリポジトリにプッシュされると、CodePipelineが自動的にビルドとデプロイを実行します。

4. デプロイプロセス(AWS CodeDeploy)


AWS CodeDeployは、ビルド済みのアプリケーションを EC2、Lambda、ECS などのAWSリソースに自動デプロイするサービスです。ロールバック機能も備えており、安全なデプロイが可能です。

5. IAMによるアクセス管理


AWS CodeStarでは、 AWS Identity and Access Management(IAM) を使用して、開発者や管理者のアクセス制御を細かく設定できます。これにより、セキュリティを確保しつつ、適切な権限をチームメンバーに付与できます。

6. CloudWatchによるモニタリング


AWS CloudWatchを利用することで、CodePipelineやCodeBuildの実行状況を監視し、エラーログの確認やパフォーマンスの分析が可能になります。

AWS CodeStarを構成する主要サービスの概要

サービス名役割・機能
AWS CodeCommitソースコードのGitリポジトリ管理
AWS CodeBuildソースコードのビルドとユニットテスト
AWS CodePipelineCI/CDの自動ワークフロー管理
AWS CodeDeployビルド成果物のデプロイ自動化
AWS IAMユーザーと権限の管理
AWS CloudWatchログとメトリクスの監視

PowerShellを活用したAWS CodeStarの構成


AWS CodeStarのプロジェクトは、PowerShellを使って自動化できます。たとえば、新しいプロジェクトを作成し、CodeCommitリポジトリをセットアップするには、以下のようなPowerShellスクリプトを実行します。

# AWS CodeStarプロジェクトの作成
New-CSTProject -Id "MyProject" -Name "My CI/CD Project" -ProjectTemplateId "AWS-CodePipeline" -Region "us-east-1"

# CodeCommitリポジトリの作成
New-CCRepository -RepositoryName "MyRepo" -Region "us-east-1"

また、CodePipelineを作成する場合は、以下のPowerShellコマンドを使用します。

New-CPPipeline -Name "MyPipeline" -RoleArn "arn:aws:iam::123456789012:role/service-role/AWSCodePipelineServiceRole"

このように、PowerShellを活用することでAWS CodeStarのセットアップを自動化し、手作業を削減できます。

まとめ


AWS CodeStarは、AWS CodeCommit、CodeBuild、CodePipeline、CodeDeployなどの複数のサービスを統合し、開発プロジェクトのCI/CD環境を一元管理できるプラットフォームです。PowerShellを活用することで、環境構築をスクリプト化し、自動化することが可能になります。

次の章では、AWS CLIとPowerShellを利用してAWS CodeStarをセットアップする手順を詳しく解説します。

AWS CLIとPowerShell環境のセットアップ


AWS CodeStarをPowerShellで管理するには、AWS CLIとAWS Tools for PowerShellの環境を整える必要があります。本章では、それらのセットアップ手順を詳しく解説します。

AWS CLIのインストールと設定

AWS CLI(コマンドラインインターフェース)は、AWSの各種サービスを操作するためのツールであり、PowerShellからも利用できます。

1. AWS CLIのダウンロードとインストール


AWS CLIは公式サイトからダウンロードし、インストールできます。

Windows環境では、以下の手順でインストールします。

  1. AWS CLIのインストーラーをダウンロード(Windows用)
  2. インストーラーを実行し、指示に従ってインストール
  3. インストール完了後、バージョン確認
aws --version

出力例(バージョンは異なる場合があります):

aws-cli/2.12.1 Python/3.9.11 Windows/10 botocore/2.12.1

2. AWS CLIの初期設定


インストールが完了したら、AWS CLIの設定を行います。

aws configure

対話式プロンプトで以下の情報を入力します。

  • AWS Access Key ID(IAMユーザーのアクセスキー)
  • AWS Secret Access Key(IAMユーザーのシークレットキー)
  • デフォルトのリージョン(例: us-east-1)
  • デフォルトの出力形式(json, yaml, text, tableのいずれか)

AWS Tools for PowerShellのインストール

AWS Tools for PowerShellは、PowerShell環境からAWSのサービスを操作するための公式モジュールです。

1. PowerShell用のAWSモジュールをインストール

以下のコマンドを実行して、AWS Tools for PowerShellをインストールします。

Install-Module -Name AWS.Tools.Installer -Scope CurrentUser
Install-AWSToolsModule AWS.Tools.Common,AWS.Tools.CodeStar,AWS.Tools.CodeCommit,AWS.Tools.CodeBuild,AWS.Tools.CodePipeline,AWS.Tools.CodeDeploy -Confirm:$false

2. インストールの確認

モジュールが正しくインストールされたことを確認するには、以下のコマンドを実行します。

Get-AWSPowerShellVersion -ListServiceVersionInfo

これにより、インストール済みのAWSモジュールの一覧が表示されます。

AWS Tools for PowerShellの設定

AWS CLIと同様に、PowerShellでも認証情報を設定する必要があります。以下のコマンドを使用して、アクセスキーとシークレットキーを設定します。

Set-AWSCredential -AccessKey "YOUR_ACCESS_KEY" -SecretKey "YOUR_SECRET_KEY" -StoreAs default

設定が完了したら、AWSに接続できるかテストします。

Get-STSCallerIdentity

正しく設定されていれば、IAMユーザーの情報が表示されます。

PowerShellでAWS CodeStarを操作する準備

AWS CLIとAWS Tools for PowerShellのセットアップが完了したので、PowerShellを使ってAWS CodeStarのプロジェクトを作成できるようになりました。

New-CSTProject -Id "MyProject" -Name "My AWS CodeStar Project" -ProjectTemplateId "AWS-CodePipeline" -Region "us-east-1"

まとめ


AWS CLIとAWS Tools for PowerShellをインストール・設定することで、PowerShellからAWS CodeStarを操作できる環境を構築できます。次の章では、PowerShellを用いてAWS CodeStarのプロジェクトを作成する方法を詳しく解説します。

PowerShellを用いたAWS CodeStarプロジェクトの作成


AWS CodeStarプロジェクトは、AWSの開発ツールを統合し、CI/CD環境をすぐに利用できるようにするためのサービスです。本章では、PowerShellを活用してAWS CodeStarプロジェクトを作成する手順を解説します。

AWS CodeStarプロジェクトの作成手順


AWS CodeStarのプロジェクトをPowerShellで作成するには、以下の手順を実行します。

1. 必要なPowerShellモジュールのインストール


事前に AWS Tools for PowerShell をインストールしていることを確認します。まだインストールしていない場合は、以下のコマンドを実行してください。

Install-AWSToolsModule AWS.Tools.CodeStar -Confirm:$false

2. IAMロールの作成


AWS CodeStarを利用するためには、適切なIAMロールが必要です。以下のコマンドでIAMロールを作成し、必要なポリシーをアタッチします。

New-IAMRole -RoleName "CodeStarServiceRole" -AssumeRolePolicyDocument '{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": "codestar.amazonaws.com"},"Action": "sts:AssumeRole"}]}'

Register-IAMRolePolicy -RoleName "CodeStarServiceRole" -PolicyArn "arn:aws:iam::aws:policy/AWSCodeStarFullAccess"

3. AWS CodeStarプロジェクトの作成


以下のコマンドを使用して、新しいAWS CodeStarプロジェクトを作成します。

New-CSTProject -Id "MyCodeStarProject" -Name "My First AWS CodeStar Project" -ProjectTemplateId "AWS-CodeCommit" -Region "us-east-1"

ここで、ProjectTemplateId の値を変更することで、異なるプロジェクトテンプレートを利用できます。例えば、AWS-CodePipeline を指定すると、CI/CDパイプラインが含まれたプロジェクトが作成されます。

4. 作成したプロジェクトの確認


プロジェクトが正しく作成されたかどうかを確認するには、以下のコマンドを実行します。

Get-CSTProject -Id "MyCodeStarProject"

成功すると、プロジェクトの詳細情報(プロジェクトID、リージョン、関連サービスなど)が表示されます。

プロジェクトにCodeCommitリポジトリを追加


AWS CodeStarでソースコード管理を行うために、CodeCommitリポジトリを作成します。

New-CCRepository -RepositoryName "MyRepo" -Region "us-east-1"

作成したリポジトリをAWS CodeStarプロジェクトに紐づけるには、以下のコマンドを使用します。

Write-CSTResource -ProjectId "MyCodeStarProject" -ResourceArn "arn:aws:codecommit:us-east-1:123456789012:MyRepo"

プロジェクトにIAMユーザーを追加


開発チームがAWS CodeStarを利用できるように、IAMユーザーをプロジェクトに追加します。

Write-CSTUser -ProjectId "MyCodeStarProject" -UserArn "arn:aws:iam::123456789012:user/DeveloperUser" -ProjectRole "CodeStarContributor"

ProjectRole には、CodeStarContributor(開発者)、CodeStarOwner(管理者)などの役割を指定できます。

PowerShellを利用したAWS CodeStarプロジェクト管理のメリット

PowerShellを活用することで、以下のような利点があります。

  • 一括自動化: スクリプトを作成すれば、同じプロジェクトを簡単に複製できる
  • 手作業の削減: AWSコンソールを操作せずに、PowerShellで簡単にプロジェクトを管理できる
  • 再現性の向上: 環境構築手順をスクリプト化することで、チーム内で統一した設定が可能

まとめ


PowerShellを使うことで、AWS CodeStarプロジェクトを迅速に作成し、関連するサービス(CodeCommit、IAMユーザーなど)を統合できます。次の章では、CI/CDパイプラインの構築とカスタマイズについて詳しく解説します。

CI/CDパイプラインの構築とカスタマイズ


AWS CodeStarは、AWS CodePipelineを利用してCI/CDパイプラインを自動構築します。本章では、PowerShellを活用してCI/CDパイプラインを作成し、カスタマイズする方法を解説します。

AWS CodePipelineとは


AWS CodePipelineは、ソースコードの変更を検知し、ビルド、テスト、デプロイを自動で実行するサービスです。CodeCommit、CodeBuild、CodeDeployと連携し、開発プロセスをスムーズに進めることができます。

PowerShellを用いたCI/CDパイプラインの構築

1. 必要なAWSサービスの準備


まず、以下のサービスを準備します。

  • CodeCommit: ソースコードの管理
  • CodeBuild: ビルドとテストの実行
  • CodeDeploy: アプリケーションのデプロイ
  • IAM: パイプラインの権限管理

2. IAMロールの作成


AWS CodePipelineが必要な権限を持つIAMロールを作成します。

New-IAMRole -RoleName "CodePipelineServiceRole" -AssumeRolePolicyDocument '{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": "codepipeline.amazonaws.com"},"Action": "sts:AssumeRole"}]}'

Register-IAMRolePolicy -RoleName "CodePipelineServiceRole" -PolicyArn "arn:aws:iam::aws:policy/AWSCodePipelineFullAccess"

3. CodePipelineの作成


以下のPowerShellスクリプトを実行して、新しいCI/CDパイプラインを作成します。

New-CPPipeline -Name "MyPipeline" -RoleArn "arn:aws:iam::123456789012:role/service-role/CodePipelineServiceRole" -PipelineDeclaration @{
    name="MyPipeline"
    roleArn="arn:aws:iam::123456789012:role/service-role/CodePipelineServiceRole"
    artifactStore=@{type="S3"; location="my-pipeline-artifacts"}
    stages=@(
        @{name="Source"; actions=@(@{name="SourceAction"; actionTypeId=@{category="Source"; owner="AWS"; provider="CodeCommit"; version="1"}; outputArtifacts=@(@{name="SourceArtifact"}); configuration=@{RepositoryName="MyRepo"; BranchName="main"}})}
        @{name="Build"; actions=@(@{name="BuildAction"; actionTypeId=@{category="Build"; owner="AWS"; provider="CodeBuild"; version="1"}; inputArtifacts=@(@{name="SourceArtifact"}); outputArtifacts=@(@{name="BuildArtifact"}); configuration=@{ProjectName="MyBuildProject"}})}
        @{name="Deploy"; actions=@(@{name="DeployAction"; actionTypeId=@{category="Deploy"; owner="AWS"; provider="CodeDeploy"; version="1"}; inputArtifacts=@(@{name="BuildArtifact"}); configuration=@{ApplicationName="MyApp"; DeploymentGroupName="MyDeploymentGroup"}})}
    )
}

このスクリプトは、以下の処理を行います。

  • ソース取得(CodeCommitからmainブランチのコードを取得)
  • ビルド(CodeBuildでソースコードをコンパイル)
  • デプロイ(CodeDeployを使用してアプリケーションを配布)

4. CodeBuildプロジェクトの作成


CodePipelineでのビルドステージを動作させるために、CodeBuildプロジェクトを作成します。

New-CBProject -Name "MyBuildProject" -ServiceRole "arn:aws:iam::123456789012:role/service-role/CodeBuildServiceRole" -Source @{type="CODECOMMIT"; location="https://git-codecommit.us-east-1.amazonaws.com/v1/repos/MyRepo"} -Artifacts @{type="S3"; location="my-build-artifacts"} -Environment @{computeType="BUILD_GENERAL1_SMALL"; image="aws/codebuild/standard:5.0"; type="LINUX_CONTAINER"}

5. CodeDeployの設定


デプロイ先のEC2インスタンスやLambda環境にデプロイするための設定を行います。

New-CDApplication -ApplicationName "MyApp" -ComputePlatform "Server"
New-CDDeploymentGroup -ApplicationName "MyApp" -DeploymentGroupName "MyDeploymentGroup" -ServiceRoleArn "arn:aws:iam::123456789012:role/service-role/CodeDeployServiceRole" -Ec2TagFilters @(@{Key="Environment"; Value="Production"; Type="KEY_AND_VALUE"})

CI/CDパイプラインのカスタマイズ

PowerShellを活用することで、CI/CDパイプラインを柔軟にカスタマイズできます。例えば、ビルド環境を変更する、デプロイ先を複数設定するなどの調整が可能です。

1. デプロイ環境を追加


新しいデプロイグループを追加する場合、以下のコマンドを実行します。

New-CDDeploymentGroup -ApplicationName "MyApp" -DeploymentGroupName "MyStagingGroup" -ServiceRoleArn "arn:aws:iam::123456789012:role/service-role/CodeDeployServiceRole" -Ec2TagFilters @(@{Key="Environment"; Value="Staging"; Type="KEY_AND_VALUE"})

2. テストステージの追加


ビルド完了後に自動テストを実行する場合、CodeBuildプロジェクトをテスト専用に追加し、CodePipelineのステージを以下のように編集します。

@{name="Test"; actions=@(@{name="TestAction"; actionTypeId=@{category="Test"; owner="AWS"; provider="CodeBuild"; version="1"}; inputArtifacts=@(@{name="BuildArtifact"}); configuration=@{ProjectName="MyTestProject"}})}

まとめ


PowerShellを活用することで、AWS CodePipelineを利用したCI/CDパイプラインをスクリプトで構築し、柔軟にカスタマイズできます。次の章では、トラブルシューティングとデバッグの方法について詳しく解説します。

トラブルシューティングとデバッグ


AWS CodeStarをPowerShellで管理する際、エラーが発生することがあります。本章では、CI/CDパイプラインの構築や運用中に起こりやすい問題と、その解決策について解説します。

1. AWS CodeStarプロジェクトの作成時のエラー

エラー例: プロジェクトの作成に失敗

New-CSTProject : The service role is not valid or does not have required permissions.

原因: CodeStarのIAMロールに適切な権限が付与されていない可能性があります。

解決策:

  1. IAMロールが適切に作成されているか確認
   Get-IAMRole -RoleName "CodeStarServiceRole"
  1. 必要なポリシーをアタッチ
   Register-IAMRolePolicy -RoleName "CodeStarServiceRole" -PolicyArn "arn:aws:iam::aws:policy/AWSCodeStarFullAccess"

2. CodePipelineのエラー

エラー例: CodePipelineのステージで停止

aws codepipeline get-pipeline-execution --pipeline-name MyPipeline --pipeline-execution-id abc123

原因: CodePipelineの構成ミス、S3バケットのアクセス権限不足、またはIAMロールの設定不足

解決策:

  1. CodePipelineのログを確認
   Get-CPPipelineExecution -PipelineName "MyPipeline"
  1. S3バケットのアクセス権限を確認
   Get-S3BucketAcl -BucketName "my-pipeline-artifacts"

必要であれば、バケットポリシーを修正

   Set-S3BucketPolicy -BucketName "my-pipeline-artifacts" -Policy '{"Statement": [{"Effect": "Allow","Principal": "*","Action": "s3:GetObject","Resource": "arn:aws:s3:::my-pipeline-artifacts/*"}]}'

3. CodeBuildのエラー

エラー例: ビルドが失敗

aws codebuild batch-get-builds --ids build-id

原因: ビルド環境のイメージが見つからない、または権限不足

解決策:

  1. CodeBuildの実行ログを確認
   Get-CBBuild -Ids "build-id"
  1. CodeBuildのIAMロールを確認
   Get-IAMRole -RoleName "CodeBuildServiceRole"

権限が不足している場合、追加する

   Register-IAMRolePolicy -RoleName "CodeBuildServiceRole" -PolicyArn "arn:aws:iam::aws:policy/AWSCodeBuildAdminAccess"

4. CodeDeployのエラー

エラー例: デプロイが失敗

aws deploy get-deployment --deployment-id d-ABC123

原因: デプロイ先のEC2インスタンスがオフライン、またはCodeDeployエージェントが正しく動作していない

解決策:

  1. EC2のステータスを確認
   Get-EC2InstanceStatus -InstanceId "i-1234567890abcdef"
  1. CodeDeployエージェントがインストールされているか確認
   aws ssm send-command --document-name "AWS-RunShellScript" --targets "Key=instanceIds,Values=i-1234567890abcdef" --parameters "commands=['sudo service codedeploy-agent status']"

必要であれば、エージェントを再起動

   aws ssm send-command --document-name "AWS-RunShellScript" --targets "Key=instanceIds,Values=i-1234567890abcdef" --parameters "commands=['sudo service codedeploy-agent restart']"

5. IAMの設定ミスによるアクセス拒否

エラー例: 認証エラー

AccessDenied: User is not authorized to perform this action

原因: IAMユーザーに必要な権限がない

解決策:

  1. IAMユーザーの権限を確認
   Get-IAMUserPolicy -UserName "DeveloperUser"
  1. 必要なポリシーをアタッチ
   Register-IAMUserPolicy -UserName "DeveloperUser" -PolicyArn "arn:aws:iam::aws:policy/AWSCodeStarFullAccess"

6. CloudWatchログの活用

AWS CodeStarのエラーをデバッグするために、CloudWatchログを活用すると便利です。

CloudWatchのログストリームを確認

Get-CWLLogStream -LogGroupName "/aws/codebuild/MyBuildProject"

最新のログを取得

Get-CWLLogEvents -LogGroupName "/aws/codebuild/MyBuildProject" -LogStreamName "log-stream-id"

まとめ


PowerShellを活用すれば、AWS CodeStarのトラブルシューティングを素早く行えます。特に、IAMの設定、S3バケットの権限、CodePipelineのステージエラーなどがよく発生するので、適切なログの確認と権限設定を行い、問題を特定・解決しましょう。次の章では、実際のユースケースをもとに、PowerShellを使ったフルマネージドCI/CD環境の構築方法を紹介します。

実践例:PowerShellでフルマネージドCI/CDを構築


ここまでAWS CodeStarの概要や各サービスのセットアップについて解説してきました。本章では、PowerShellを使用して、AWS CodeStarを活用したフルマネージドなCI/CD環境を構築する実践例を紹介します。

ユースケースの概要


今回は、以下の要件を満たすCI/CDパイプラインをPowerShellで構築します。

  • ソース管理: CodeCommitを使用
  • ビルド: CodeBuildを使用し、アプリケーションをコンパイル
  • デプロイ: CodeDeployを使用し、EC2インスタンスにデプロイ
  • 自動化: PowerShellスクリプトで環境構築を一括で実行

手順1: CodeCommitリポジトリの作成


まず、ソースコードを管理するためのCodeCommitリポジトリを作成します。

New-CCRepository -RepositoryName "MyAppRepo" -Region "us-east-1"

手順2: CodeBuildプロジェクトの作成


次に、CodeBuildプロジェクトを作成します。ビルド成果物はS3に保存されます。

New-CBProject -Name "MyBuildProject" -ServiceRole "arn:aws:iam::123456789012:role/service-role/CodeBuildServiceRole" -Source @{
    type="CODECOMMIT"
    location="https://git-codecommit.us-east-1.amazonaws.com/v1/repos/MyAppRepo"
} -Artifacts @{
    type="S3"
    location="my-build-artifacts"
} -Environment @{
    computeType="BUILD_GENERAL1_SMALL"
    image="aws/codebuild/standard:5.0"
    type="LINUX_CONTAINER"
}

手順3: CodeDeployの設定


アプリケーションをEC2にデプロイするため、CodeDeployの設定を行います。

  1. アプリケーションの作成
New-CDApplication -ApplicationName "MyApp" -ComputePlatform "Server"
  1. デプロイグループの作成
New-CDDeploymentGroup -ApplicationName "MyApp" -DeploymentGroupName "MyDeploymentGroup" -ServiceRoleArn "arn:aws:iam::123456789012:role/service-role/CodeDeployServiceRole" -Ec2TagFilters @(@{Key="Environment"; Value="Production"; Type="KEY_AND_VALUE"})

手順4: CodePipelineの作成


以下のスクリプトを実行し、CodePipelineを作成します。

New-CPPipeline -Name "MyPipeline" -RoleArn "arn:aws:iam::123456789012:role/service-role/CodePipelineServiceRole" -PipelineDeclaration @{
    name="MyPipeline"
    roleArn="arn:aws:iam::123456789012:role/service-role/CodePipelineServiceRole"
    artifactStore=@{type="S3"; location="my-pipeline-artifacts"}
    stages=@(
        @{name="Source"; actions=@(@{name="SourceAction"; actionTypeId=@{category="Source"; owner="AWS"; provider="CodeCommit"; version="1"}; outputArtifacts=@(@{name="SourceArtifact"}); configuration=@{RepositoryName="MyAppRepo"; BranchName="main"}})}
        @{name="Build"; actions=@(@{name="BuildAction"; actionTypeId=@{category="Build"; owner="AWS"; provider="CodeBuild"; version="1"}; inputArtifacts=@(@{name="SourceArtifact"}); outputArtifacts=@(@{name="BuildArtifact"}); configuration=@{ProjectName="MyBuildProject"}})}
        @{name="Deploy"; actions=@(@{name="DeployAction"; actionTypeId=@{category="Deploy"; owner="AWS"; provider="CodeDeploy"; version="1"}; inputArtifacts=@(@{name="BuildArtifact"}); configuration=@{ApplicationName="MyApp"; DeploymentGroupName="MyDeploymentGroup"}})}
    )
}

手順5: ソースコードのプッシュとデプロイの実行


AWS CodePipelineは、CodeCommitに新しいコードがプッシュされると自動的にビルドとデプロイを開始します。以下の手順でデプロイをテストします。

  1. ローカル環境でGitリポジトリを設定
git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/MyAppRepo
cd MyAppRepo
  1. サンプルアプリケーションを追加
    サンプルのindex.htmlを作成し、以下の内容を記述します。
<html>
<head><title>MyApp</title></head>
<body><h1>Deployed with AWS CodeDeploy!</h1></body>
</html>
  1. 変更をプッシュ
git add .
git commit -m "Initial commit"
git push origin main

手順6: パイプラインの動作確認


CodePipelineの実行状況を確認するには、以下のPowerShellコマンドを使用します。

Get-CPPipelineExecution -PipelineName "MyPipeline"

デプロイが成功すると、EC2上でアプリケーションがホストされます。

まとめ


PowerShellを活用することで、AWS CodeStarのCI/CD環境をスクリプトで自動構築し、迅速にデプロイを実行できます。次の章では、本記事のまとめとして、AWS CodeStarの利点とPowerShellを活用するメリットについて整理します。

まとめ


本記事では、PowerShellを活用してAWS CodeStarを構成し、フルマネージドなCI/CD環境を構築する方法について解説しました。AWS CodeStarの基本概念から、AWS CLIとPowerShellを使用した環境構築、プロジェクトの作成、CI/CDパイプラインの設定、トラブルシューティング、実践的な構築例まで、詳しく説明しました。

PowerShellを利用することで、AWS CodeStarの設定をスクリプト化し、開発環境の自動構築が可能となります。また、CodeCommit、CodeBuild、CodePipeline、CodeDeployを統合することで、継続的インテグレーション・継続的デリバリー(CI/CD)の仕組みを簡単に導入できます。

AWS CodeStarを活用することで、プロジェクトのセットアップを迅速化し、開発スピードを向上させることができます。PowerShellを駆使することで、手作業を削減し、より効率的なDevOps環境を構築できるでしょう。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次