20200213のMacに関する記事は11件です。

AWS CLI v2とaws-vaultとpecoを使ってプロファイルを選択方式にする

AWS CLI v2 が GA になったので導入してついでに aws-vault を組み合わせてプロファイルを実行時に切り替えるようにしてみました。

aws-vault のインストールや設定は macOSのAWSクレデンシャル管理 で書いたとおりです。

環境

  • macOS Mojave (10.14.5)
  • zsh
  • peco
  • AWS CLI v2
  • aws-vault

これらを組みわせて default プロファイル利用時は設定済みのプロファイルから選択するようにします。

インストール

ここでは、zsh、peco、 AWS CLI v2 のインストール方法について記載。

zsh

今回は brew でインストール。

$ brew install zsh

peco

これも brew でインストール。

$ brew install peco

AWS CLI v2

公式 の手順に従いインストール。

$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /
$ aws --version

準備

  1. aws-vault にクレデンシャルを登録する
  2. クレデンシャルを選択するための sh を用意
  3. ~/.aws/profile に credential_process 経由で sh を使ってクレデンシャルを選択

大きくはこの 3 ステップ。

aws-vaultにクレデンシャルを登録する

macOSのAWSクレデンシャル管理 を参考に登録してください。

クレデンシャルを選択するための sh ファイルを用意

aws-vault のプロファイルを列挙するコマンドを利用してクレデンシャルをして peco で選択。
その内容を AWS CLI に渡すというのが大まかな処理の流れ。

以降は aws-vault に prof1、prof2、prof3 の 3 つのクレデンシャルを登録しているという前提で記載します。
自分の環境に合わせて読み替えてください。

まずは、aws-vault で登録しているプロファイルは、aws-vault ls で列挙できます。

$ aws-vault ls
Profile                  Credentials              Sessions
=======                  ===========              ========
default                  -                        -
prof1                    prof1                    -
prof2                    prof2                    -
prof3                    prof3                    -

Profile の欄は .aws/config に設定されているプロファイル名、Credentials の欄は aws-vault に登録しているプロファイル名、 Sessions にはクレデンシャルから払い出したセッション情報が表示されます。
Profile と Credentials の突合は単純に同じ名前かどうかで判定している模様。

これの情報を AWK で 整形するとこんなかんじで Credentials だけ抜き出せます。

$ aws-vault ls | awk 'NR>2 {if ($2 != "-") print $2}'
prof1
prof2
prof3

これを peco に食わせるとクレデンシャルを選択できるようになります。
セッションを用いずに登録したクレデンシャルを利用する場合は以下のようなコマンドで aws-vault からクレデンシャルを抜き出すことが可能です。

$ aws-vault exec -j `aws-vault ls | awk 'NR>2 {if ($2 != "-") print $2}' | peco --prompt "Choice Credential >"`  --no-session
Choice Credential >                     IgnoreCase [3 (1/1)]
prof1
prof2
prof3

クレデンシャルを選択するとキーチェーンがロック中の場合はアクセス確認が行われるのでパスワードを入力します。
キーチェーンにアクセスできれば、以下のようにクレデンシャルが表示されます。

{"Version":1,"AccessKeyId":"AKIXXXXXXXXXXXXXXXXX","SecretAccessKey":"ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ","SessionToken":""}

これを適当な sh ファイルに仕込んで credential_process に食わせればお終いです。
sh を credential-selector.sh と名付けて任意の場所に保存してください。

credential-selector.sh
echo $(aws-vault exec -j `aws-vault ls | awk 'NR>2 {if ($2 != "-") print $2}' | peco --prompt "Choice Credential >"`  --no-session)

.aws/config に credential-selector.sh を組み込む

.aws/config を以下のように編集します。
デフォルトプロファイルは credential-selector.sh で登録済みのプロファイルの一覧から選択。
各プロファイルは aws-vault に保存されているクレデンシャルをそのまま利用する。

[default]
credential_process=/PATH/TO/credential-selector.sh
region=ap-northeast-1
output=json

