JAWS-UG CLI専門支部などでハンズオンイベントに参加する時、よく使われるのがcloud9というサービスです
cloud9はVSCodeのようなIDEを提供してくれる素晴らしいサービスで、たまに開発環境を使う程度であれば十分すぎる代物です
ただ一方、個人的にローカルの開発環境を整えてる人に対するあこがれもありました
ハードルが高く感じてしまいなかなか手を出せていませんでしたが、連休を使ってAWS CLIをローカルで動かせるようにしてみました
結果、インストールはすぐにできたのですがセットアップで少し手こずりました
Windowsの事例がググってもあまり出てこなかったので、備忘録もかねて記事にしておきます
前提
OS:Windows 11
IDE:VSCode(ターミナルはPowerShell)
AWS CLIのインストール
基本的には、公式ドキュメント通りにやればOK
- Windows用のMSIインストーラーをダウンロードして実行する
- VSCodeのターミナルで以下コマンドを入力して、バージョンが返ってくればインストール成功
aws --version
設定ファイル、認証情報ファイルの設定
AWS CLIの設定ファイル、認証情報ファイルについて
AWS CLIの構成設定は、主に2つのファイルに格納されています
- config:設定ファイル、リージョンや出力形式の指定を格納する
- credential:認証情報ファイル、アクセスキーとシークレットアクセスキーを格納する
上記はいずれもホームディレクトリに格納されており、Windowsの場合はC:\Users\ローカルユーザー名\.aws
に格納されているはずです
この2つを設定することで、AWSにアクセスして操作ができるようになります
設定方法
こちらも公式ドキュメントに従えばOK、特に引っかかりポイントはありませんでした
- 事前にマネジメントコンソールで、使用するアクセスキーとシークレットアクセスキーを発行しておく
- PowerShellで
aws configure
コマンドを入力し、アクセスキー、シークレットアクセスキー、デフォルトリージョン、出力フォーマットをそれぞれ入力する$ 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 configure list
とコマンドを入力し、入力内容を確認する
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************ABCD shared-credentials-file
secret_key ****************ABCD shared-credentials-file
region us-west-2 env AWS_DEFAULT_REGION
タブ補完を有効化する
コマンドを途中まで入力し、Tabキーを押すと勝手に補完してくれる機能が「タブ補完」です
※AWSの公式ドキュメントでは「コマンド補完」と記載されています
タブ補完はデフォルトで無効になっているので、公式ドキュメントを参考にして有効化する必要があります
実はここに、Windowsならではの引っかかりポイントがありました
具体的な手順は上記ドキュメントに倣うとして、引っかかりポイントを記載しておきます
Windowsセキュリティで拒否される
以下のコマンドを入力する手順で、コマンドを実行できませんでした
PS C:\> if (!(Test-Path -Path $PROFILE ))
{ New-Item -Type File -Path $PROFILE -Force }
よく見てみると、Windowsセキュリティの通知も一緒に飛んできていました
↑記載内容は違いますが、こんな感じで画面の端っこに通知が来ました
Windowsセキュリティを疑って設定を確認してみると、ランサムウェアの防止の設定で「コントロールされたフォルダーアクセス」がオンになっていました
これをオフ、もしくはアプリの追加をするとコマンドが実行できるようになりました
ターミナルを再起動するとエラーが出力されてしまう
公式ドキュメントに従って以下のようなスクリプトファイルを作成したら、ターミナルを再起動させます
Register-ArgumentCompleter -Native -CommandName aws -ScriptBlock {
param($commandName, $wordToComplete, $cursorPosition)
$env:COMP_LINE=$wordToComplete
$env:COMP_POINT=$cursorPosition
aws_completer.exe | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
Remove-Item Env:\COMP_LINE
Remove-Item Env:\COMP_POINT
}
やっとタブ補完ができるようになるとわくわくしていたら、まさかのエラー。。。
このシステムではスクリプトの実行が無効になっているため、ファイル hoge\hoge\hoge.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
(ファイルパスは適当なものに置き換えています)
調べてみると、どうやらデフォルトではPowerShellのスクリプト実行ポリシーに引っかかっているようでした
公式ドキュメントの手順では、タブ補完のために新しいスクリプトファイルを作成しています
タブ補完を有効化すると、ターミナルを開くたびに作成したスクリプトを実行しているみたいです
しかし、デフォルトではスクリプトが実行できない権限になっているため、これを変更する必要があるようです
私はRemoteSignedのポリシーをユーザーに対して割り当てました
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
上記コマンドを実行してターミナルを再起動すると、タブ補完ができるようになりました!!!
その後
今現在はどうしているかというとWSL2を導入しました
ここまで頑張ったのになぜやり直したのかというと、単純にPowerShellやコマンドプロンプトが使いにくいと感じてしまったからです。。。
以下は個人的な感想です
- コマンドプロンプトは
ls
打てない、PowerShellなら打てるけどls -al
はダメなの!? - PowerShellのコマンドわからない
- コマンドプロンプトとPowerShellの使い分けがわからない
会社の研修でLinuxの勉強をしていたこともあって、コマンドを打ちにくいを感じてしまいました
WSL2ならWindowsの中でLinux(Ubuntu)を動かすことができるので、泣く泣くWSL2に切り替えました。。。
Windowsの開発環境ってどうやって構築するのがベストプラクティスなのでしょうか。。。?
ご存じの方いたら教えていただけますと幸いです
参考情報
純粋にインストールするだけなら、こちらの記事が簡潔にまとまっていてわかりやすかったです