AWS CLIを簡単に使えるようにしたのでメモを残したい
はじめに
こんにちは!!会津大学学部二年のHAMADAです。
今年もあと1ヶ月を切りました。今年最後のテストも終わったので、最後まで走り切るためにブログを今月は頑張ろうと思います。 Advent Calenderの関係であと二本は頑張って書きます!!!
目的・動機
AWSの記事を読んでいるとコマンドラインで、作業している記事が多かったからという安直な理由で取り組みました。(ブログのネタがなくて、苦し紛れっていうのも多少ありますが.... )
月並みではありますが、自分自身の理解を深めるためにまとめてみました。
環境
- MacBook Air (Ventura )
簡単にセッティング
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
[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できる。
- CSVファイルには三つのヘッダーが含まれている必要がある。
-
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/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
-
他にも多くのサポートされる環境変数がある。
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だけでなく他のクラウドサービスもそうですが、セキュリティへの意識はしっかり持って触るべきだと感じました。セキュリティ対策の部分が甘いのでしっかり学習したいと思います。何かの参考になれば幸いです。間違った点などあれば、ご指摘いただけると嬉しいです。ここまで読んでいただきありがとうございました。
所属サークル
私のTwitter
私のgithub
参考リンク