
はじめに
こんにちは!
BFT名古屋支店・インフラ女子(?)のやまぐちです。
AWSってGUIでポチポチするだけでカンタンにリソースを作れるのが何より魅力ですよね。
ネットの記事を見るとAWS CLIを用いてリソースを作成するスタイルもたくさんありますが、私はあまり触ってきませんでした。
なぜかというと。
しかし、今回CloudShellというサービスが2020年12月にローンチされたことでGUI操作が飽きてきた人もAWS CLIを使う敷居がかなり低くなりました!
これからどんどん使っていくために、まずは情報を整理しようと思います。
CloudShellを3段階で理解しよう
レベル1・CloudShellを使ってみよう
さっそく使ってみましょう。使い方はとてもカンタン!マネジメントコンソールにサインインした後に通知アイコンの左にあるアイコンをクリックするだけです。

数秒〜数十秒でプロンプトが表示されます。
CloudWatchアラームの情報を取得してみました。CloudShellはAmazon Linux 2環境のため、AWS CLIはすぐに使うことができます。

ログイン先はcloudshell-userユーザのホームディレクトリ(/home/cloudshell-user)です。このホームディレクトリには1GBまでファイルを保存することができます。

ファイルが保存できる、ということはもちろん作業端末からファイルをアップロード、作業端末へファイルをダウンロードも可能です。

このファイルをアップロード、ダウンロードできる機能はとても便利ですね。
レベル2・CloudShellの制限を知ろう
さて、CloudShellの便利さがわかったところで、改めてCloudShellの制限などを整理します。
- 導入されているコマンドラインツール
- BashやPython、Node.js、PowerShell、VIM、gitなど
- 環境に新しくパッケージ等をインストールすることも可能(要sudo)
- かかる費用
- CloudShellの利用は無料
- 権限
- AWS管理コンソールにログインしたIAMユーザの持つ権限で実行
- AWSCloudShellFullAccessポリシーが必要
- ストレージ機能
- VPC内のリソースに直接アクセスはできない
その他、20分の無操作でセッションが切れる、10セッションまで同時に利用できるなどできること、できないことがありますが普段使う分にはあまり気にすることなくいけそうです。
レベル3・CloudShellでAWS CLIを使っていこう
今回AWS CLIを触ってとても便利だと思ったのが、出力形式を指定できる部分です。例えばCloudWatchアラームの情報を表形式で出力すると以下のようになります。
--------------------------------------------------------------------------------------------------------------------------------
| DescribeAlarms |
+------------------------------------+-------------------------------------------------------------------------- ---------------+
| ActionsEnabled | True |
| AlarmArn | arn:aws:cloudwatch:ap-northeast-1:<AWSアカウントID>:alarm:XXX |
| AlarmConfigurationUpdatedTimestamp| 2021-09-21T05:58:50.642000+00:00 |
| AlarmDescription | EC2(Windows) Status Check |
| AlarmName | XXX |
| ComparisonOperator | GreaterThanOrEqualToThreshold |
| DatapointsToAlarm | 3 |
| EvaluationPeriods | 3 |
| MetricName | StatusCheckFailed |
| Namespace | AWS/EC2 |
| Period | 300 |
| StateReason | Threshold Crossed: no datapoints were received for 3 periods and 3 missing datapoint |
| StateReasonData | {"version":"1.0","queryDate":"2021-09-27T09:16:07.388+0000","statistic":〜略〜 |
| StateUpdatedTimestamp | 2021-09-27T09:16:07.392000+00:00 |
| StateValue | ALARM |
| Statistic | Maximum |
| Threshold | 1.0 |
| TreatMissingData | breaching |
+------------------------------------+-----------------------------------------------------------------------------------------+
|| AlarmActions ||
|+----------------------------------------------------------------------------------------------------------------------------+|
|| arn:aws:sns:ap-northeast-1:<AWSアカウントID>:XXX ||
|+----------------------------------------------------------------------------------------------------------------------------+|
|| Dimensions ||
|+-----------------------------------------------------------------------------+----------------------------------------------+|
|| Name | InstanceId ||
|| Value | i-XXXX ||
|+-----------------------------------------------------------------------------+----------------------------------------------+|
どうでしょうか、この見やすさ!
他にもYAMLやJSON、テキストで出してgrep , awkなどのコマンド操作も可能です。
Setting the AWS CLI output format - AWS Command Line Interface
また、出力結果をフィルタして必要な部分だけ表示することもできます。

必要な条件で抽出することで複数のリソースの値を並べて確認することもできるので、試験に利用できますね。
Filtering AWS CLI output - AWS Command Line Interface
終わりに
AWSのGUIは頻繁に変わります。その変更が良かろうが悪かろうが、CLIで情報を取得できるのであれば何も変わらないので、AWS CLIを覚えるに越したことはないですよね。
これを機に、情報取得からのパラメータシートが記載しやすい、試験がしやすいなど作業効率UPにつなげていきたいと思います。
ここまで読んでいただきありがとうございました〜 ^ ^