手元の Windows 11 端末に AWS CLI をインストールして AWS CLI コマンドを実行する

2023.10.30

コーヒーが好きな emi です。

あらためまして、AWS CLI を手元の Windows 11 端末で使えるようにセットアップします。

作業イメージ

以下の順番で作業します。

  • ① AWS CLI をダウンロードしてインストール
  • ② AWS CLI 用のIAM ユーザーを作成
  • ③ IAM ユーザーのクレデンシャルを登録(プロファイル登録)
  • ④ Windows クライアント端末から AWS CLI コマンドを実行する

①AWS CLI をダウンロードしてインストール

以下のドキュメントを参考に、手元の Windows クライアント端末に AWS CLI の最新バージョンをインストールします。

以下のリンクより、Windows 用の AWS CLI MSI インストーラ (64 ビット) をダウンロードして実行します。
「AWSCLIV2.msi」というファイルがダウンロードされます。

https://awscli.amazonaws.com/AWSCLIV2.msi

「AWSCLIV2.msi」をクリックして、AWS CLI をインストールします。
AWS CLI インストールウィザードに従います。

使用許諾契約書の条項の同意にチェックし、次へをクリックします。

今回はデフォルトでインストールしていきます。

インストールが完了したら、コマンドプロンプトを開き、インストールした AWS CLI のバージョンを以下のコマンドで確認します。

aws --version

実行結果

C:\Users\kitani.emi>aws --version
aws-cli/2.13.30 Python/3.11.6 Windows/10 exe/AMD64 prompt/off

C:\Users\kitani.emi>

②AWS CLI 用の IAM ユーザーを作成

手元の Windows クライアントから AWS CLI コマンドを実行して AWS リソースを操作するには、IAM ユーザーの権限が必要です。
AWS CLI 用の IAM ユーザーを作成し、手元の Windows クライアント端末に埋め込むクレデンシャル(アクセスキーとシークレットアクセスキーのペア)を作成します。

AWS マネジメントコンソールから IAM ユーザーを作成します。
IAM コンソールで [ユーザー] - [ユーザーを追加] をクリックしてください。

ユーザー名は任意のユーザ名を入力し、[次へ] をクリックしてください。

アクセス許可の設定では、手元の Windows クライアント端末から AWS CLI で実行したい操作に必要な権限を付与します。
今回権限は PowerUserAccess をアタッチすることにします。

確認画面が表示されます。[ユーザーの作成] をクリックして IAM ユーザーを作成します。

IAM ユーザーが作成できたら、リンクをクリックして IAM ユーザーの詳細を開きます。

[セキュリティ認証情報] タブより、[アクセスキーを作成] をクリックしてください。

ユースケースで [コマンドラインインターフェイス] を選択します。
「上記のレコメンデーションを確認し、アクセスキーを作成します。」にチェックを入れ、[次へ] をクリックします。

説明タグはオプションです。今回は設定しないで進めますが、何のためのアクセスキーであるか記載しておくと管理がしやすいと思います。
[アクセスキーを作成] をクリックし、アクセスキーを作成します。

アクセスキーが作成できたら、「.csv ファイルをダウンロード」をクリックして、クレデンシャル(アクセスキーとシークレットアクセスキーの文字列)が記載されたファイルをダウンロードします。作成時にしかダウンロードできませんので、忘れずにダウンロードして大切に管理してください。

既存の IAM ユーザーのクレデンシャルを利用していただいても構いませんが、IAM ユーザーのクレデンシャルは漏洩すると AWS 上のリソースを自由に操作できてしまうため、クレデンシャルの管理と付与する権限には十分注意してください。

③ IAM ユーザーのクレデンシャルを登録(プロファイル登録)

ダウンロードしたファイルの中身を確認して、以下ドキュメントを参考にWindows クライアント端末にクレデンシャル(アクセスキーとシークレットアクセスキーの文字列)を設定します。これはプロファイルと呼ばれます。

初めて Windows クライアント端末に IAM ユーザーのクレデンシャル設定をする場合、次のコマンドを実行すると、対話形式でアクセスキーとシークレットアクセスキーを簡単に設定できます。

