2020/12/24

AWS CodePipelineとは?使い方や知っておきたい用語6つを紹介

 
  

AWS Codepipelineとは?

AWS CodePipelineとは、Codeシリーズの1つでコードソフトウェアの構築、テスト、デプロイまでの過程を自動化し、短時間でアップデートできるようci/cdをサポートするマネージメント型の継続的デリバリーサービスのことです。 デプロイする前にエラーやバグを見つけることで開発を素早く正確に行うことができ、そして新しい変更全てを一貫した品質チェックを通して実行できるため、品質を向上させることができます。2019年には過去のパイプライン実行の詳細を閲覧できるようになりました。 またAWS CodePipelineは、宣言型のJSONドキュメントを使用して、パイプライン構造を作るので、既存のパイプラインを更新することや、新規パイプライン作成用のテンプレートを提供することが可能です。 更にAWS CodePipelineは、iamを使用して、リリースワークフローを変更または制御できる複数アカウントのユーザーを管理できます。アクセス権は、iamユーザー、iamロール、およびsamlと統合されたディレクトリを使用してユーザーに権限を付与することができます。 入門編としてマニュアルにあるサンプルの中には、チュートリアルもあるので、そのスクリプトに沿ってスムーズに作成することができます。例えば、GitHub Androidアプリを構築してテストするパイプラインを作成することができます。 CodePipelineを使用して、CodeCommitリポジトリに保持されているコードをAmazon EC2 インスタンスにデプロイすることもできます。

AWS CodePipelineの仕組み

AWS CodePipelineの仕組みについて説明します。 CodePipelineは、ソースコードが変更されるとそれを確認します。そして、別の操作により変更がされたかについても確認しそれぞれの流れをCodePipelineが確認します。パイプラインを手動で行なう際も同様です。 また、Amazon CloudWatch Eventsルールを使用して事前にスケジュールした通りに実行ができます。

AWS CodePipelineの特徴5つ

AWS CodePipelineは、先ほど説明した通り、ソフトウェアの構築、テスト、デプロイまでのプロセスを自動化し、短時間でアップデートすることを可能にするデリバリーサービスです。 では、AWS CodePipelineというサービスにはどのような特徴があるのでしょうか。次の項目ではこのAWS CodePipelineの5つの特徴についてそれぞれ紹介します。

CodePipelineの特徴1:カスタムシステムと統合できる

特徴1としてCodePipelineはカスタムシステムと統合することができます。 AWS CodePipelineは特定のニーズに合わせて簡単に拡張することができ、またリリースプロセスの任意のステップでAWSの構築済みのプラグイン、独自のカスタムプラグインを使用できます。 例えば、GitHubからソースコードを取得する、オンプレミスのJenkinsビルドサーバーを使用する、サードパーティーのサービスを使用して負荷テストを実施する、カスタムオペレーションダッシュボードにデプロイ情報を送信することなどが可能です。

CodePipelineの特徴2:AWSへの統合が可能

AWS CodePipelineでは、ソースコードをCodeCommit、Amazon ECR、Amazon S3から取得が可能で、ユニットビルドとのテストはAWS CodeBuildでやることができます。 変更のデプロイには、CodeDeploy、Elastic Beanstalke、Amazon ECS、もしくはFargateを使用できます。新しいデプロイを作成するとき、デプロイグループに指定された自動ロールバック設定をオーバーライドすることもできます。 これ以外にもCloudFormationのアクションをモデル化すると、リリースプロセスの一環として AWSリソースを供給、更新、削除することができます。 これにより、AWS サーバーレスアプリケーションモデル(AWS SAM)でAWS Lambda、Amazon API gateway、およびAmazon DynamoDBを使用して構築したサーバーレスアプリケーション(serverless application)の継続的デリバリーも可能になります。 CodePipelineによって、これらのサービスをサードパーティー製の開発者用ツール(register-webhook-with-third-party)やカスタムシステムと結び付けるパイプラインを設定できます。 また、パイプラインに影響を与えるイベントに関する通知を作成することができ、通知はAmazon SNS通知という形で送信されます。

CodePipelineの特徴3:ワークフローの視覚化

パイプラインでは、新しいコード変更がどのように進められていくのかが分かります。 パイプラインとそのさまざまなステージやアクションを作成、設定、管理するグラフィカルユーザーインターフェイスが用意されているため、リリースプロセスのワークフローの視覚化とモデル化を簡単に行うことができるのです。

CodePipelineの特徴4:配信がはやい

定義したリリースモデルに基づき、コードチェンジがあった場合小規模で修正しやすいうちにフェーズの構築、テスト、デプロイを自動化できます。 そのため、機能とアップデートを素早く行うことができるのです。

CodePipelineの特徴5:プラグインを統合できる

サードパーティーの開発者用ツールをワンクリックするだけで、リリースプロセスの任意のステージに統合が可能です。利用できるものとしてソース管理、ビルド、テストなどがあります。 また、ユーザー独自に構築したカスタムアクション(create-custom-action-type)を登録することでCodePiplineと統合することができます。

AWS CodePipelineで定義されている用語6つ

AWS CodePipelineには定義されている用語がいくつかあります。これらの用語を理解しておくと、実際に利用する際に自動リリースプロセスのモデリングおよび設定が容易になります。 では、次の項目でAWS CodePipelineを利用する上でぜひ知っておきたい6つの用語を紹介していきます。

