株式会社SCOグループ

TECH NOW

システム開発

2021.11.16

自動起動と自動停止について

初めまして。システム部のネットワーク担当です。

サーバ、ネットワーク、Webアプリケーションとは切っては切れない存在となった今の世界。また昨今の時世もあり、手放せなくなった物。それは「クラウドサーバ技術」。

そんなクラウドサーバの中で弊社でも利用している「AmazonWebService(以下、AWS)」のサービスの1つElastic Compute Cloud(以下、EC2)って実は思って居る以上の金額がかかります。それを抑えると言う点でも、開発環境やステージング環境、テスト環境と呼ばれる「本番以外」の環境は業務時間外でストップしてしまっても良いのでは無いか。

千里の道も1歩から。ネットワーク・インフラを担当する様になってからそんなことを良く思います。そこから考えてみましょう。

コスト

開発環境のコストを考えてみましょう。

24時間で1ヶ月を30日と計算するとします。開発社が5人、1人辺り1台のt3.microサーバを立てます。Elastic Block Store(EBS)を一人あたり20GiBとします。通信費は別として単純稼働費で計算します。

AWSは1時間単位での課金となります。そして、料金はオンデマンドとして計算します。

料金体系から見ると0.0136 USD/hour なので1日計算だと 0.3264USD。これが5台となりますので 1日辺り1.632USD、月間48.96USDです。
EBSの料金が 0.096USD/GB 月/台、5倍で0.48USD/月、両方で約50USD/月。円換算120円として6000円、年間で7200円。通信費を含めるともうちょっとかかります。

たかだかこれくらいで「だから?」と思っちゃいけません。今回はあくまで開発環境ベースで考えました。これを自分たちが使っている「テスト環境」や「ステージング環境」という一時停止可能環境と思って考えてみてください。さて、そこで考えてのは「深夜時間帯だけ停止出来ないの?」ということ。

手順

今回のタイトルです。実践してみましょう。

必要な物

  • AmazonSystem Manager
  • IAMロール
  • CloudWatchEvent

サーバーにインストールする物

  • Amazon SSM Agent

上記が出来れば後は案外簡単にできます。

手順

長い前置きがありましたが、実機的なオートメーションを使ってみましょう。要するに自動化です。いま流行の。

手順1 IAMロールを作成
手順2 専用の信頼関係記述をします。
手順3 CloudWatchイベントのルールを作る。
手順4 Aamzon SSM Agentを各インスタンスにインストールしておく
手順5 実行確認

以上です。聞くが易しとは言いますが、実際これだけです。

この時点で気がついているかと思いますが、平日(月~金)5時~22時という通常業務範囲内でのみ起動としましょう。その場合、0時~5時、22時~0時の合計7時間を停止出来ることになります。

さて上記の計算式に当てはめてみましょう。t3.microで料金はは0.013 USD/hourです。なので 0.013 × 7hour × 5台 = 1.05、1日辺り120円~130円くらい。本番でも社内環境系や社内システム系は上記が可能なので大幅なコストカットも見込めるのかなという風に思って居ます。参考になるURLはこちら(私は大好きクラスメゾッドさん)。

実践

先ほど記載した手順を実践してみましょう。なお、本記述は、本記事記載時点でのAWSマネジメントコンソールになります。アップデート等で探される場合はメインサービスをご確認ください。

手順1 IAMロールを作成

AWSマネジメントコンソールへログイン→IAM の順へアクセスし、アクセス管理からロールを選択します。

ロールの作成より「systems Manager」→「System Manager」を選択し、「次のステップ:アクセス権限」をクリックします。

アクセス権限には、「AmazonSSMAutomationRole」をを渡します。

手順2 専用の信頼関係記述をします。

信頼関係のタブを洗濯し、以下の様にに書き換えます。

上記でロールの作成完了となります。

手順3 CloudWatchイベントのルールを作る。

スタート用とストップ用、2つ必要です。本稿では1個分(Start分)のみにてご紹介致します。JST:09:00:00にて起動する設定です。

次にCloudWatchへ移動し、左側から「イベント」→「ルール」と移動していきます。

ルールの作成を行います。なお、Cron方式などが通常のLinuxやビジュアライザとは異なります。Amazon公式Documentをご参照ください。また、時刻設定はUTCでの設定となります。そのため、この辺りを参照にUTCで設定すると良いでしょう。

パターンの定義です。

次にターゲットの設定です。

種類は、「SSM Automation」を選びます。ドキュメントとして「AWS-StartEC2Instance」(停止の場合はAWS-StopEC2Instance)を選択します。ドキュメントのバージョン設定はデフォルトで問題ありません。

定数ですが、定時起動(もしくは停止)したいインスタンスを入力します。そして、ロールについては、手順1・2にて作成したロールをアタッチします。

※インスタンス名はセキュリティ観点より消させて頂きました。上記にて作成を実施します。

手順4 Aamzon SSM Agentを各インスタンスにインストールしておく

インストール手順については省略致します。※利用OSによって異なるためAWSのドキュメント(Linux)AWSのドキュメント(Windows)をご参照ください。

手順5 実行確認
「AWS System Manager」→「変更管理」→「自動化」を選択します。

以下の様にステータス「成功」となっており、開始時刻・終了時刻が表示されていれば成功です。

本日はここまで。