HAMADAの語り草

興味のある技術のアウトプットをしたいと思います

AWS CLIを簡単に使えるようにしたのでメモを残したい

はじめに

こんにちは!!会津大学学部二年のHAMADAです。

今年もあと1ヶ月を切りました。今年最後のテストも終わったので、最後まで走り切るためにブログを今月は頑張ろうと思います。 Advent Calenderの関係であと二本は頑張って書きます!!!

今回は、AWS CLIについてです。

目的・動機

AWSの記事を読んでいるとコマンドラインで、作業している記事が多かったからという安直な理由で取り組みました。(ブログのネタがなくて、苦し紛れっていうのも多少ありますが.... )

月並みではありますが、自分自身の理解を深めるためにまとめてみました。

環境

簡単にセッティング

  • brew install awscli を実行。
  • aws --verion でversionを確認。
  • aws configure
$ aws configure
AWS Access Key ID [None]:AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]:###################
Default region name [None]:ap-northeast-1
Default output format [None]:json 
  • これらの情報は~/.aws/credentialsと~/.aws/configに保存される。

~/.aws/credentials

[default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=##################

~/.aws/config

[default] region=ap-northeast-1 
output=json

これで最低限は設定できた。

configure コマンド

  • aws configure set を利用して任意の認証情報または構成設定を設定できる。

    • aws configure set region ap-northeast-1 --profile integ

      これはregionという名前のプロファイルの中にある integ 設定している。

      設定を削除するためには、空白の文字列を値として渡すか、テキストエディタで直接編集する。

  • aws configure get を利用して設定した認証情報または構成設定を取得する。

    • aws configure get region --profile integ

           

  • aws configure import を利用するとCSVウェブコンソールから生成されたAWS認証情報をインポートする。

    • CSVファイルには三つのヘッダーが含まれている必要がある。
      • ユーザ名
      • アクセスキーID
      • シークレットアクセスキー
    • aws configure import --csv file://credentials.csv を実行すればimportできる。
  • aws configure list を利用すると、設定した名前、値、設定を取得し、表示する。

  • aws configure list-profiles を利用するとすべてのプロファイル一覧が表示される。

configの設定

今回は、個人的に今使用する必要がありそうなものを設定。

  • AWSアクセスキー
    • これはcredentialsファイルに書く(今回は、簡単にセッティングで設定済み)
    • aws_access_key_id = AKIAIOSFODNN7EXAMPLE
  • AWSシークレットアクセスキー
    • これはcredentialsファイルに書く(今回は、簡単にセッティングで設定済み)
    • aws_secret_access_key = #####################
  • CLI自動プロンプト
    • awsコマンドの補完や検索などをやってくれる。
    • cli_auto_prompt = on
    • onの部分をon-partial にするとすべてのコマンドではなく不慣れなコマンドだけ補完するようにできる。
  • AWS history
    • aws history list コマンドを使えるようになる(defaultではoffになっている)
    • cli_history = enabled にすると使える。
      • コマンドの履歴がない場合は "Could not locate history. Make sure cli_history is set to enabled in the ~/.aws/config file" と出る。

名前付きプロファイル

  • 認証情報プロファイル ~/.aws/credentials

    • [default] はプロファイルなしで実行するときに使う。

    • [user1] (別のプロファイル)を使用するときは--profile user1 のようにコマンドで指定。

      • 注意:credentialsファイルにエントリは作成するときは’profile’という単語は使わない。
    • 記入例

      [default] aws_access_key_id=AKIAIOSFODNN7EXAMPLE 
      aws_secret_access_key=#####################################
      [user1] aws_access_key_id=AKIAI44QH8DHBEXAMPLE 
      aws_secret_access_key=#####################################
  • 設定プロファイル ~/.aws/config

    • 各プロファイルには異なる認証情報を記入できる。(IAMが違うなど)

    • 記入例

      [default] region=ap-northeast-1 
      output=json
      [profile user1] region=us-east-1 
      output=text
      • 注意[profile user1]のようにprofileを書くところがcredentialsとの違い。

環境変数の設定

  • 環境変数を設定するとシェルセッションが終了する、もしくは、変数に別の値を設定するまで使用する値を変更することができる。

  • 名前付きプロファイルを一時的にデフォルトにしたいときなどに利用する。

  • 利用例

    $ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE 
    $ export AWS_SECRET_ACCESS_KEY=##############################
    $ export AWS_DEFAULT_REGION=ap-northeast-1
  • 他にも多くのサポートされる環境変数がある。

AWS CLI を設定する環境変数

IAM確認

  • IAMユーザの確認

    • aws iam list-users

      {
          "Users": [
              {
                  "Path": "#",
                  "UserName": "#########",
                  "UserId": "######################",
                  "Arn": "arn:aws:iam::################:####/########",
                  "CreateDate": "########################",
                  "PasswordLastUsed": "######################"
              }
          ]
      }
      
  • IAMグループの確認

    • aws iam list-groups

    • {
          "Groups": [
              {
                  "Path": "#",
                  "GroupName": "######",
                  "GroupId": "####################",
                  "Arn": "arn:aws:iam::############:######/#######",
                  "CreateDate": "######################"
              }
          ]
      }
  • シークレットアクセスキーのコピーに失敗していて、

    An error occurred (SignatureDoesNotMatch) when calling the ListGroups operation: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

    が出ました。個人的に注意。

感想と展望

基本的には、普段ターミナルを触るのと差異がないように感じました。要所要所でセキュリティを意識することが多く、AWSだけでなく他のクラウドサービスもそうですが、セキュリティへの意識はしっかり持って触るべきだと感じました。セキュリティ対策の部分が甘いのでしっかり学習したいと思います。何かの参考になれば幸いです。間違った点などあれば、ご指摘いただけると嬉しいです。ここまで読んでいただきありがとうございました。

 

所属サークル

A-PxL (@aizu_PxL) / Twitter

私のTwitter

HAMADA (@AHMOS_HMD) / Twitter

私のgithub

ahmos0 (HAMADA) · GitHub

 

参考リンク

docs.aws.amazon.com