AWS CLI v2 使ってみた

AWS CLIにv2が出ていたので、試します。

インストール

Pythonがいらなくなったので、バージョンに悩むことはなくなりました。
公式サイト通りのコマンドを入力してインストールしていきます。 https://aws.amazon.com/jp/blogs/news/aws-cli-v2-is-now-generally-available/
centosで行っていきます。

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install

$ aws --version
aws-cli/2.0.7 Python/3.7.3 Linux/3.10.0-957.1.3.el7.x86_64 botocore/2.0.0dev11

特に問題なくインストールできました。
ちなみにRaspberry PiのRaspbianでインストールを試みようとしたら、エラーが出たのでおそらくまだ対応していないと思われます。

CSVインポート

AWS CLIの設定メカニズム AWS CLI v2 では、認証情報を設定するためのいくつかの新しいメカニズムが導入されています。 AWS コンソールで生成された .csv ファイルから認証情報をインポートする新しいaws configure import コマンドが追加されました。
https://aws.amazon.com/jp/blogs/news/aws-cli-v2-is-now-generally-available/

さっそくやってみます。
configure.csvを作成します。
なお今回は以下のような情報を登録していきます

User namePasswordAccess key IDSecret access keyConsole login link
test-userHogehoge@1234AKIHOGEHOGEHOGEHOGEHOGEHOGEHOGEhttps;//12345678901.signin.aws.amazon.com/console

User nameはIAMユーザーのユーザー名です。
PasswordはAWSコンソールにログインするときのパスワード
Access key IDSecret access keyはそのIAMユーザーに対応するもの
Console login linkはコンソールにログインするときのリンクです

$ sudo vim configure.csv

User name,Password,Access key ID,Secret access key,Console login link
test-user,Hogehoge@1234,AKIHOGEHOGE,HOGEHOGEHOGEHOGEHOGE,https;//12345678901.signin.aws.amazon.com/console

このようにcsvファイルを作成したらターミナルで以下のコマンドを入力してインポートします。
コマンドを実行するディレクトリはcsvファイルがあるディレクトリにしてください。
それ以外のディレクトリで実行する場合は適宜パスを変更してください。

$aws configure import --csv file://configure.csv

Successfully imported 1 profile(s)

Successfullyと表示されれば成功です。

defaultプロファイルに上書きされるわけではないので、実際にコマンドを打って使うときにはprofileを指定する必要があります。
例えばEC2インスタンスを起動するコマンドのときはこうします。

$ aws ec2 start-instances --profile test-user --instance-ids i-hogehoge

登録されている一覧はcat ~/.aws/credentialsで見ることができます。

タブ補完

これは従来のAWS CLIから使用できていました。
タブ補完を利用するには以下のコマンドを入力して、有効にする必要があります。

$ complete -C aws_completer aws

再起動すると、またコマンドを打つ必要があるので、必要があれば~/.bash_profileに追加しておくと再起動後もリセットされずに使えます。

タブ補完を有効にすると、TABキーを押して補完できます。

Auto-prompt

--cli-auto-promptというのを使うと、指示に従ってコマンドを入力することができます。
しかし、少しばかり問題が発生しました。

インスタンスを起動するときのawscliです(停止するときでも同様の症状を確認)
auto-promptを利用して、インスタンスを停止しようとしました。

$ aws ec2 start-instances --cli-auto-prompt
--instance-ids:i-hogehoge
--instance-ids [list]: The IDs of the instances.

選んでねって出るので、最後のやつ押すと

  --additional-info [string]: Reserved.
  --dry-run [boolean]: Checks whether you have the required permissions for the action, without actually making ...
  --no-dry-run [boolean]: Checks whether you have the required permissions for the action, without actually maki...
> [DONE] Parameter input finished

cliを実行するか、表示するか選べるので、実行を選択すると

> Run CLI command
  Display CLI command

なんかエラーになってしまいます…

An error occurred (InvalidInstanceID.Malformed) when calling the StartInstances operation: Invalid id: "i"

解消できなかったので、Display CLI commandのほうを選択します。
すると、このようにコマンドが表示されます

aws ec2 start-instances --instance-ids i-hogehoge

これを実行すると

$ aws ec2 start-instances --instance-ids i-hogehoge
STARTINGINSTANCES       i-hogehoge
CURRENTSTATE    0       pending
PREVIOUSSTATE   80      stopped

このように実行できます。
まだリリースされたばかりなので、不具合的なものでしょうか

おわりに

AWS CLI v2はv1とほぼ互換性が保たれているようです。AWS CLI v2 移行ガイドに下位互換のないものが記されています。
最大の目玉はPythonがなくてもインストール出来るようになったことだと、個人的には思います。
バージョンで悩む必要がないし、様々なサーバーに導入しやすくなりました。