[profile prof1]
credential_process=aws-vault exec -j prof1 --no-session
region=ap-northeast-1
output=json

[profile prof2]
credential_process=aws-vault exec -j prof2 --no-session
region=ap-northeast-1
output=json

[profile prof3]
credential_process=aws-vault exec -j prof3 --no-session
region=ap-northeast-1
output=json

.aws/credentials に設定は不要です。空のファイルにしてください。
credential-selector.sh に実行権限を付与したら準備は完了です。

$ chmod +x /PATH/TO/credential-selector.sh

使ってみる

では使ってみましょう。
まずはプロファイル指定を行った場合。

$ aws s3 ls --profile prof1
2019-12-18 12:16:10 bucket-1
2020-01-08 09:21:42 bucket-2

これで普段どおり指定したプロファイルに関連づいた S3 バケットの一覧が表示されます。

次に default プロファイルを指定した場合です。

$ aws s3 ls
Choice Credential >                     IgnoreCase [3 (1/1)]
prof1
prof2
prof3
2019-07-18 14:36:41 bucket-a
2019-07-10 18:49:57 bucket-b

このようにクレデンシャルの一覧が表示されるのでそこから利用したいクレデンシャルを選択する事ができます。

まとめ

aws-vault と peco を使って default プロファイル指定時に任意のクレデンシャルを選択できるようにしてみました。
もともと事故防止用に default プロファイルには何も指定をしていなかったのですが、毎回プロファイルを打ち込むのもめんどくさいなーと思うことがあり、選択できるようにしてみました。

aws-vault に登録されているクレデンシャルと .aws/credentials のプロファイルを同期させないと期待した動きをしないので .aws/credentials を自動生成する sh でも作ろうかと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

iPhoneで撮影した画像の形式HEICを全部まとめてJPEGに変換する

概要

