LoginSignup
0
0

More than 1 year has passed since last update.

Windows環境でAWS CLIを使えるようにする手順+エラーケース。

Posted at

はじめに

タイトルの通りです。備忘録として残しておきます。

AWS CLIのインストール手順自体は、公式ドキュメントに記載されています。

「AWS CLIっていまいち分からない!」という方は、なんだかんだ言ってブラックベルトを見るのが手っ取り早いと思います。

公式動画
[AWS Black Belt Online Seminar] AWS Command Line Interface

本記事の対象環境は以下となります。
・Windows10
・Windows PowerShell、VScodeなどのローカル環境からの利用。

手順は以下となります。

順番 内容
1. Python3をインストール
2. AWS CLIをインストール
3. AWS CLIの初期設定

1. Python3をインストール

既にインストールされている方は、飛ばして下さい。
本記事でPython3のインストール方法は解説しませんが、こちらの記事などが参考になると思います。

Python2は既にサポートが終了しているため、古いバージョンがインストールされている場合は、Python3へのバージョンアップを行いましょう。

2. AWS CLIをインストール

冒頭にも記載したこちらのページから、AWS CLIをインストールします。

インストーラーに従っていけば大丈夫です。

3. AWS CLIの初期設定

AWS CLIのセットアップを行います。
IAMユーザーのアクセスキーとシークレットキーが必要です。
なお、シークレットキーはユーザー作成時にしか確認できない(CSVを取得できない)ので、注意しましょう。

アクセスキーとシークレットキーの用意ができたら、ターミナルを開きます。
aws configureと入力し、以下の設定を行います。

aws configure

# 例
AWS Access Key ID [None]: hogehogehoge
AWS Secret Access Key [None]: hogehogehoge
Default region name [None]: ap-northeast-1
Default output format [None]: json

バージョン2からは、出力フォーマットにyamlの指定なども可能となったようです。
設定を行えば、yqコマンドも使用可能です。

参考
AWS CLI 出力フォーマットの設定

再設定を行う場合も、aws configureと入力します。

AWS CLIの設定自体はこれで完了です。
コマンドが使えるかどうか、確かめてみてください。

# 例:EC2インスタンスのidを取得
aws ec2 describe-instances --query 'Reservations[].Instances[].[InstanceId, 
InstanceType, State.Name]' --output table

念の為書いておきますが、アクセスキーとシークレットキーを外部に公開するのは絶対にやめましょう。 「不正アクセスされて膨大な請求が!」なんて話はよくネットで見かけます。

以下、windows環境で想定されるエラーケースを記載します。

エラーケース① <>が使えない

例えばこんなコマンドを入力したとして、

# EC2インスタンスの停⽌
aws ec2 stop-instances --instance-ids <インスタンスID>

こんなエラーが返ってきます。

The '<' operator is reserved for future use. #演算子は将来の使用のために予約されています。
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : RedirectionNotSupported

powershellでは、<>(演算子)は予約されているので使えないとのこと。
解決方法としては、コマンドの<>を外すだけで大丈夫です。

# EC2インスタンスの停⽌
× aws ec2 stop-instances --instance-ids <インスタンスID>
○ aws ec2 stop-instances --instance-ids インスタンスID

エラーケース② スクリプトを実行できない

スクリプトを実行したとして、こんなエラーが想定されます。

+ CategoryInfo          : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

原因は、powershellの実行ポリシーです。

windows powershellの規定の実行ポリシーは、Restrictedとなっています。
コマンドは許可し、スクリプトは許可しない設定です。
マルウェアの実行を防ぐためなど、セキュリティに配慮した設定となっています。

実際に、ターミナルから実行ポリシーを確かめてみましょう。

# 実行ポリシーの確認
Get-ExecutionPolicy 

実行ポリシーの変更方法としては、以下の記事が参考になります。

参考
PowerShellの実行ポリシー変更

個人的には、不用意に実行ポリシーを変更したくないので、セッション中のみスクリプトの実行を許可するよう変更する、以下のコマンドがおすすめです。

Set-ExecutionPolicy RemoteSigned -Scope Process -Force

以下のコマンドで、スコープごとの実行ポリシーの確認ができます。

Get-ExecutionPolicy -List

おわりに

AWS Toolkitなどの拡張機能も用意されているので、気になる方は是非試してみて下さい。

この記事が少しでも参考になれば幸いです。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0