BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【AWS・CloudShell】3段階でカンタン理解!AWS CloudShellをどんどん使っていこう!

f:id:bftnagoya:20210930095542j:plain

はじめに

こんにちは!
BFT名古屋支店・インフラ女子(?)のやまぐちです。

AWSってGUIでポチポチするだけでカンタンにリソースを作れるのが何より魅力ですよね。
ネットの記事を見るとAWS CLIを用いてリソースを作成するスタイルもたくさんありますが、私はあまり触ってきませんでした。

なぜかというと。

  • 作業PCにクレデンシャルを入れたくない
    • そもそもIAMユーザごとのアクセスキーやシークレットアクセスキーを払い出すことに抵抗がある
  • EC2にAWS CLIを入れればよい
    • Amazon Linux系なら別途入れる必要もないので楽

しかし、今回CloudShellというサービスが2020年12月にローンチされたことでGUI操作が飽きてきた人もAWS CLIを使う敷居がかなり低くなりました!

これからどんどん使っていくために、まずは情報を整理しようと思います。

CloudShellを3段階で理解しよう

レベル1・CloudShellを使ってみよう

さっそく使ってみましょう。使い方はとてもカンタン!マネジメントコンソールにサインインした後に通知アイコンの左にあるアイコンをクリックするだけです。
f:id:bftnagoya:20210929144244p:plain:w550

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

f:id:bftnagoya:20210929150019p:plain:w700

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

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

このファイルをアップロード、ダウンロードできる機能はとても便利ですね。

レベル2・CloudShellの制限を知ろう

さて、CloudShellの便利さがわかったところで、改めてCloudShellの制限などを整理します。

  • 導入されているコマンドラインツール
    • BashPython、Node.js、PowerShellVIM、gitなど
    • 環境に新しくパッケージ等をインストールすることも可能(要sudo)
  • かかる費用
    • CloudShellの利用は無料
  • 権限
    • AWS管理コンソールにログインしたIAMユーザの持つ権限で実行
    • AWSCloudShellFullAccessポリシーが必要
  • ストレージ機能
    • ホームディレクトリ以外のファイルは保存されない
    • 120日アクセスがないとホームディレクトリ以下のファイルも削除される
  • 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                                      ||
|+-----------------------------------------------------------------------------+----------------------------------------------+|

どうでしょうか、この見やすさ!
他にもYAMLJSON、テキストで出してgrep , awkなどのコマンド操作も可能です。

Setting the AWS CLI output format - AWS Command Line Interface

また、出力結果をフィルタして必要な部分だけ表示することもできます。
f:id:bftnagoya:20210930095041p:plain:w700

必要な条件で抽出することで複数のリソースの値を並べて確認することもできるので、試験に利用できますね。

Filtering AWS CLI output - AWS Command Line Interface

終わりに

AWSGUIは頻繁に変わります。その変更が良かろうが悪かろうが、CLIで情報を取得できるのであれば何も変わらないので、AWS CLIを覚えるに越したことはないですよね。

これを機に、情報取得からのパラメータシートが記載しやすい、試験がしやすいなど作業効率UPにつなげていきたいと思います。

ここまで読んでいただきありがとうございました〜 ^ ^