【AWS】WindowsでAWS CLI v2をインストールしてみた

この記事はブログとプログラミングで生計をたてている海外在住ウェブディベロッパーがわかりやすさにこだわって作成しました

AWS CLI v2 インストール

AWS CLIをインストールすると、コマンド入力でAWSを操作できるようになります。今回は、Windows環境にAWS CLIインストールする手順をまとめました。

インストール要件

AWSの公式ドキュメントで記載されている要件はこちらです。

  • AWS CLI は、Microsoft がサポートする 64 ビット Windows のバージョンでサポートされています。
  • ソフトウェアをインストールするための管理者権限

インストール手順

AWS CLI v2のインストール手順は公式のユーザーガイドに記載されています。

https://hatenablog-parts.com/embed?url=https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2.html

Windowsにおけるインストール手順はこちらです。

https://hatenablog-parts.com/embed?url=https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-windows.html

基本的にはこちらの手順を見ていただければ問題なくインストールできるかと思います。
AWS CLI v1との大きな違いとしては、

  • AWS CLI v2は64bit版Windowsのみサポート
  • 公式にはMSIインストーラーによるインストールのみドキュメント化
    • これはMSIインストーラーに専用のPythonがバンドルされた結果と思われます
    • ドキュメントは無くてもpipを使ったインストールも可能と思われます(未検証)

MSIインストーラーを使ったAWS CLI v2のインストール

ここから実際にインストールしていきます。
今回はWindows 11を使用しました。

AWS CLI v1とv2は別物です。アップグレードするには以下の手順で行う必要があります

  1. AWS CLI v1のアンインストール
  2. AWS CLI v2のインストール

はじめにココから最新のMSIインストーラーをダウンロードして実行します。

NEXTボタンを選択します

インストールする機能を選択します

設定に問題がなければ、INSTALLボタンを選択します

インストールが完了するまでしばらく待ちます

インストールはこれで完了です

正常にインストールされたことを確認します

PowerShellコンソールやコマンドプロンプトから次のコマンドを実行してインストールされた事を確認。

aws --version

IAMユーザーの作成

AWS CLIを使用するにはログインユーザーの権限が必要です。

AWSのこちらの記事を引用させていただきました

AWS CLI バージョン 2 を使用するための前提条件 - AWS Command Line Interface
システムに AWS Command Line Interface バージョン 2 (AWS CLI バージョン 2) をインストールします。

ステップ 1: AWS にサインアップします

AWS アカウント をお持ちでない場合は、以下の手順を実行してアカウントを作成してください。

AWS アカウント にサインアップするには

  1. https://portal.aws.amazon.com/billing/signup
  1. を開きます。
  2. オンラインの手順に従います。 サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて確認コードを入力するように求められます。

ステップ 2: IAM ユーザーを作成します

自分用の管理者ユーザーを作成し、そのユーザーを管理者グループに追加するには (コンソール)

  1. [Root user (ルートユーザー)] を選択し、AWS アカウント メールアドレスを入力して、アカウント所有者として IAM コンソール

にサインインします。次のページでパスワードを入力します。

次の IAM の Administrator ユーザーの使用に関するベストプラクティスに従って、ルートユーザーの認証情報は安全な場所に保管しておくことを強くお勧めします。ルートユーザーとしてのサインインは、いくつかのアカウントとサービスの管理タスクの実行にのみ使用してください。

ナビゲーションペインで [Users (ユーザー)]、[Add user (ユーザーを追加する)] の順に選択します。

[User name] (ユーザー名) に「Administrator」と入力します。

[AWS Management Console access (アクセス)] の横にあるチェックボックスをオンにします。[Custom password] (カスタムパスワード) を選択し、その後テキストボックスに新しいパスワードを入力します。

(オプション) AWS では、デフォルトで、新しいユーザーは初回サインイン時に新しいパスワードを作成する必要があります。[User must create a new password at next sign-in (ユーザーは次回のサインイン時に新しいパスワードを作成する必要がある)] の隣にあるチェックボックスをのチェックを外して、新しいユーザーがサインインしてからパスワードをリセットできるようにできます。

[Next: Permissions (次へ: アクセス許可)] を選択します。

[Set permissions (アクセス許可の設定)] で、[Add user to group (ユーザーをグループに追加)] を選択します。

[Create group (グループの作成)] を選択します。

[Create group] (グループの作成) ダイアログボックスで、[Group name] (グループ名) に「Administrators」と入力します。

[Filter policies (フィルターポリシー)] を選択し、次に [AWS managed – job function (マネージド – ジョブの機能)] を選択してテーブルのコンテンツをフィルタリングします。

ポリシーリストで、[AdministratorAccess] のチェックボックスを選択します。

次に、[Create group (グループの作成)] を選択します。

AdministratorAccess 許可を使用して、AWS Billing and Cost Management コンソールを使用する前に、IAM ユーザーおよびロールの請求へのアクセスをアクティブ化する必要があります。これを行うには、請求コンソールへのアクセスの委任に関するチュートリアルのステップ 1 の手順に従ってください。

