LoginSignup
12
0

More than 3 years have passed since last update.

AWS CLI v2 が GA(General Availability) になったので早速使ってみました。

Last updated at Posted at 2020-02-11

みんな大好き AWS CLI の v2 が 2020年2月11日日本時間早朝に GA(General Availability) となりました!
わーい。
https://aws.amazon.com/jp/blogs/developer/aws-cli-v2-is-now-generally-available/

筆者はAWS CLI の薄い本を書くくらい AWS CLI が好きだったりします。
というわけで、早速使ってみました。

インストール

公式ガイドには Linux、 macOS、 Windows 向けのインストール手順が載っています。
今回は、 AmazonLinux2 で試したので、 Linux の手順に則ってみました。

公式ガイド:https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html

インストールする

公式ガイドには以下の記載があります。
https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html#cliv2-linux-install

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

実際に試すとこんな感じ。

ec2-user@test ~]$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 30.6M  100 30.6M    0     0  64.1M      0 --:--:-- --:--:-- --:--:-- 64.0M
[ec2-user@test ~]$ ls
awscliv2.zip
[ec2-user@test ~]$
[ec2-user@test ~]$ unzip awscliv2.zip
Archive:  awscliv2.zip
   creating: aws/
   creating: aws/dist/
(中略)
  inflating: aws/dist/zlib/cpython-37m-x86_64-linux-gnu/soib.cpython-37m-x86_64-linux-gnu.so
[ec2-user@test ~]$
[ec2-user@test ~]$ sudo ./aws/install
You can now run: /usr/local/bin/aws --version
[ec2-user@test ~]$
[ec2-user@test ~]$ /usr/local/bin/aws --version
aws-cli/2.0.0 Python/3.7.3 Linux/4.14.154-128.181.amzn2.x86_64 botocore/2.0.0dev4
[ec2-user@test ~]$

早速試してみます。

本稿執筆時点での新機能は以下の通りです。

  • インストーラ
    • これは上記で試し済み。今までの差異としては、ビルド済みパッケージでの提供かつ前提を満たすバージョンの Python を事前にインストールする必要がなくなりました。
  • 設定手順
    • これまで AWS CLI に IAM ユーザーの認証情報を設定するのには、IAM ユーザー作成時に表示される情報もしくは作成時にダウンロードできる csv ファイルを参照して設定を行っていました。 v2 ではその csv ファイルをインポートして設定が可能になりました。
    • また、認証方法として SSO も利用可能になりました。
  • リソース名の自動補完
    • すでに AWS アカウント上に存在するリソース名を補完して CLI のパラメータにしてができるようになりました。地味にすごい。
  • 自動プロンプト
    • 必要なパラメータ指定をアシストしてくれるようになりました。これで必須パラメータ漏れで怒られることも減ります。
  • ウィザード
    • いわゆる、対話型のコマンドとして動作するモードです。本稿執筆時点では一部のサービスのみに対応しています。
  • yaml での出力
    • 実行結果の出力形式に yaml が追加されました。

本稿では、リソース名の自動補完と自動プロンプト、ウィザード、yaml での出力について試してみます。
SSO は可能なら試行後に更新します。

リソース名の自動補完

現時点では全部のサービスには対応しきっていないようです。
例えば、試行した中では Amazon EC2 や Amazon S3 のバケット名、 RDS などは対応していないようです。
今後この辺りの拡充が期待されます。

というわけで、後述のウィザードに対応しているサービス(Amazon DynamoDB や AWS IAM、AWS Lambda)は対応しているようだったので、試してみました。

[ec2-user@test ~]$ aws dynamodb describe-table --table-name <TABキーを押す>
12234            table-us-east-1
[ec2-user@test ~]$
[ec2-user@test ~]$ aws iam get-user --user-name <TABキーを押す>
cli         codecommit  hirosys
[ec2-user@test ~]$
[ec2-user@test ~]$ aws lambda get-function --function-name <TABキーを押す>
AWS-DeepRacer-Test-Reward-Function              aws-deepracer-reward-fn-********-****-****-****-************

自動プロンプト

自動プロンプト機能を使って、 Amazon VPC を作成してみました。

[ec2-user@test ~]$ aws ec2 create-vpc --cli-auto-prompt
--cidr-block: 10.20.0.0/16

