chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

メモ: AWS CLIによるEC2管理

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に属するアカウントを作ったのだが、新アカウントにパスワードを設定する方法が分からなかった。結果としては、、新アカウントでログインまで進み、パスワード忘れのフローに入ってパスワード再設定するようであった