CodePipeline用語1:アクション

アクションとは、アプリケーションコードに対する一連の操作のことです。CodePipeline上で有効なものは、source、build、test、deploy、approval、invokeになります。 アクションは、パイプライン内で指定された箇所において実行でき、また、パイプラインのアクションは、ステージ設定の定義に従い、連続または並行して実行できます。

CodePipeline用語2:パイプライン

パイプラインとは、ソフトウェアの変更がどのように行われまたその流れを明らかにするためのワークフロー構造のことです。 各パイプラインは一連のステージで出来ており、ワークフローをステージとアクションの一続きで定義できます。

CodePipeline用語3:ソースリビジョン

ソースリビジョンとは、パイプライン実行処理するためのソース変更のことです。ソースコードを変更すると、新しいバージョンが作成されそれを実行します。 リビジョンとは、ソースロケーションに加えられた変更で、ビルドアウトプット、ソースコード、設定などが対象です。パイプラインには複数ソースのリビジョンを同時に通過させることができます。

CodePipeline用語4:トランジション

トランジションとは、パイプライン実行がパイプラインの次のステージに移動する際のポイントのことです。 ステージのインバウンドトランジションを無効にして、実行がそのステージに入らないようにしたり、そのトランジションを有効にして実行を継続したりすることができます。 無効なトランジションで複数の実行が到着した場合、トランジションが有効になると、最新の実行だけが次のステージに進むことができます。 つまり、トランジションが無効になっている間は、より新しい実行が待機中の実行よりも優先され、トランジションが有効になった後は継続する実行が優先されるのです。

CodePipeline用語5:アーティファクト

アーティファクトとは、パイプラインで処理されるアプリケーションのソースコードや作られたアプリケーション、テンプレートなどのデータの集合体を意味します。 アーティファクトは、いくつかのアクションによって作られ、また消費されます。

CodePipeline用語6:ステージ

ステージとは、その環境で同時変更する数を制限するために使用できる1つまたは複数の論理ユニットのことです。アーティファクトの一例がソースコードです。 ステージは、デプロイステージの場合もあれば、ビルドステージの場合もあります。各ステージは、連続もしくは並列のアクションで構成され、パイプラインには2つ以上のステージを設定できます。

AWS CodePipelineの使い方3手順

AWS CodePipelineの使い方には、3つの手順があります。まずコマンドでソースコードを指定し、その後テストを実行し成功した後に環境へデプロイします。 次の項目では、AWS CodePipelineについてこれらの3つの手順を説明していきます。

CodePipelineの使い方1:ソースコードを指定する

CodePipelineでは、source actionにおいてどこからソースコードを取得するかを決めます。GitHubかS3の指定ができますが、S3を指定する場合には、予めバージョン管理において設定しておく必要があるので、注意しましょう。 S3がパイプラインのソースプロバイダーである場合、ソースファイルを1つの.zipに圧縮し、その.zipをソースバケットにアップロードできます。また解凍されたファイルを1つアップロードすることもできますが、.zipファイルを想定するダウンストリームアクションは失敗します。

CodePipelineの使い方2:テスト実行

ソースコードを取得した後にテストが実行されます。 例えばS3を利用する場合ですが、S3オブジェクトが変更された時には、自動的にパイプラインが実行されます。ですからS3 Event Notificationなどの通知を設定する必要はありません。 承認アクションのあるステージは、承認アクションが承認または却下されるか、もしくはタイムアウトするまでロックされます。タイムアウトした承認アクションは、失敗したアクションと同じ方法で処理されます。

失敗した場合

もしもテストが失敗した場合には、次の動作は実行されず停止します。 その際は、ソースコードを修正して再びsource targetにアップロードするか、自分でパイプラインプロセスを再開しない限り中止された状態となります。

CodePipelineの使い方3:環境へデプロイ

ソースコードを取得した後にテストが実行され、それが成功すればその次の手順である環境へのデプロイが実行されます。 成果物を配置したり新しいバージョンシステムを供給したりするステージです。ECS以外にも、CodeDeployやS3へのファイル配置から、CloudFormationやElastic Beanstalkを設定することが可能です。

AWS CodePipelineの利用料金は?

AWS CodePipelineに前払い料金はなく、使用した分にのみ料金が発生します。AWS CodePipelineは毎月30日以上存在し、その月に少なくとも1つのコード変更があるパイプライン1つにつき1.00USD が課金されます。 お試し期間として、パイプラインは作成後の最初の30日間は無料です。また、1か月に満たない分に対して按分計算はされません。 AWS無料利用枠というサービスもあり、さまざまなAWSのサービスをそれぞれの上限まで無料で試すことができます。 無料利用枠には、無期限無料、短期トライアル、12か月無料の3タイプがあり、無料利用枠はすべてのリージョンで毎月計算され、請求額に自動的に適用されます。なお、無料利用枠の翌月への繰り越しはできません。

AWS CodePipelineを利用してみよう

AWS CodePipelineは、フルマネージド型の継続性のあるデリバリーサービスで、初期費用や長期契約は不要、実際に使用した分のみの支払いです。 アップデートを素早く、高い信頼性を保持し配信できます。また、お好みのサービスと、AWS CodePipelineを簡単に統合することができます。 ぜひAWS CodePipelineを始めてみてはいかがですか。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】