僕は普段ブログ用の画像をiPhoneで撮影して、airdropでMacBook Proに転送しているんですが、得られる画像が IMG_%04d.HEIC というあまり馴染みのない画像形式 HEIC になっています。 (→追記1

画像・動画の変換には普段 ffmpeg を使うんですが、僕が brew でインストールした ffmpegHEIC 形式に対応しておらず、変換ができず。

諦めてプレビューで開いて ファイル > 書き出す を使って jpeg 形式に変換していたのですが、流石に今後もずっとやる作業 && 量が多いと本当に時間がもったいないので機械的に処理したいと思い、したのスクリプトを作りました

作ったスクリプト

できることは、「同じディレクトリにある .HEIC で終わるファイルを全て同名の .jpg に変換し保存する」ことです。

#!/bin/zsh

for file in `ls *.HEIC`; do
  filename=$file:t:r
  sips --setProperty format jpeg $file --out ${filename}.jpg
done

convert.zsh とかにして chmod u+x convert.zsh で実行権限を与えた後 ./convert.zsh とかで使います。

:t とか :r とかはおそらく zsh にはあるが bash sh にはないと思うので(たぶん)、これは zsh でしか動きません。

僕が使っているMacBook Pro 16"は元々Catalinaで zsh が標準だったので、便利に使わせてもらいました。

参考1. 画像ファイルの形式をHEICからJPGにしたい
参考2. Zsh: Get Filename or Extension from Path

追記1

@ktysne さんからのコメントで(ありがとうございます)、「iOSの[設定]>[カメラ]>[フォーマット]から[互換性優先]」を設定するとそもそも JPEG/H264 で保存できることがわかりました。設定調べる前にスクリプト書いてしまった..

IMG_2274.jpg

4K/60fpsとか1080p/240fpsを使うには高効率にしないといけないようなので注意が必要そう。iPhoneで4K/60fpsで動画撮影もしている人は今回書いてしまったスクリプトが便利かも。笑

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Windows使いがMacを使ってみました

今までWindows、Ubuntuのデスクトップを使ってきましたが、サブ機としてMacBook Airを購入しました。
所感やひとまずやることを備忘録として記載します。

購入したブツ

MacBook Air(MacOS X)13インチ US配列キーボード シルバー

とりあえずラップトップがほしかったのですが、中古のWindowsマシンにUbuntuを入れるかMacにするかずっと迷ってました。
最終的に、以下のような理由でMacにしました。

  • 中古でWindows 10を買ってUbuntu入れてもなんか損した気持ちになりそうだったから。
  • Macは触ったことがあっても所有したことがなかったから。
  • Unixライクな使い方ができたほうが便利だろうなと思ったから。

Proを選ばなかったのは、そこまで使わないかなと思ったのと予算の都合です。
周りはスペースグレーを選ぶ人が多いみたいなんですが、シルバーの「Mac感」がいいなと思いました。

どうしてUS配列のキーボードにしたのか

いくつか理由があります。

  • 普段仕事では東プレのUS配列を使っているのでなれているから。
  • キー配置がWindowsに近いように思ったからストレスも少ないかなと思ったから。(Controlキーの配置とか)

とりあえず設定を変更します

必要なソフトウェアをインストールします

Windowsで使っていてMacにも入れられるものは入れていきます。あとMacではどんなソフトが使えるのかとかしらべていきました。

他にも入れたものはあるんですが、割愛。
Windows使っていると、WinMergeとかWinSCPとか使いたくなるのですが、Macで動かすにはちょっと面倒な設定をしないといけないので、必要になったら考えます。

未だに戸惑うこと・困ること

  • Ctrl+InsertCtrl+Shift+Insertが染み付いていて、INSERTキーを探してしまう。
  • フォルダのコンテキストメニューでテキストファイルが作れない。(なにかいい方法があれば教えて下さい)
  • Windowsのキーを探してしまう。(InsertBackspaceDeletePage UpPage Down
  • ターミナル上でCommand+CCommand+Vが許される。
    • Windows感覚だとキャンセル扱いの感覚だから。。。
  • Officeどうすのか問題
    • とりあえずデフォルトではいっているやつかLibreOfficeを使います。

まとめ

いろいろ違いがありますが、Windowsではいろいろやりにくいこととかできそうです。(Dockerとか)
調べ物もMac前提で書かれている記事が多いので、困ることもありました。相変わらず仕事ではWindowsを使うんでしょうが、
WindowsからMacを買おうとしている人の参考にしていただければいいと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Mac] Android StudioでWidgetのプロパティ一覧を表示する

Flutterでは、Widgetのプロパティ(コンストラクタの引数)を変更して挙動をカスタマイズして開発していくので、各Widgetのプロパティ一覧がみれるととても便利です。
MacのAndroid Studioではプロパティ一覧を見る(サジェストする)ショートカットは、control + space ですが、OSの入力ソース切替と競合するため、デフォルトの状態では表示されません。

OSのショートカットを無効にする

システム環境設定 / キーボード / ショートカット / 入力ソース で無効にすることができます。
スクリーンショット 2020-02-13 18.15.10.png

結果

Widgetのカッコ内にカーソルを合わせて、control + spaceを押すとプロパティが表示されます。

スクリーンショット 2020-02-13 19.05.37.png

おまけ

他にも多くの便利なショートカットなどが以下の記事で紹介されています。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Mac/Flutter] Android StudioでWidgetのプロパティ一覧を表示する

Flutterでは、Widgetのプロパティ(コンストラクタの引数)を変更して挙動をカスタマイズして開発していくので、各Widgetのプロパティ一覧がみれるととても便利です。
MacのAndroid Studioではプロパティ一覧を見る(サジェストする)ショートカットは、control + space ですが、OSの入力ソース切替と競合するため、デフォルトの状態では表示されません。

OSのショートカットを無効にする

システム環境設定 / キーボード / ショートカット / 入力ソース で無効にすることができます。
スクリーンショット 2020-02-13 18.15.10.png

結果

Widgetのカッコ内にカーソルを合わせて、control + spaceを押すとプロパティが表示されます。

スクリーンショット 2020-02-13 19.05.37.png

