マイナビニュースマイナビ

パイプラインの構築(その6)

【連載】

AWSで実践! 基盤構築・デプロイ自動化

【第18回】パイプラインの構築(その6)

[2019/10/24 08:00]川畑 光平 ブックマーク ブックマーク

本連載では、マイクロサービスアーキテクチャでの継続的デリバリ(CD:Continuous Delivery:CD)を以下のようなパイプラインで実装する方法について、解説を進めています。

本連載で実装を進めている継続的デリバリのパイプライン

前回は、E2Eテストが完了したWeb(BEF:BackendForFrontend)アプリケーションのコンテナイメージをステージング環境へデプロイするパイプラインを構築しました。続く今回は、AmazonSNSへのトピックの作成とパイプラインの一時停止を行い、ステージング環境で後続の性能テスト、セキュリティテスト、受入テストを実行した後、プロダクション環境へのリリースを承認するパイプラインを構築します。

その他のテスト後の管理者によるリリース承認

CodePipelineがSNSに対し承認のトピックを発行し、パイプラインを一時停止させます。 デプロイされたBackendおよびBFFアプリケーションに対してパフォーマンステストやセキュリティテストを実行します。 テストの結果を踏まえ、プロダクトオーナーやマネージャがAWSコンソールでCodePipeline上で保留しているトピックを承認・否認します。

その他のテスト後の管理者によるリリース承認

管理者による承認プロセスは「Amazon SNS(Simple Notification Service)」を使用して行い、承認が完了後、後続のパイプラインが動き出すように設定します。

まずは、Amazon SNSの概要とトピックの設定方法について解説していきます。

Amazon SNSの概要と承認トピックの作成

Amazon SNSはPublish/Subscribe型のメッセージ配信サービスです。Publish/Subscribe型では、発行者(Publisher)は、複数の購読者(Subscriber:WebServer、Mail、Amazon SQS、Amazon Lamdaなど)へ非同期にメッセージを送信できます。SNSで配信するメッセージの特徴は、以下の通りです。

  • 単一で複数の購読者へメッセージを送信できる
  • メッセージの順序は保証されない
  • 発行済みのメッセージは削除できない
  • メッセージ配信の失敗時は配信ポリシーによりリトライが可能
  • メッセージには最大256KBのテキストデータ(XML、JSON、テキスト)を含めることができる

Amazon SNS を使用するときは、所有者としてトピックを作成し、そのトピックと通信できるPublisherとSubscriberを決定するアクセスポリシーを定義します。

Publisherは、自分が作成したトピック、または発行を許可されたトピックにメッセージを送信します。トピックに送信されたメッセージは、Amazon SNSが、定義されたSubscriberにメッセージを送信します。AWSコンソール上からは、以下の操作設定が可能です。

API 概要
CreateTopic 通知の公開先トピック(受け口/発信元の定義)を作成する
Subscribe エンドポイントに登録確認メッセージを送信して、エンドポイントを受信(Subscribe)登録する
DeleteTopic トピックとその登録サブスクリプションを全て削除する
Publish トピックを受信登録しているエンドポイントにメッセージを送信する

それでは、プロダクション環境へのリリースを承認するためのトピックを作成しましょう。「Amazon SNS」サービスから、「トピック」メニューを選択し、「トピックの作成」ボタンを押下して、以下の要領に従って、入力します。今回はSNSトピックの名称以外はデフォルト設定で問題ありません。

