Re:ゼロから始めるAWS CLI生活

速い・自動化出来る

CLIでAWSを操作するメリットは無駄が少なく速いこと、そしてスクリプトで自動化出来ることです。こちらではAWSリソースへのssh接続を半自動化しましたが、その他のリソースもCLIで扱えるようになるといざという時に役立ちます。

初めのうちは覚えるのが億劫かもしれませんがどんな事が出来るかを把握しておくだけでも大分変わります。とうい訳で覚えておきたいAWS CLIをまとめていきます。

AWS CLIアカウント設定

まず新しくIAMユーザを作成します。権限は「AdministratorAccess」ポリシーをアタッチしておきます。発行されたアクセスキーIDとシークレットアクセスキーを次のコマンドに従って入力します。

自分の場合は既にCLIアカウントを持っているのでプロファイルに名前を付けて差別しています。

$ aws configure --profile my
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]: ap-northeast-1
Default output format [None]: json

アカウント設定は完了です。AWS CLIではプロファイルを指定しない場合だと~/.aws/credentialsのdefaultのアカウントが採用されて、プロファイルを指定した場合は指定したプロファイルのアカウントが採用されます。

$ aws s3 ls --profile my
※myのs3バケット一覧が表示される

S3操作

一覧表示

バケットでもフォルダでもオブジェクトでも、一覧取得コマンドの基本形はaws s3 lsです。

※myのs3バケット一覧が表示される
$ aws s3 ls

※myのs3バケット内のディレクトリ・オブジェクト一覧が表示される
$ aws s3 ls s3://[bucket]/[folder]/

コピー

※S3からローカルにファイルをコピーする
$ aws s3 cp s3://[bucket]/[folder]/hoge.txt ./

ローカルからS3にファイルをコピー(アップロード)する
$ aws s3 cp hoge.txt s3://[bucket]/[folder]/hoge.txt

移動・削除

移動と削除も同様な形式で下記のコマンドの通りです。

※ファイル名をhoge.txtからkoge.txtに変更
$ aws s3 mv s3://[bucket]/[folder]/hoge.txt s3://[bucket]/[folder]/koge.txt

※koge.txtを削除する
$ aws s3 rm s3://[bucket]/[folder]/koge.txt

fzfを使った応用

fzfを使えば順番に参照していく事も可能です。次のコードを.zshrcに追記してから実行してみて下さい。最後まで行くとオブジェクトへのパスがクリップボードにコピーされます。

## fs3lsでS3の各パスを取得
fs3ls() {
  BUCKETS=`aws s3 ls | cut -d" " -f3`
  BUCKET=`echo $BUCKETS | fzf`
  TOP_OBJECT_PATH="s3://${BUCKET}/"
  OBJECT_PATH=`aws s3 ls ${TOP_OBJECT_PATH} | fzf`
  OBJECT_PATH=`echo $OBJECT_PATH | awk '{print $NF}'`
  OBJECT_PATH=$TOP_OBJECT_PATH$OBJECT_PATH
  # 「/」というサフィックスがある場合aws s3 lsを回してパスを整形する
  while [ ${OBJECT_PATH: -1} = "/" ]
  do
    TMP=`aws s3 ls ${OBJECT_PATH} | fzf`
    LAST_PATH=`echo $TMP | awk '{print $NF}'`
    OBJECT_PATH=$OBJECT_PATH$LAST_PATH
  done
  echo $OBJECT_PATH >&2 | pbcopy
}

aws cliコマンドの自動補完

aws cliは初期状態だと自動補完してくれないので、後から設定する必要があります。公式ドキュメントに詳しく記載されています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA