開発日誌
更新日 (2021/07/26)
AWSのコスト削減・AWS Instance Schedulerの使い方 
 AWSは従量課金制のため手軽にサービスを利用をしていくことができとても便利ですが料金の全体像が見えにくいため想定以上に料金がかかってしまうことが多いかと思います。なので今回は運用時のコスト削減方法を紹介したいと思います!  AWSのコスト削減にはスポットインスタンスやリザーブドインスタンスなどが有名ですが今回はあまり知られていないAWS Instance Schedulerについて説明します。  

AWS Instance Schedulerによってできること

 Amazon EC2および RDSインスタンスの開始スケジュールと停止スケジュールを設定して、AWS リソースコストを管理することができます。 また、使用されていないリソースを停止し、キャパシティーが必要なときにリソースを開始することで、運用コストを削減するのに役立ちます。例えば、企業は本稼働環境で AWS Instance Scheduler を使用して、毎日営業時間外にインスタンスを自動的に停止できます。現在すべてのインスタンスを完全に使用したままにしている場合、このソリューションによってインスタンスの使用率が低下し、設定されたスケジュールに基づいて全体的なコストが削減される可能性があります。    簡単にまとめると会社の業務時間内(9:00~18:00)のみインスタンスを稼働させ業務時間外はインスタンスを止め費用の削減をすることができ、起動と停止の作業をを自動でやってくれます !    上記の構成図の通り、Instance SchedulerはAWSが提供するサービスそのものではなく各サービスの組み合わせでの総称なため使ったことのない人も多いと思いますがコストを削減していく上でかなり重要なサービスです。ただし、注意してもらいたいのがCloudformationで作成したLamdbaなどのサービスコストが月に$5ほどかかります。   こちらの構成図を1から作るのはかなり面倒ですがすでに公式でCloudformationのテンプレートが用意されているので簡単に作成することができます!!

Instance Schedulerの設定手順

1. Cloudformationの設定

  • 下記のurlを開き画面右側にある ”awsコンソールで起動する” を押す
https://aws.amazon.com/jp/solutions/implementations/instance-scheduler/ 最初はバージニアリージョンになるので正しいリージョンへ変更する これでcloudformationの設定は完了です。CloudFormation によって、 下記のResourcesが作成されます。 ・Lambda  ・DynamoDB ・IAM Policy ・EventBridge Rule ・KMS ・SNS

2. スケジュールの設定

コンソール画面からDynamodbのページへ行きます。cloudformationの設定がうまく出来ていれば3つのテーブルが作成されているはずです。スケジュールの設定はDynamodbのテーブルからできます。 instance-scheduler-ConfigTableを開き ①Instance−scheduler−ConfigTableを選択 ②name: office-hoursを選択->アクション->編集 ③name: uk-office-hoursを選択-> アクション-> コピー これでスケジュールの設定は以上です。あとは裏でLambdaがいい感じに対応してくれます!

3.インスタンスにタグ付け

あとはインスタンス(EC2,RDS)に 特定の Tag をつけるだけです。Tagをもとに自動起動・停止が動作します。

まとめ

かなり駆け足でしたが簡単にAWS Instamce Schedulerの使い方について説明しました。 Instamce Schedulerは今回説明した機能だけではなくインスタンスサイズのアップグレードの変更などもできます。 開発環境やStaging環境のコスト削減していくにはおすすめなサービスだと思います。 参考 https://d1.awsstatic.com/Solutions/ja_JP/instance-scheduler.pdf