入力箇所 項目 説明
詳細 名前 SNSトピックの名称を入力します
表示名(オプション) ショートメッセージサービスでの表示名を入力します
暗号化 暗号化 通信の暗号化に加えて、トピックのメッセージを暗号化するオプションです。有効化する場合、サーバ側の暗号化の有効化を設定します。暗号化にはAWS Key ManagementServiceを利用します
アクセスポリシー メソッドの選択 アクセスポリシーの設定方法を選択します。「基本」ではラジオボタン選択、「高度な」ではJSONエディタによりアクセス制御を設定します
配信再試行ポリシー デフォルトの配信再試行ポリシーの使用 デフォルトの再試行ルールでメッセージを再送します
配信ステータスのログ記録 CloudWatch Logsへのメッセージ配信ステータス設定 CloudWatch Logsへログ記録する対象とサンプルレート、サービスロールを設定します
タグ キーと値 SNSトピックへ割り当てるメタデータラベルのキーと値を設定します

「トピックの作成」画面

なお、アクセスポリシーには、必要に応じてリリース承認を行える管理者ユーザーを追加してください。

プロダクション環境へのリリース承認フローパイプラインの設定

前回までのパイプラインでステージング環境へのデプロイは完了しているので、スループットやレスポンスタイムを確認するための性能テストや、ペネイトレイトテスト、脆弱性診断といったセキュリティテスト、受入テストなどの完了後(ここではテストについては実施済みのものとして先へ進みます)に、これまで作成してきたパイプラインへ、承認を行うフローを想定した承認アクションを設定します。

AWSコンソールの「CodePipeline」サービスを選択し、パイプラインを選択して、「編集する」ボタンを押下してください。

承認フローパイプラインの設定

新たにパイプラインステージを追加します。

ステージを追加する

ステージ追加後、アクションを追加します。以下の要領に沿って、アクションを追加した後、「完了」ボタンを押下してください。

  • アクション名:任意のアクション名を追加します
  • アクションプロバイダー:「Manual approval」を選択します
  • SNSトピックのARN:前節で作成したSNS Topicを設定します
  • レビュー用URL:テストの証跡や静的解析の結果などリリースの判断になる成果物があればリンクを設定します
  • コメント:管理者が承認画面を開いた場合に表示させるコメントを入力します

アクションを追加する

パイプライン変更後は、「変更をリリースする」ボタンを押下し、SNSトピックへメッセージが発行されて、承認を待機する状態となるか確認した上で、「Review」ボタンを押下します。

「Review」ボタンを押下

コメントを入力し、承認するボタンを押下します。

「承認します」ボタンを押下

承認すると、正常完了し、後続のパイプラインへ処理が移行するようになります。

正常完了

以上で、プロダクション環境へのリリースを承認するパイプラインを設定できました。次回は、プロダクション環境にリリースするコンテナイメージを作成するパイプラインを構築します。

著者紹介


川畑 光平(KAWABATA Kohei) - NTTデータ 課長代理

金融機関システム業務アプリケーション開発・システム基盤担当を経て、現在はソフトウェア開発自動化関連の研究開発・推進に従事。

Red Hat Certified Engineer、Pivotal Certified Spring Professional、AWS Certified Solutions Architect Professional等の資格を持ち、アプリケーション基盤・クラウドなどさまざまな開発プロジェクト支援にも携わる。2019 APN AWS Top Engineers & Ambassadors選出。

本連載の内容に対するご意見・ご質問は Facebook まで。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

Dropboxがセキュリティ機能の強化に多額の投資をする理由

Dropboxがセキュリティ機能の強化に多額の投資をする理由

米Dropboxが企業ユーザーの取り込みに注力している。同社が9月25日(現地時間)に米国カリフォルニア州で開催したユーザーカンファレンス「Work in Progress」では、企業ユーザー向けの機能拡充が多数紹介された。中でも目立ったのは、セキュリティ機能の強化だ。

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で TECH+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
Google Workspaceをビジネスで活用する
ニューノーマル時代のオウンドメディア戦略
ミッションステートメント
教えてカナコさん! これならわかるAI入門
AWSではじめる機械学習 ~サービスを知り、実装を学ぶ~
Kubernetes入門
SAFeでつくる「DXに強い組織」~企業の課題を解決する13のアプローチ~
AWSで作るマイクロサービス
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る