AWSの自動運用はBoto3を使っているけど、AWS CLIを使う必要があり調査
ec2 — AWS CLI 1.25.90 Command Reference
describe-instance-attribute — AWS CLI 1.25.90 Command Reference
aws ec2 describe-instance-attribute --instance-id i-1234567890abcdef0 --attribute instanceType
root deviceのSnapshotを取るにはInstanceの停止が必要
create-snapshot — AWS CLI 1.25.90 Command Reference
To create a snapshot for Amazon EBS volumes that serve as root devices, you should stop the instance before taking the snapshot.
AMIの作成なら、オプション指定することでrebootなしにAMI作成可能
create-image — AWS CLI 1.25.90 Command Reference
--no-reboot | --reboot (boolean) You can set the NoReboot parameter to true in the API request, or use the --no-reboot option in the CLI to prevent Amazon EC2 from shutting down and rebooting the instance.
(AMI作成時、追加されたEBSの扱い(どうやって取捨選択するのか)がよくわからず)
データはEBSを増設した方に置かれていて、EBSからSnapshotを作るにはEC2の停止が必要
結局、EC2を止めないと現行EC2の複製できないと判断
ENI
create-network-interface — AWS CLI 1.25.90 Command Reference
aws ec2 create-network-interface --subnet-id subnet-9d4a7b6c --description "my network interface" --groups sg-903004f8 --private-ip-address 10.0.2.17
EBS
create-volume — AWS CLI 1.25.90 Command Reference
create EBS from snapshot
aws ec2 create-volume \ --volume-type io1 \ --iops 1000 \ --snapshot-id snap-066877671789bd71b \ --availability-zone us-east-1a
インスタンス複製はだいたいわかったつもりだが、、アカウントを超えてSnapShotをコピーするのが面倒くさそうだ(セキュリティも重要なので手間がかかるのはしょうがないが)
参考記事:
アカウント間のAMI共有&コピーの方法 - 協栄情報ブログ
AWS Organizationsによってアカウント統合されている。それぞれのOU(Organization Unit)には識別用のアカウントIDが振られている*1
OU間でSnapShotをコピーするには、コピーを渡す側で、ShapShotのセキュリティ設定画面から、アクセスを許すアカウントIDを設定する。コピーを受け取る側は、SnapShot画面で、Private Snapshotで検索?すると、上記提供されている別OUのSnapShotが参照できる。分かるとシンプルだ。シンプル過ぎてこれでいいのかとちょっと不安(アカウントID間違ったら知らない人に渡してしまう??)。
なお、SnapShotからEC2を起動するには、一旦SnapShot->AMIに変換が必要。この変換はコピー元でないとできない(AMIを作成する際に必要となる情報があるのだろう。元のEC2の情報を参照しながらAMIに変換するのかも)
■追記
若手への引継ぎを考えてAWS CLIを試していたけどやっぱりワクワクしないので、、Boto3で作業することにした
*1:OUに属するアカウントを作ったのだが、新アカウントにパスワードを設定する方法が分からなかった。結果としては、、新アカウントでログインまで進み、パスワード忘れのフローに入ってパスワード再設定するようであった