aws configure

実行結果

C:\Users\kitani.emi>aws configure
AWS Access Key ID [None]: AKIAxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: aaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json

C:\Users\kitani.emi>

今回デフォルトのリージョンは東京リージョン(ap-northeast-1)にしていますが、使用するシステムやユーザー居住地によってお好みのリージョンを指定してください。 アウトプット形式は JSON としました。

設定したクレデンシャル情報は、AWS CLI をインストールしたユーザーのホームディレクトリの「.aws」の配下に、設定ファイル(config)と認証情報ファイル(credentials)として以下のように格納されます。初めて設定した場合、IAM ユーザーの情報(プロファイル)は [default] となっているはずです。

aws configure コマンドを使わず、これらのファイルを直接編集することもできます。[profile xxx] とプロファイルを分けることによって、アクセスキーの情報を分けて複数登録することもできます。

  • config ファイルの例

config

[default]
region = ap-northeast-1
output = json

[profile eic-endpoint-test-role]
region = ap-northeast-1

[profile test-role]
region = ap-northeast-1
  • credentials の例

credentials

[default]
aws_access_key_id = AKIAxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

[eic-endpoint-test-role]
aws_access_key_id = AKIAxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

[test-role]
aws_access_key_id = AKIAxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

④ Windows クライアント端末から AWS CLI コマンドを実行する

それでは準備ができましたので、EC2 の情報を取得するコマンドを実行してみます。

aws ec2 describe-instances

実行結果

C:\Users\kitani.emi>aws ec2 describe-instances
{
    "Reservations": [
        {
            "Groups": [],
            "Instances": [
                {
                    "AmiLaunchIndex": 0,
                    "ImageId": "ami-0222cfd6a9c020197",
                    "InstanceId": "i-0868407c990a6d710",
                    "InstanceType": "t3.medium",
                    "KeyName": "xxx-key",
                    "LaunchTime": "2023-07-26T04:54:54+00:00",
                    "Monitoring": {
                        "State": "disabled"
                    },
                    "Placement": {
                        "AvailabilityZone": "ap-northeast-1a",
                        "GroupName": "",
                        "Tenancy": "default"
                    },
                    "Platform": "windows",
                    "PrivateDnsName": "ip-10-0-137-159.ap-northeast-1.compute.internal",
                    "PrivateIpAddress": "10.0.137.159",
                    "ProductCodes": [],
                    "PublicDnsName": "",
                    "State": {
                        "Code": 80,
                        "Name": "stopped"
                    },
:
:
:

表示できました。 ちなみに、PowerShell でも AWS CLI コマンドを実行できます。

PS C:\Users\kitani.emi> aws ec2 describe-instances
{
    "Reservations": [
        {
            "Groups": [],
            "Instances": [
                {
                    "AmiLaunchIndex": 0,
                    "ImageId": "ami-0222cfd6a9c020197",
                    "InstanceId": "i-0868407c990a6d710",
                    "InstanceType": "t3.medium",
                    "KeyName": "xxx-key",
                    "LaunchTime": "2023-07-26T04:54:54+00:00",
                    "Monitoring": {
                        "State": "disabled"
                    },
                    "Placement": {
                        "AvailabilityZone": "ap-northeast-1a",
                        "GroupName": "",
                        "Tenancy": "default"
                    },
                    "Platform": "windows",
                    "PrivateDnsName": "ip-10-0-137-159.ap-northeast-1.compute.internal",
                    "PrivateIpAddress": "10.0.137.159",
                    "ProductCodes": [],
                    "PublicDnsName": "",
                    "State": {
                        "Code": 80,
                        "Name": "stopped"
                    },
:
:
:

また、コマンドの末尾に --profile xxx を付けることによって別のプロファイルの権限でコマンドを実行することもできます。

aws ec2 describe-instances --profile eic-endpoint-test-role

参考:Windows クライアント端末から AWS CLI をアンインストールする

[コントロールパネル] - [プログラムと機能] - [AWS Command Line Interface v2] からアンインストールが可能です。

ユーザーディレクトリ配下の .aws フォルダは残ってしまいますので、適宜削除してください。

参考