こんにちは、ちゃりおです。
簡単に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

アカウント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からも確認できます。

スタックができたら、出力> CrossAccountRoleの値をメモしておきます。
アカウントAのInstance Schedulerで作成したクロスアカウントロールを紐付ける
アカウントAに戻ってInstance Schedulerのスタックを選択し、スタックの更新か変更セットの作成を行います。
パラメータの「Cross-account roles」を先程メモした値に書き換えます。
スタックを更新したら完了です。

複数のIAMロールを指定したい場合は、カンマで区切ります。
これでアカウントBのインスタンスにもアカウントAのInstanceSchedulerで自動起動・停止ができるようになります。
まとめ
今回は、InstanceSchedulerについてでした。
クロスアカウント環境でも、簡単な設定で使えるので便利ですね。
インスタンスの自動起動・停止の仕組みを自分で用意するのは面倒なので
InstanceScheduler活用していきたいです。


