AWSをコマンドラインから操作できるCLIツールの初期設定を行います。今回はS3のバケット一覧を表示することをゴールにしています。
ここではLightsailで試していますが、EC2や他のクラウド(サーバ)環境でも同じように設定できます。LightsailはAWSのコンソールとは見た目は分離されていますが、要所要所で連携できるので必要な機能だけ本家から持ってくるといったことが可能で助かりますね。
このページに記載しているのは1系のインストール方法になります。最新の2系のインストール方法は公式ドキュメントをご覧ください。
目次
CLIのインストール
AmazonLinux
Amazon Linuxを選択した場合は、デフォルトでCLI(コマンドラインツール)がインストールされています。特にすることはありません。
$ aws --version
aws-cli/1.14.9 Python/2.7.12 Linux/4.9.62-21.56.amzn1.x86_64 botocore/1.8.13
AmzonLinux以外のLinux
ドキュメントに沿ってインストールを行います。
Pythonのパッケージ管理ソフトpip
が入っていればコマンド一発です。
### バージョン&インストール確認
$ pip --version
### インストール
$ pip install awscli --upgrade --user
$ aws --version
aws-cli/1.2.9 Python/3.4.3 Linux/3.13.0-128-generic
もしpip
が入っていない場合、まずはPythonが入っているか確認します。Python2の場合は2.6.5以上、Python3の場合はバージョン3.3以上が必要です。インストールされていない場合はyumやaptなどでインストールしましょう。
### Python2
$ python --version
### Python3
$ python3 --version
Pythonを入れてもpip
が存在しない場合、次のようにpip
をインストールします。
### ダウンロード
$ curl -O https://bootstrap.pypa.io/get-pip.py
### pipのインストール
$ python get-pip.py --user
### パスを通す
$ vi ~/.bashrc
export PATH=~/.local/bin:$PATH
$ source ~/.bashrc
macOS
Catalinaでインストールした場合、以下のようにpip3で入れたあとにパスを通してやります。
### インストール
$ pip3 install awscli --upgrade --user
### パスを通す
$ vi ~/.zshrc
export PATH=$HOME/Library/Python/3.7/bin:$PATH
$ source ~/.zshrc
### 確認
$ aws --version
aws-cli/1.18.53 Python/3.7.3 Darwin/19.4.0 botocore/1.16.3
IAMの作成
CLIを動作させるためのIAMを作成します。IAMは情報が漏れた場合などを考え、使いまわさずに環境ごとに作成しています。
AWSのコンソールにあるIAMにアクセスし、左側メニュー「ユーザー」をクリック。
「ユーザーを追加」ボタンをクリック。
ユーザー名には適当な文字列を入力します。個人的には「ユーザー名@サーバ名」的な感じでつけることが多いです。アクセスの種類は今回はCLIからの利用になりますので「プログラムによるアクセス」にチェックします。コンソールにはログインさせません。
最後にこのIAMに付与する権限を設定します。グループなど作ってまとめて管理した方が楽なんですが、今回はS3が使えれば良いので「既存のポリシーを直接アタッチ」をクリックし、「AmazonS3FullAccess」にチェックします。
最終的に作成が完了したら、「アクセスキーID」と「シークレットアクセスキー」をどこか適当な場所にメモしておきます。
CLIの設定
aws configure
最後にaws configure
コマンドを叩き、先ほど作成したIAM情報などを登録します。
$ aws configure
AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json
リージョンはデフォルトで使用したい地域を入力します。
リージョンの一覧から1つ選びます。ここでは東京リージョンを選択しています。
output format はjson、text、tableのいずれかの文字列を入力します。特にこだわりがなければjsonあたりで良いかと思います。
登録内容の確認
aws configure
で入力した内容はホームディレクトリの.aws
ディレクトリ以下に保存されるので、正常に記録されたのかのぞいてみましょう。まぁ、直接ここを書き換えても良いのですけどねw
$ ls ~/.aws
config credentials
$ cat ~/.aws/config
[default]
output = json
region = ap-northeast-1
$ cat ~/.aws/credentials
[default]
aws_access_key_id = xxxxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
パーミションが600になってますのでオーナー以外は見れないのですが、特に暗号化などされず素の状態で記録されますので取り扱いに注意してください。
CLIの実行
試しにS3のバケット一覧を表示してみましょうか。次のようにコマンドを打って結果が返ってくれば成功です。
$ aws s3 ls
2017-07-24 07:11:26 backup.example.com
2017-05-09 11:44:04 logs.example.com
CLIのアップデート
バージョンアップもpip
で行えます。定期的に実行しましょう。
$ pip install --upgrade awscli
お疲れ様でした!
これで様々なコマンドを試すことができるようになりました。IAMの権限を増減することも忘れずに。
このブログを応援する
お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。
同じカテゴリの記事
- [AWS] ECRにDockerイメージをプッシュする
- [AWS] S3へMIMEタイプを自動判定しながらアップロードする – Node.js
- [AWS] Serverless FrameworkでS3にファイルが追加されたらLambdaを起動する
- [AWS] CloudFrontのオリジンを動的に変更する – Lambda@Edge + Node.js
- [AWS] Serverless FrameworkでLambdaをArm64対応する
- [AWS] CloudFront+S3オリジンでindex.htmlを省略する – Lambda@Edge + Node.js
- [AWS] CloudFrontでBASIC認証を行う – Lambda@Edge + Node.js
- [AWS] Comprehendで日本語の感情分析を行う