おまけ

Flutterを始めた頃、この方法がわからず、

他にも多くの便利なショートカットなどが以下の記事で紹介されています。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Flutter/Mac] Android StudioでWidgetのプロパティ一覧を表示する

Flutterでは、Widgetのプロパティ(コンストラクタの引数)を変更して挙動をカスタマイズして開発していくので、各Widgetのプロパティ一覧がみれるととても便利です。
MacのAndroid Studioではプロパティ一覧を見る(サジェストする)ショートカットは、control + space ですが、OSの入力ソース切替と競合するため、デフォルトの状態では表示されません。

OSのショートカットを無効にする

システム環境設定 / キーボード / ショートカット / 入力ソース で無効にすることができます。
スクリーンショット 2020-02-13 18.15.10.png

結果

Widgetのカッコ内にカーソルを合わせて、control + spaceを押すとプロパティが表示されます。

スクリーンショット 2020-02-13 19.05.37.png

おまけ

Flutterを始めた頃、この方法がわからず、

他にも多くの便利なショートカットなどが以下の記事で紹介されています。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

jpgのqualityを確認する方法 [ImageMagick]

目的

手元にあるjpgファイルが、qualityいくつで圧縮されたのかが知りたい!

環境

  • macOS High Sierra
  • homebrew がインストールされていること

手順

ImageMagick のインストール

$ brew install imagemagick

quality の確認

$ identify -format '%f:%Q\n' hoge.jpg

以下のように出力されます

hoge.jpg:85

%f (ファイルネーム), %Q (quality)以外に指定できるものはこちらを参照

参考

imagemagick 公式

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

FluentdをMacでセットアップして、CloudWatchLogsへログ転送するまで

はじめに

実務で、ローカルで稼働しているMac miniが複数台あるので、それをCloudWatchLogsへ集約したいという要望があったので、勉強がてらFluentDを使った時の備忘録的なアレです

色々、試行錯誤しながら試したので、同じくハマっている人の助けになればと思います

失敗パターン

td-agentを使って、cloudwatchLogsに転送させる設定をしようとしたが、ripperが足りない?せいか、以下のエラーが発生して、td-agent内包のRubyを使っているため、これ以上は自力解決が難しいと思い、断念

`require': cannot load such file -- ripper (LoadError)

やったこと

  1. Fluentd公式から、MacOS向けのtd-agent.dmgをDLして、セットアップ
    https://docs.fluentd.org/installation/install-by-dmg

  2. CloudWatchLogsに飛ばすためのPluginは、ここからDL
    https://github.com/fluent-plugins-nursery/fluent-plugin-cloudwatch-logs

README.md通りに、gem install fluent-plugin-cloudwatch-logs を実行しても、td-agent自体が、そのものに内包されているRuby(2.4)を使用してるっぽいので、エラーになる

Starting td-agent: 2018-05-31 01:27:51 +0000 [error]: fluent/supervisor.rb:373:rescue in main_process: config error file="/etc/td-agent/td-agent.conf" error="Unknown output plugin 'cloudwatch_logs'. Run 'gem search -rd fluent-plugin' to find plugins"
td-agent    
  1. td-agentを使っている場合は、td-agent-gemを使用して、インストールする

インストールコマンド
/opt/td-agent/usr/sbin/td-agent-gem install <プラグイン>

インストール済みリストを取得
/opt/td-agent/usr/sbin/td-agent-gem list

参考にしたリンク

https://qiita.com/nkg/items/cbf72adb436456804d76

成功パターン

td-agentだと、内包されているRubyを使う方法だったので、すでにインストールされてるRubyを使う方法を採用しました
下記を実行すると、CloudWatchLogsへ、自動的にログストリームが作成され、ログが出力されるようになりました

やったこと

  • gem版のFluentdをインストール→セットアップ
# Fluentdのインストール
$gem install fluentd -N

# セットアップ
$ fluentd --setup ./fluent`

https://docs.fluentd.org/installation/install-by-gem

  • gemを使って、CloudWatchLogs-Pluginをインストール
