この記事でやったこと
- 全EC2インスタンスのIDを変数へ格納する。
- 変数(リスト)内の区切り文字が空白なのを、改行区切りにする。
- PowerShell For文でインスタンス毎にテキスト出力する。
- 以下のコマンド結果を1つのファイルへ出力する。
aws ec2 describeinstances
- 以下のコマンド結果を1つのファイルへ出力する。
目次
検証環境
- 検証日: 2021/10/28
- PC環境:
- Windows10 Home Ver21H1
- PowerShell: Ver7.1.5
- AWS CLI:
aws-cli/2.1.34 Python/3.8.8 Windows/10 exe/AMD64 prompt/off
-- profile default
: 読み取り専用-- profile aws_RW
: 書き込み権限あり- ※ 誤操作防止のため、変更操作時のみ
-- profile
オプション付与。
- ※ 誤操作防止のため、変更操作時のみ
-- profile aws_PF
: SystemsManagerポートフォワーディング用
- Windows10 Home Ver21H1
注意事項
- 本記事の内容は
Windows PowerShell
で検証しています。 - AWS CLIは
バージョン2
を使用しています。- 本記事のコマンド出力で
YAML
を使用してますが、これはバージョン2の機能です。
- 本記事のコマンド出力で
- コマンド内の変数やパラメータやは検証で使用したものを記載しています。ご自身の環境に合わせ、書き換えて使用してください。
- 個人で検証しているため実行結果に責任は持てません。必ずご自身でも検証してから使用してください。
1. 全EC2インスタンスのIDを変数へ格納する
## 全EC2のIDを変数へ格納 ${ec2_id} = aws ec2 describe-instances ` --query "Reservations[].Instances[].InstanceId" ` --output text ` ; ${ec2_id} ## < 出力例 > i-1234567890AAAAAAA i-1234567890BBBBBBB i-1234567890CCCCCCCC
2. 変数内の区切り文字を変更(空白 > 改行)
## 変数内の区切り文字を変更(半角空白 > 改行) ## [-split]のデフォルトは半角空白を改行へ。その他例: [-split ":"] [-split ","] ${ec2_id_split} = -split ${ec2_id} ` ; ${ec2_id_split} ## < 出力例 > i-1234567890AAAAAAA i-1234567890BBBBBBB i-1234567890CCCCCCCC
3. For文でインスタンス毎にテキスト出力する
EC2インスタンス毎に以下コマンドの結果を1つのファイルへ出力します。
aws ec2 describeinstances
ファイル名には「EC2インスタンスNameタグ」を含めてファイル出力します。
※拡張子はyml
にしていますが、JSON利用時はjson
へ修正してください。
20211028-091354_EC2インスタンスNameタグ_ec2-describe-instances.yml
## 変数設定 ## 出力フォルダは ${work_dir} で指定 ${datetime} = Get-Date -Format yyyyMMdd-HHmmsss ${work_dir} = "C:\#temp" ## 出力フォルダ ${work_dir} を開く Invoke-Item ${work_dir} ## For文でインスタンス毎にYAMLファイルを出力 foreach (${instances} in ${ec2_id_split}) { # EC2 instances ${ec2_name} = aws ec2 describe-instances ` --instance-ids ${instances} ` --query "Reservations[].Instances[].Tags[?Key=='Name'].Value" ` --output text aws ec2 describe-instances ` --instance-ids ${instances} ` | Out-File -Encoding ascii ${work_dir}\${datetime}_${ec2_name}_ec2-describe-instances.yml }