michimani.net

AWS CLI のエイリアスコマンドを使ってみる

2021-04-26

AWS CLI には任意のエイリアスコマンドを設定することができるということを最近知ったので、試してみます。

目次

AWS CLI のエイリアス

AWS CLI には、よく使うコマンドや長いコマンドに対してあらかじめエイリアスを設定することができます。

この機能自体は、 v1 であれば 1.11.24 以降、 v2 であれば 2.0.0 以降で利用可能ということで、だいぶ前から使える機能だったようです。

aws-cli/CHANGELOG.rst at develop | 1.11.24 · aws/aws-cli

設定方法

設定方法は至って簡単で、 ~/.aws/cli ディレクトリを作成し、そこに alias という名前のファイルを置くだけです。

alias ファイルでは、下記のようにエイリアスを記述します。

[toplevel]

whoami = sts get-caller-identity

上記の設定では、下記のコマンドが等価となります。

エイリアスコマンドで引数を受け取りたい場合

設定したエイリアスコマンドで引数を受け取って使いたい場合は、下記のように設定します。

create-bucket = 
  !f() {
    aws s3api create-bucket \
    --bucket "${1}" \
    --create-bucket-configuration "LocationConstraint=${2}" \
    --region "${2}"
  }; f

上記の例では第一引数にバケット名、第二引数に対象リージョンを指定することで新たに S3 バケットを作成します。

$  aws create-bucket mybucket ap-northeast-1

{
    "Location": "http://mybucket.s3.amazonaws.com/"
}

いろいろ設定してみた

設定方法がわかったので、普段よく使うコマンドにエイリアスを設定してみました。

AWS アカウント ID を取得する

id = sts get-caller-identity \
  --query 'Account' \
  --output text

実行ユーザー (ロール) の ARN を取得する

myarn = sts get-caller-identity \
  --query 'Arn' \
  --output text

ランタイムを指定して Lambda 関数一覧を取得する

# 1st parameter: <runtime>
lambda-fn-runtime =
  !f() {
    aws lambda list-functions \
    --query "Functions[?contains(to_string(Runtime),\`${1}\`)]"
  }; f

ECR にログインする

# 1st parameter: <region>
ecr-login =
  !f() {
    aws ecr get-login-password \
      --region "${1}" \
      | docker login \
      --username AWS \
      --password-stdin $(aws id).dkr.ecr.${1}.amazonaws.com
  }; f

まとめ

AWS CLI のエイリアスを試してみた話でした。

AWS Lab のリポジトリには様々なサービスに対するエイリアスコマンドが記述された alias が公開されていますが、最終更新が 3 年前とかなので自分で作っていくのが良さそうです。

awslabs/awscli-aliases: Repository for AWS CLI aliases.

今回のブログで紹介したエイリアスは下記のリポジトリにおいています。

michimani/awscli-aliases: Collection of my alias commands for the AWS CLI.


comments powered by Disqus