# fluentd-cloudwatch-logs-pluginをインストール
gem install fluent-plugin-cloudwatch-logs
  • fluentd.confファイルを編集
<source>
  @type tail
  path ./logs/logger.log
  tag sample
  <parse>
    @type multiline
    format_firstline /\[(\d{4}-\d{2}-\d{2}T\d{1,2}:\d{1,2}:\d{1,2}.\d{1,3})\]/
    format1 /^\[(?<logtime>\d{4}-\d{2}-\d{2}T\d{1,2}:\d{1,2}:\d{1,2}.\d{1,3})\] \[(?<lebel>.*)\] (?<hoge>.*) - \[(?<title>.*)\] (?<message>.*)/
  </parse>
</source>

<match sample>
 @type cloudwatch_logs
 log_group_name test
 auto_create_stream true
 use_tag_as_stream true
</match>
  • IAM User Policyの設定

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:*",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:logs:us-east-1:*:*",
        "arn:aws:s3:::*"
      ]
    }
  ]
}
  • AWSのアクセスキーとシークレットキーを環境変数に登録
export AWS_REGION=us-east-1
export AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY"
export AWS_SECRET_ACCESS_KEY="YOUR_SECRET_ACCESS_KEY"
  • fluentdを起動&停止

    • 起動 fluentd -c ./fluent/fluent.conf -o ~/Desktop/tmp/fluentd.log -vv &
    • 停止 pkill -f fluentd

まとめ

初めてFluentdを使って、ログの収集を行いましたが、ドキュメントがかなり充実していたので、ハマりはしたものの設定ファイルを作る等は、そこまで苦労しませんでした。
いろんなPluginがあるので、まだまだ色々できそうな気がしています。
また、Fluentdとtd-agentでの挙動が違ったりする場合があるので、調査の時には注意が必要かなと思いました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

FluentDをMacでセットアップして、CloudWatchLogsへログ転送するまで

はじめに

実務で、ローカルで稼働しているMac miniが複数台あるので、それをCloudWatchLogsへ集約したいという要望があったので、勉強がてらFluentDを使った時の備忘録的なアレです

色々、試行錯誤しながら試したので、同じくハマっている人の助けになればと思います

失敗パターン

td-agentを使って、CloudWatchLogsに転送させる設定をしようとしたが、ripperが足りない?せいか、以下のエラーが発生して、td-agent内包のRubyを使っているため、これ以上は自力解決が難しいと思い、断念

`require': cannot load such file -- ripper (LoadError)

やったこと

  1. FluentD公式から、MacOS向けのtd-agent.dmgをDLして、セットアップ
    https://docs.fluentd.org/installation/install-by-dmg

  2. CloudWatchLogsに飛ばすためのPluginは、ここからDL
    https://github.com/fluent-plugins-nursery/fluent-plugin-cloudwatch-logs

README.md通りに、gem install fluent-plugin-cloudwatch-logs を実行しても、td-agent自体が、そのものに内包されているRuby(2.4)を使用してるっぽいので、エラーになる

Starting td-agent: 2018-05-31 01:27:51 +0000 [error]: fluent/supervisor.rb:373:rescue in main_process: config error file="/etc/td-agent/td-agent.conf" error="Unknown output plugin 'cloudwatch_logs'. Run 'gem search -rd fluent-plugin' to find plugins"
td-agent    
  1. td-agentを使っている場合は、td-agent-gemを使用して、インストールする

インストールコマンド
/opt/td-agent/usr/sbin/td-agent-gem install <プラグイン>

インストール済みリストを取得
/opt/td-agent/usr/sbin/td-agent-gem list

参考にしたリンク

https://qiita.com/nkg/items/cbf72adb436456804d76

成功パターン

td-agentだと、内包されているRubyを使う方法だったので、すでにインストールされてるRubyを使う方法を採用しました
下記を実行すると、CloudWatchLogsへ、自動的にログストリームが作成され、ログが出力されるようになりました

やったこと

  • gem版のFluentDをインストール→セットアップ
# FluentDのインストール
$gem install fluentd -N

# セットアップ
$ fluentd --setup ./fluent`