請求情報とコスト管理コンソールへの IAM ユーザーおよびロールのアクセスをアクティベートするには

  1. ルートアカウント認証情報 (AWS アカウントの作成に使用した E メールアドレスとパスワード) で AWS Management Console にサインインします。
  2. ナビゲーションバーでアカウント名を選択してから、[マイアカウント
  1. ] を選択します。
  2. [IAM User and Role Access to Billing Information] の横で、[Edit] を選択します。
  3. [Activate IAM Access] (アクセスのアクティブ化) チェックボックスをオンにして、Billing and Cost Management ページへのアクセスをアクティブ化します。
  4. [Update (更新)] を選択します。

これで、IAM ポリシーを使用して、ユーザーがアクセスできるページを制御できるようになります。

グループのリストに戻り、新しいグループのチェックボックスをオンにします。必要に応じて [Refresh] (更新) を選択し、リスト内のグループを表示します。

[Next: Tags] (次へ: タグ) を選択します。

(オプション) タグをキーバリューペアとしてアタッチして、メタデータをユーザーに追加します。IAM でのタグの使用の詳細については、IAM ユーザーガイドの「IAM リソースのタグ付け」を参照してください。

[Next: Review] (次へ: 確認) を選び、新しいユーザーに追加するグループメンバーシップのリストを表示します。続行する準備ができたら、[Create user] (ユーザーの作成) を選択します。

IAMが正しく作成できれば次の画面が表示されます

この同じプロセスにより、さらにグループとユーザーを作成し、そのユーザーに対し AWS アカウント のリソースへのアクセス権を付与できます。ポリシーを使用して特定の AWS リソースに対するユーザーの許可を制限する方法については、「アクセス管理』」と「ポリシーの例」を参照してください。

[新機能]IAMの委譲権限を制限可能なPermissions Boundaryが登場したので試してみた

[新機能]IAMの委譲権限を制限可能なPermissions Boundaryが登場したので試してみた | DevelopersIO
新機能としてIAMの委譲権限を制限可能なPermissions Boundaryが登場したので試してみました。

ステップ 3: アクセスキー ID とシークレットアクセスキーを作成します

CLI アクセスには、アクセスキー ID とシークレットアクセスキーが必要です。AWS アカウント の root ユーザーアクセスキーの代わりに IAM ユーザーアクセスキーを使用します。IAM を使用すると、AWS アカウント での AWS のサービス とリソースへのアクセスを安全に制御できます。アクセスキー作成の詳細については、AWS 全般のリファレンスの「認証情報の理解と取得」を参照してください。

アクセスキーはアクセスキー ID とシークレットアクセスキーから成り、 に対するプログラムによるリクエストに署名するときに使用されますAWS アクセスキーがない場合は、 から作成することができますAWS Management Console ベストプラクティスとして、必須ではないタスクでは AWS アカウントのルートユーザーアクセスキーを使用しないでください。代わりに、自身用のアクセスキーを持つ新しい管理者 IAM ユーザーを作成します。

シークレットアクセスキーを表示またはダウンロードできるのは、キーを作成するときのみです。後で回復することはできません。ただし、いつでも新しいアクセスキーを作成できます。また、必要な IAM アクションを実行するための許可が必要です。詳細については、IAM ユーザーガイドIAM リソースにアクセスするために必要な許可を参照してください。

IAM ユーザーのアクセスキーを作成するには

  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/

) を開きます。

ナビゲーションペインで [Users] (ユーザー) を選択します。

アクセスキーを作成するユーザー名を選択し、[Security credentials] (セキュリティ認証情報) タブを選択します。

[Access keys] (アクセスキー) セクションで、[Create access key] (アクセスキーを作成) を選択します。

新しいアクセスキーのペアを表示するには、[Show] (表示) を選択します。このダイアログボックスを閉じた後で、シークレットアクセスキーに再度アクセスすることはできません。認証情報は以下のようになります。

  • アクセスキー ID: xxxxxxxx
  • シークレットアクセスキー: xxxxxxxxx

キーペアをダウンロードするには、[Download .csv file] (キーファイルのダウンロード) を選択します。このキーは安全な場所に保存してください。このダイアログボックスを閉じた後で、シークレットアクセスキーに再度アクセスすることはできません。

.csv ファイルをダウンロードしたら、[Close] (閉じる) を選択します。アクセスキーを作成すると、キーペアはデフォルトで有効になり、すぐに使用できるようになります。

AWS アカウントを保護するためにキーは機密にしておき、E メールでは送信しないようにしてください。また、所属している組織外にこの情報を公開してはいけません。AWS または Amazon.com を名乗る人物から問い合わせがあった場合でも、この情報は開示しないでください。Amazon を正式に代表する人物がこの情報を要求することは一切ありません。

新しい設定の高速セットアップ

AWS 公式ドキュメントから引用させていただきました。

