この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは!DA(データアナリティクス)事業本部 インテグレーション部の大高です。
re:Invent 2020 で発表されたマネジメントコンソールから利用できるシェル「AWS CloudShell」ですが、これをVS Codeから利用できる「AWS CloudShell plugin for VS Code」という拡張機能があります。
以前から気になっていたのですが、やっと試すことができたので設定方法などをまとめたいと思います。
前提条件
以下については既に対応済みであることを前提として記載しています。
- AWS CLIをインストール済み
- Session Manager plugin をインストール済み
- IAMユーザを作成しており、IAMユーザのアクセスキーが発行済み
AWS CLIのインストールと、Session Manager pluginのインストールについては以下の記事でも記載していますので、よろしければご参照ください。
AWS側の準備
まずは、AWS側の準備を行います。
実施に試したところ、以下の2つが必要でした。
- IAMロール
- CloudShellのアクセス権限を持ったIAMロール
- IAMユーザ
- 上記IAMロールにAssume RoleできるIAMユーザ
今回は「IAMユーザ」は既に作成済みである想定なので、このIAMユーザのARNを利用して該当IAMロールを作成するようなCloudFormationテンプレートを作成してみました。
AWSTemplateFormatVersion: "2010-09-09"
Description:
Setup IAM Role for VS Code AWS CloudShell
Metadata:
"AWS::CloudFormation::Interface":
ParameterGroups:
- Label:
default: "VS Code AWS CloudShell Configuration"
Parameters:
- IAMUserARN
- AssumeRoleName
ParameterLabels:
IAMUserARN:
default: "IAM User ARN"
AssumeRoleName:
default: "AssumeRole Name"
Parameters:
IAMUserARN:
Type: String
Default: ""
AssumeRoleName:
Type: String
Default: "CloudShell-AssumeRole"
Resources:
AssumeRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Ref AssumeRoleName
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
-
Effect: Allow
Action: sts:AssumeRole
Principal:
AWS: !Ref IAMUserARN
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AWSCloudShellFullAccess
Outputs:
CloudShellIamRoleArn:
Description: IAM role for CloudShell
Value: !GetAtt AssumeRole.Arn
こちらを利用して、IAMUserARN
パラメータにIAMユーザのARNを指定すればサクッと作成できるかと思います。権限としてIAMロールにはAWSCloudShellFullAccess
を付与しています。
作成後には、CloudFormationのOutputs(出力)にCloudShellIamRoleArn
というキーで作成したIAMロールのARNが表示されているので控えておきます。(後で設定時に利用します)
拡張機能のインストール
次に、VS Codeに拡張機能をインストールします。 拡張機能識別子は iann0036.aws-cloudshell
ですので、VS Codeで拡張機能タブを開いて iann0036.aws-cloudshell
を検索してインストールします。
拡張機能の設定
インストールが無事に済んだら、今度は設定を行います。
VS Codeのユーザー設定を開いてcloudshell
で検索すると4つの設定項目が表示されるかと思います。
これをそれぞれ設定しておきます。
Assume Role
先程作成して控えておいたIAMロールのARNをここに指定します。
Enable Upload
このオプションを有効にすると、VS Codeのエクスプローラーでファイルを右クリックしたときに、コンテキストメニューに「Upload file to AWS CloudShell」と表示され、ファイルがアップロードできるようになります。 (なのですが、2021/01/22現在では実際に試したところ、アップロードしたファイルが見当たりませんでした。もし分かったら後で追記したいと思います。)
Profile
本エントリの「前提条件」としているIAMユーザのアクセスキーを設定しているAWS CLIのプロファイル名です。
Region
CloudShellを起動するリージョンです。今回はap-northeast-1
で試しています。
接続してみる
では、設定が完了したら早速接続してみましょう。
画面左側の「AWS CloudShell」用のアイコンをクリックし、上部のクラウドマーク(Start Session)をクリックします。
すると、一覧にシェルのリストが表示され、ステータスがconnecting
となります。
しばらく待つとステータスがconnected
となり、Cloud Shellのターミナルが自動で開きます。
whoami
コマンドで、ちゃんとcloudshell-user
なのが確認できますね!
なお、今のところエクスプローラについては「SSH接続」や「WSL接続」のように連動しないので、その点は注意が必要です。
まとめ
以上、「AWS CloudShell plugin for VS Code」を試してみました。「管理コンソールを開かずに、普段使い慣れているVS CodeからCloudShellに接続したい!」という場合には良さそうな拡張機能かなと思いました。
どなたかのお役に立てば幸いです。それでは!