https://docs.fluentd.org/installation/install-by-gem

  • gemを使って、CloudWatchLogs-Pluginをインストール
# fluentd-cloudwatch-logs-pluginをインストール
gem install fluent-plugin-cloudwatch-logs
  • fluentd.confファイルを編集
<source>
  @type tail
  path ./logs/logger.log
  tag sample
  <parse>
    @type multiline
    format_firstline /\[(\d{4}-\d{2}-\d{2}T\d{1,2}:\d{1,2}:\d{1,2}.\d{1,3})\]/
    format1 /^\[(?<logtime>\d{4}-\d{2}-\d{2}T\d{1,2}:\d{1,2}:\d{1,2}.\d{1,3})\] \[(?<lebel>.*)\] (?<hoge>.*) - \[(?<title>.*)\] (?<message>.*)/
  </parse>
</source>

<match sample>
 @type cloudwatch_logs
 log_group_name test
 auto_create_stream true
 use_tag_as_stream true
</match>
  • IAM User Policyの設定

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:*",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:logs:us-east-1:*:*",
        "arn:aws:s3:::*"
      ]
    }
  ]
}
  • AWSのアクセスキーとシークレットキーを環境変数に登録
export AWS_REGION=us-east-1
export AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY"
export AWS_SECRET_ACCESS_KEY="YOUR_SECRET_ACCESS_KEY"
  • fluentdを起動&停止

    • 起動 fluentd -c ./fluent/fluent.conf -o ~/Desktop/tmp/fluentd.log -vv &
    • 停止 pkill -f fluentd

まとめ

初めてFluentDを使って、ログの収集を行いましたが、ドキュメントがかなり充実していたので、ハマりはしたものの設定ファイルを作る等は、そこまで苦労しませんでした。
いろんなPluginがあるので、まだまだ色々できそうな気がしています。
また、FluentDとtd-agentでの挙動が違ったりする場合があるので、調査の時には注意が必要かなと思いました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS CLI v2をsudoを使わずにインストールする

忙しい方へ

インストール先はrootユーザのディレクトリなので、そうじゃないディレクトリに置いてパスを通すことができるよ、というだけです。
これで何をやってるかわかるのであれば以後は読まなくていいかもw

本題

今週、AWS CLIのV2がGAになりました。
AWSのブログ
クラスメソッドさんのブログ

個人的にはまだ全然試せてないのでこれからなんですが、使うにはまずはインストールしなければいけないですよね。
インストールの方法は公式に載っています。
自分の環境は仕事でも個人でもMacなのですが、もともとcliはbrewでインストールしてました。
何かしらのパッケージマネージャによって管理される状態にしておきたかったからですね。

なのでできたらbrewで行きたかったんですが、これを書いている時点ではまだbrewではインストールできません。
(なので、brewでインストールできるようになったらこの内容は不要かもしれません。)

インストールの手順を抜粋すると下記です。
Macでのインストール手順ですが、対象のファイルが変わるだけでLinuxでの手順もほぼ同様です。

Macでのインストール手順
curl "https://d1vvhvl2y92vvt.cloudfront.net/awscli-exe-macos.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

問題なのはsudo ./aws/installで、仕事用のPCのユーザでは管理者権限を制限されていてsudoできない、なんてことがあるかと思います。
そうしたらせっかく試そうと思ったのに試せないじゃん、となっちゃいますが、回避する方法がきちんとドキュメントに書いてあるのでここに残しておきます。

インストールスクリプトの中身

./aws/installの中身は全部抜粋すると長くなるので割愛しますが、ざっくりいうと/usr/local/aws-cliというディレクトリを作ってその中に動作させるプログラムを配置し、/usr/local/bin/aws2というシンボリックリンクを作成する、という動作をするようです。
sudoさせられるのは、通常/usr以下に書き込むにはroot権限が必要な状態になっているからかと思います。
/usr/loca/binにシンボリックリンクを置くのはPATHが通っているディレクトリにシンボリックリンクを置いてどこからでも使えるようにするためでしょう。
(記憶が曖昧なんですが、そもそもデフォルトでPATH通ってましたっけ…?)

