こんにちは、ちゃりおです。
簡単にEC2やRDSのスケジュールした自動起動・停止ができるので、AWS Instance Scheduler便利ですよね。
環境ごとにアカウントを分けてAWSを使用しています。
一元管理したかったので、Instance Schedulerをクロスアカウントで実行する必要がありました。
公式サイトに載っていた情報です。
英語しかなかったので、スクショ等混ぜつつ日本語で説明します。
やりたいこと
アカウントAにInstance Schedulerを作成。
アカウントBでも、アカウントAのInstance Schedulerを使って自動起動・停止を行う。
アカウントBでIAMロールを作って、アカウントAのInstance Schedulerに紐付けます。
AWS Instance Scheduler Automated Deployment
アカウントAにInstance Schedulerをデプロイ
アカウントAにInstance Scedulerを作成します。
AWSが用意しているCloudformatinを実行するだけで、作成できます。
Cloudformationの実行は、マネジメントコンソール>Cloudformation>スタックの作成からできます。
https://s3.amazonaws.com/solutions-reference/aws-instance-scheduler/latest/instance-scheduler.template
![schduler deploy](https://chariosan.com/wp-content/uploads/2020/02/schduler-deploy-1024x643.png)
アカウントBでInstance Scheduler用のIAMロールを作成
アカウントBでIAMロールを用意します。
先ほどと同様に、Cloudformationが用意されているので実行するだけです。
https://s3.amazonaws.com/solutions-reference/aws-instance-scheduler/latest/instance-scheduler-remote.template
アカウントIDは、InstanceSchedulerのCloudformationの出力>AccountIdからも確認できます。
![iarmrole](https://chariosan.com/wp-content/uploads/2020/02/iarmrole-1024x521.png)
スタックができたら、出力> CrossAccountRoleの値をメモしておきます。
アカウントAのInstance Schedulerで作成したクロスアカウントロールを紐付ける
アカウントAに戻ってInstance Schedulerのスタックを選択し、スタックの更新か変更セットの作成を行います。
パラメータの「Cross-account roles」を先程メモした値に書き換えます。
スタックを更新したら完了です。
![](https://chariosan.com/wp-content/uploads/2020/02/crossacount-1024x278.png)
複数のIAMロールを指定したい場合は、カンマで区切ります。
これでアカウントBのインスタンスにもアカウントAのInstanceSchedulerで自動起動・停止ができるようになります。
まとめ
今回は、InstanceSchedulerについてでした。
クロスアカウント環境でも、簡単な設定で使えるので便利ですね。
インスタンスの自動起動・停止の仕組みを自分で用意するのは面倒なので
InstanceScheduler活用していきたいです。
![aws es 推奨](https://chariosan.com/wp-content/uploads/2020/02/b34555bae7ef796ab95cd522c2d25a04-320x180.png)
![Sysops](https://chariosan.com/wp-content/uploads/2018/10/466ff2107e159bd4ed3aed9b3073131f-320x180.png)
![Lambda使わなくてもよくなったこと](https://chariosan.com/wp-content/uploads/2019/03/ac76abcbd96e5c50a7c4514e566a927a-320x180.png)