必須パラメータである --cidr-block の指定の後、任意パラメータのリストが表示されました。
image.png

特に指定せずに一番下にある ** [DONE] Parameter input finished** を選択してEnterキーを押下すると、VPC が作成できました。

{
    "Vpc": {
        "CidrBlock": "10.20.0.0/16",
        "DhcpOptionsId": "dopt-********",
        "State": "pending",
        "VpcId": "vpc-*****************",
        "OwnerId": "************",
        "InstanceTenancy": "default",
        "Ipv6CidrBlockAssociationSet": [],
        "CidrBlockAssociationSet": [
            {
                "AssociationId": "vpc-cidr-assoc-*****************",
                "CidrBlock": "10.20.0.0/16",
                "CidrBlockState": {
                    "State": "associated"
                }
            }
        ],
        "IsDefault": false,
        "Tags": []
    }
}

無事に作成できました。

気になった点・・・

aws ec2 describe-instances を自動プロンプトモードで実行した際、 --instance-ids にインスタンスIDを指定しても、以下のメッセージが表示されて実行できませんでした。

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

しかし、 Print CLI command. で出力した CLI を実行する分には意図した通りに動く不思議。。。

ウィザード

[ec2-user@test ~]$ aws lambda wizard new-function

まずは作成する Lambda 関数の名前を指定します。
次に、使用するランタイムの種類やバージョンをリストから選択します。
image.png

さらに、どのロールを使用するかをリストで選択します。
image.png

そして、 handler と Lambda 関数が入った zip ファイルを指定して、
最終的には以下のような感じになり、実行します。

[ec2-user@test ~]$ aws lambda wizard new-function
Enter the function name: cliv2
Select the Lambda runtime
Select the role to use
Enter the handler for your function: lambda_function.lambda_handler
Enter the new location of your code zip file: cliv2_test.zip
[ec2-user@test ~]$

特にエラーなく実行できれば Lambda 関数の作成に成功しています。
以下は、マネージメントコンソールで確認した結果です。
image.png

リストから選択したランタイムやロールが表示されると尚良さそうですね。

yaml での出力

好みの問題もあるかもしれませんが、個人的には yaml は読みやすいと思っているのでこのアップデートはナイスです。

[ec2-user@test ~]$ aws ec2 describe-instances --output yaml
Reservations:
- Groups: []
  Instances:
  - AmiLaunchIndex: 0
    Architecture: x86_64
    BlockDeviceMappings:
    - DeviceName: /dev/xvda
      Ebs:
        AttachTime: '2020-02-11T14:25:47+00:00'
        DeleteOnTermination: true
        Status: attached
        VolumeId: vol-*****************
    CapacityReservationSpecification:
      CapacityReservationPreference: open
    ClientToken: ''
    CpuOptions:
      CoreCount: 1
      ThreadsPerCore: 1
    EbsOptimized: false
    EnaSupport: true
    HibernationOptions:
      Configured: false
    Hypervisor: xen
    IamInstanceProfile:
      Arn: arn:aws:iam::************:instance-profile/role-tsuyoi
      Id: *********************
    ImageId: ami-*****************
    InstanceId: i-*****************
    InstanceType: t2.micro
    KeyName: ***********
    LaunchTime: '2020-02-11T14:25:46+00:00'
    MetadataOptions:
      HttpEndpoint: enabled
      HttpPutResponseHopLimit: 1
      HttpTokens: optional
      State: applied
    Monitoring:
      State: disabled
    NetworkInterfaces:
    - Association:
        IpOwnerId: amazon
        PublicDnsName: ec2-***-***-***-***.ap-northeast-1.compute.amazonaws.com
        PublicIp: ***.***.***.***
      Attachment:

まとめ

AWS CLI はもともと好きでしたが、今回の v2 でさらにかゆいところに手が届く機能に変身しており、ますます好きな機能になったと感じました。
皆さんもこの機会に AWS CLI に触れてみてはいかがでしょうか。

追記

AWS さんが Docker Hub に AWS CLI v2 のイメージを公開してくれました!
さくっとお試しするのにはもってこいです!

早速使ってみた方が Qiita にまとめてくださっています!
https://qiita.com/kai_kou/items/cfb7c1d6a449e0da68d1

12
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
0