※そもそもこのディレクトリなんなのみたいな話は話が逸れるので参考サイトを置いておきます
https://linuc.org/study/knowledge/544/

ただ、インストール先のディレクトリとシンボリックリンクを置くディレクトリは変更することができる、と書いてあります。

以下ドキュメントから抜粋

--install-dir または -i

このオプションは、すべてのファイルをコピーするフォルダを指定します。次の例では、/usr/local/aws-cli という名前のフォルダにファイルをインストールします。このフォルダを作成するには、/usr/local への書き込み権限が必要です。

デフォルト値は /usr/local/aws-cli です。

--bin-dir または -b

このオプションは、インストールフォルダ内のメイン aws プログラムが、指定されたパス内のファイル aws2 にシンボリックリンクされるように指定します。この例では、シンボリックリンク /usr/local/bin/aws2 を作成します。指定したフォルダへの書き込み権限が必要です。パスにすでに存在するフォルダへのシンボリックリンクを作成すると、インストールディレクトリをユーザーの $PATH 変数に追加する必要がなくなります。

デフォルト値は /usr/local/bin です。

つまり、適当なディレクトリにファイルを置いて、自分でPATHを通した任意のディレクトリにシンボリックリンクを配置することでsudoを使わないでインストールすることができます。

インストール先ディレクトリを変える

自分の場合は使っているユーザのホームディレクトリ配下に下記のようなディレクトリを作りました。

ディレクトリを作成し、PATHを通す

mkdir $HOME/awscli2
mkdir $HOME/local/bin

もちろん$HOME/local/binにはPATHを通してあります。

Bashの場合は~/.bash_profile

.bash_profile
export PATH=$PATH:$HOME/local/bin

を追記して.bash_profileを読み込み直しましょう。
source ~/.bash_profileを実行するか、ターミナルを立ち上げ直せばOKです。

自分はfishを使っているのでユニバーサル変数に追加しています。
fishの環境変数の設定の仕方はbashとはちょっと違ってやや混乱するので注意。
.fish/config/config.fishに環境変数を設定するコマンドを追記するのでもいいと思います(お好みで)
ただ、下記は永続的な設定なので.fish/config/config.fishのではなくターミナルで一回実行するだけにしましょう。
$fish_user_pathsの中身が間違って空になったりすると後で面倒なことになります(1敗)
参考
https://qiita.com/ledsun/items/8ca1a450b21c8ebc9670

fish
set -U fish_user_paths $HOME/local/bin $fish_user_paths

オプション指定してインストールする

その上で、インストール時にこんな感じでオプション指定しました。
※環境変数でホームディレクトリ指定してますが、実際にはフルパス指定しています。

./aws/install -i $HOME/awscli2/ -b $HOME/local/bin/

これで実行できるようになります、なお、現在はv1との併用のためaws2という名前でシンボリックリンクが作られます。

aws2 --version
aws-cli/2.0.0dev4 Python/3.7.4 Darwin/18.7.0 botocore/2.0.0dev3

ドキュメントより

AWS CLI バージョン 2 のプレビューリリースでは、AWS CLI バージョン 1 とバージョン 2 がサイドバイサイドで共存できるよう、シンボリックリンクに aws2 という名前が付けられます。AWS CLI バージョン 2 の今後のリリースでは、このコマンド名が変更される可能性があります。

ともあれ、これでV2になったaws cliを試すことができるようになりました。

気になるポイント

関連

venvを使ってAWS CLI(v1)とAWS CLI v2を使い分ける(Mac, Linux編)
AWS CLI v2をソースコードからインストールする

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macのファイルやフォルダの移動

Finderでファイルやフォルダを移動する時

command + c → コピー
command + option + v → 貼り付け

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む