Mac OSXでaws cliを利用する準備

AWS CLI バージョン 2 をMac OSXにインストールする手順です。
# 前提

- Mac OSX のPCを持っている
- インターネットに接続できる
- AWS のアカウントを持っている
- AWS CLI バージョン 2 がインストール対象です

# 事前準備

始める前に AWS CLI を操作するための IAMユーザを作っておきます。

- AWSコンソール
    - IAM
        - アクセス管理　＞　ユーザ
            - ユーザを追加
                - ユーザ名：(任意)
                - アクセスの種類：プログラムによるアクセス
                - アクセス許可の設定：(任意)

ユーザを作成すると `Access key ID` と `Secret access key` が割り振られます。
後ほどconfigureする時に必要なので控えておいてください。

# AWS CLI をインストール

[AWSドキュメント](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-mac.html) の通りにコマンドを実行します。
最後のバックスラッシュが必要なのかは謎です。

```bash:awscliのインストール
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
```

AWS CLI をインストールしたら次にconfigureします。ログインみたいなもんです。
任意のプロファイル名を付けられます。名前付きプロファイルを作っておくとユーザ切り替えが楽です。
（別のAWSアカウントを所有し、同じPCでaws-cliを利用したい場合など）
プロンプトで４つ質問されます。
`{Access key ID}` と `{Secret access key}` は適宜読み替えてください。
リージョンや出力フォーマットはお好みのものを指定しましょう。
なお、ユーザを切り替える必要がないなら `--profile {プロファイル名}` の部分は不要です。

```bash:configureの実行
aws configure --profile {プロファイル名}
```

```:実行結果
AWS Access Key ID [None]: {Access key ID}
AWS Secret Access Key [None]: {Secret access key}
Default region name [None]: us-west-2
Default output format [None]: json
```

# 動作確認

ためしにEC2インスタンスの情報を取得してみます。
名前付きプロファイルを作成していないなら `--profile {プロファイル名}` の部分は不要です。

```bash:EC2情報取得
aws ec2 describe-instances --profile {プロファイル名}
```

<details><summary>実行結果は省略します。見たい人はこちらを開いてください。</summary><div>

```json:実行結果
{
    "Reservations": [
        {
            "Groups": [],
            "Instances": [
                {
                    "AmiLaunchIndex": 0,
                    "ImageId": "ami-XXXXXXXX",
                    "InstanceId": "i-XXXXXXXXXXXXXXXXX",
                    "InstanceType": "t2.nano",
                    "LaunchTime": "2020-01-01T00:00:00+00:00",
                    "Monitoring": {
                        "State": "disabled"
                    },
                    "Placement": {
                        "AvailabilityZone": "us-west-2b",
                        "GroupName": "",
                        "Tenancy": "default"
                    },
                    "PrivateDnsName": "ip-XXX-XXX-XXX-XXX.us-west-2.compute.internal",
                    "PrivateIpAddress": "XXX.XXX.XXX.XXX",
                    "ProductCodes": [],
                    "PublicDnsName": "ec2-XXX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com",
                    "PublicIpAddress": "XXX.XXX.XXX.XXX",
                    "State": {
                        "Code": 16,
                        "Name": "running"
                    },
                    "StateTransitionReason": "",
                    "SubnetId": "subnet-XXXXXXXX",
                    "VpcId": "vpc-XXXXXXXX",
                    "Architecture": "x86_64",
                    "BlockDeviceMappings": [
                        {
                            "DeviceName": "/dev/xvda",
                            "Ebs": {
                                "AttachTime": "2020-01-01T00:00:00+00:00",
                                "DeleteOnTermination": false,
                                "Status": "attached",
                                "VolumeId": "vol-XXXXXXXXXXXXXXXXX"
                            }
                        }
                    ],
                    "ClientToken": "",
                    "EbsOptimized": false,
                    "EnaSupport": true,
                    "Hypervisor": "xen",
                    "NetworkInterfaces": [
                        {
                            "Association": {
                                "IpOwnerId": "XXXXXXXXXXXX",
                                "PublicDnsName": "ec2-XXX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com",
                                "PublicIp": "XXX.XXX.XXX.XXX"
                            },
                            "Attachment": {
                                "AttachTime": "2020-01-01T00:00:00+00:00",
                                "AttachmentId": "eni-attach-XXXXXXXXXXXXXXXXX",
                                "DeleteOnTermination": true,
                                "DeviceIndex": 0,
                                "Status": "attached"
                            },
                            "Description": "",
                            "Groups": [
                                {
                                    "GroupName": "XXXXXXXXXXXXXX",
                                    "GroupId": "sg-XXXXXXXX"
                                }
                            ],
                            "Ipv6Addresses": [],
                            "MacAddress": "XX:XX:XX:XX:XX:XX",
                            "NetworkInterfaceId": "eni-XXXXXXXXXXXXXXXXX",
                            "OwnerId": "XXXXXXXXXXXX",
                            "PrivateDnsName": "ip-XXX-XXX-XXX-XXX.us-west-2.compute.internal",
                            "PrivateIpAddress": "XXX.XXX.XXX.XXX",
                            "PrivateIpAddresses": [
                                {
                                    "Association": {
                                        "IpOwnerId": "XXXXXXXXXXXX",
                                        "PublicDnsName": "ec2-XXX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com",
                                        "PublicIp": "XXX.XXX.XXX.XXX"
                                    },
                                    "Primary": true,
                                    "PrivateDnsName": "ip-XXX-XXX-XXX-XXX.us-west-2.compute.internal",
                                    "PrivateIpAddress": "XXX.XXX.XXX.XXX"
                                }
                            ],
                            "SourceDestCheck": true,
                            "Status": "in-use",
                            "SubnetId": "subnet-XXXXXXXX",
                            "VpcId": "vpc-XXXXXXXX",
                            "InterfaceType": "interface"
                        }
                    ],
                    "RootDeviceName": "/dev/xvda",
                    "RootDeviceType": "ebs",
                    "SecurityGroups": [
                        {
                            "GroupName": "XXXXXXXXXXXXXX",
                            "GroupId": "sg-XXXXXXXX"
                        }
                    ],
                    "SourceDestCheck": true,
                    "VirtualizationType": "hvm",
                    "CpuOptions": {
                        "CoreCount": 1,
                        "ThreadsPerCore": 1
                    },
                    "CapacityReservationSpecification": {
                        "CapacityReservationPreference": "open"
                    },
                    "HibernationOptions": {
                        "Configured": false
                    },
                    "MetadataOptions": {
                        "State": "applied",
                        "HttpTokens": "optional",
                        "HttpPutResponseHopLimit": 1,
                        "HttpEndpoint": "enabled"
                    }
                }
            ],
            "OwnerId": "XXXXXXXXXXXX",
            "ReservationId": "r-XXXXXXXXXXXXXXXXX"
        }
    ]
}
```

</div></details>