高速セットアップ - AWS Command Line Interface
システムに AWS Command Line Interface バージョン 2 (AWS CLI バージョン 2) をインストールします。

一般的な使用の場合、aws configure コマンドが、AWS CLI のインストールをセットアップするための最も簡単な方法です。このコマンドを入力すると、AWS CLI によって 4 つの情報の入力が求められます。

この情報は、AWS CLI により、default ファイルの、credentials という名前のプロファイル (設定のコレクション) に保存されます。デフォルトでは、このプロファイル内の情報は、使用するプロファイルを明示的に指定しない AWS CLI コマンドを実行する場合に使用されます。credentials ファイルの詳細については、「設定ファイルと認証情報ファイルの設定」を参照してください。

次の例は、サンプル値を示しています。次のセクションで説明するように、これらの値を独自の値に置き換えます。

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json

設定の詳細については、「設定の基本」を参照してください。

既存の設定と認証情報ファイルの使用

既存の設定および認証情報ファイルがある場合は、AWS CLI にこれらのファイルを使用できます。

config ファイルと credentials ファイルを使用するには、これらのファイルをホームディレクトリの .aws という名前の付いたフォルダに移動します。ホームディレクトリの場所はオペレーティングシステムによって異なりますが、環境変数 %UserProfile% (Windows の場合) および $HOME またはチルド ~ (Unix ベースのシステムの場合) を使用して参照されます。

AWS_CONFIG_FILEAWS_SHARED_CREDENTIALS_FILE の環境変数を別のローカルパスに設定することで、config ファイルと credentials ファイルの場所をデフォルト以外の場所に指定できます。詳細については、「AWS CLI を設定する環境変数」を参照してください。

設定と認証情報ファイルの設定の詳細については、「設定ファイルと認証情報ファイルの設定」を参照してください。

リージョンコード名前オプトインステータス
us-east-2米国東部 (オハイオ)不要
us-east-1米国東部(バージニア北部)不要
us-west-1米国西部 (北カリフォルニア)不要
us-west-2米国西部 (オレゴン)不要
af-south-1アフリカ (ケープタウン)必須
ap-east-1アジアパシフィック (香港)必須
ap-southeast-3アジアパシフィック (ジャカルタ)必須
ap-south-1アジアパシフィック (ムンバイ)不要
ap-northeast-3アジアパシフィック (大阪)不要
ap-northeast-2アジアパシフィック (ソウル)不要
ap-southeast-1アジアパシフィック (シンガポール)不要
ap-southeast-2アジアパシフィック (シドニー)不要
ap-northeast-1アジアパシフィック (東京)不要
ca-central-1カナダ (中部)不要
eu-central-1欧州 (フランクフルト)不要
eu-west-1欧州 (アイルランド)不要
eu-west-2欧州 (ロンドン)不要
eu-south-1ヨーロッパ (ミラノ)必須
eu-west-3欧州 (パリ)不要
eu-north-1欧州 (ストックホルム)不要
me-south-1中東 (バーレーン)必須
sa-east-1南米 (サンパウロ)不要

IAMロールの作成

AWSサービスのIAMダッシュボードから、 ロールの作成 をクリックします。

Roleを割り当てるサービスとしてEC2を選択してNEXTをクリックします

つぎに、ポリシーを設定します。S3のファイルを色々と操作したいので、 S3のフルアクセス権限 を付与します。また、動作確認のため EC2とVPCの読み取り専用の権限 も付与します。

名前には次のようなわかりやすいROLE名を付けましょう

VPCReadonly-EC2Readonly-S3Full

EC2にIAMロールを割り当て

対象のEC2を指定し、Actions->Security->Modify IAM roleを選択します

先に作成したRoleを選択したのち、Update IAM Roleをクリックします

以上でEC2にIAMロールの割り当て完了です。

動作確認

AWS-CLIを使えば、次のコマンドを実行するだけでEC2の情報を取得、一覧することができます。

aws ec2 describe-instances

おわりに

今回コマンドでAWSを管理するツールとしてかならずいれておきたいAWS CLIのインストール方法をご紹介しました。こちらはawsコマンド一つでAWSの各種リソースを管理することが可能で、PowerShellも含めて各種シェル上で利用することができます。

ちなみに、PowerShellを使い慣れておりPowerShellの流儀に合わせたい場合はAWS Tools for PowerShellというツールもあります

大まかな違いは次の表のとおりです

項目AWS CLIAWS Tools for PowerShell
実装Python製 (botocore)C#製 (AWS SDK for .NET)
対応シェルPowerShellに限らないPowerShellのみ
コマンド体系awsコマンド1つ多数のPowerShellコマンドレット(≒内部コマンド)
入出力JSON等のテキスト.NETのオブジェクト

なにかの参考になれば幸いです。

PHP/Javascript/WORDPRESS案件全般承ります

オーストラリアで主に日系企業や個人のお客様からのご依頼でお仕事をしております。この記事についてのご質問またはお困りのことがございましたら、お気軽にお問い合わせください。

タイトルとURLをコピーしました