Visual Studio Code の拡張機能で幸せなAWS サーバレス開発へ[概要編]

# 背景
3年ぐらい前からサーバレス開発(Lambda, S3, APIGateway等)を始めたのですが…
今まで、コマンドベースで開発をしていました。
今回、記事にする拡張機能は当初から入れておりましたが、Templateファイル(IaC)のCodeチェックでしか使っていませんでした。
そして、3年たった今
　「もう少し楽に開発したいなぁ〜そういや、この拡張機能、、ちゃんと使ってないな」
と気づき！！※というか、入れていたのを忘れていた…
効率化に向けて、どれぐらい有能に使えるかも含めちゃんと調べたいと思います。
現状、他にも同じような記事があると思いますが、自身のアウトプットの為に備忘録として残していこうと思います。

さて、今年も終わりに近づいてることですし重たい腰をあげますかっ…

# 拡張機能「AWS Toolkit」
## 紹介
本記事では「AWS　ToolKit」について、使い方等をメインに記載していきます。
下記がVisual Studio CodeのMarketplaceでインストールできるAWS ToolKitになります。
[AWS TooKit](https://marketplace.visualstudio.com/itemdetails?itemName=AmazonWebServices.aws-toolkit-vscode "AWS TooKit")

## 概要
`AWS Toolkit`はAWS公式の拡張機能になります。
`AWS Toolkit`を利用することで、開発者はVisual Studio Code上でAWSのサーバーレス アプリケーションをローカルで開発、デバッグ、デプロイすることが容易にできるようになります。
Marketplaceの記載を確認する限り、以下のAWSサービス(サーバレスサービス)にアクセス、操作等ができそうです。
- API Gateway
- App Runner
- CloudFormation stacks
- CloudWatch Logs
- ECR
- ECS
- EventBridge schemas
- IoT explorer
- Lambda functions
- S3 explorer
- Step Functions

では、次の章から実際に何ができるのかを記載していきます。

## 何ができるのか？？
何ができるのかは、以下の公式ドキュメントから紐解いていこうかと思います。
[AWS Toolkit for Visual Studio Code　ユーザガイド](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html "AWS Toolkit for Visual Studio Code　ユーザガイド")

AWSサービス操作のトピック一覧から紐解いて概要をまとめていきたいと思います。
### Working with experimental features(実験的機能の操作)
こちらは、AWS Toolkitでまだ正式リリースされてない機能を使えることが書かれています。
設定画面でチェックをすれば実験的機能を使えるみたいです。
ドキュメントには、現在実験的な機能についての一覧は載っていませんでした。
今後、AWS　サービス自体の機能強化等でも変わっていきそうですね。


該当のガイドページ
[Working with experimental features](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/experimental-features.html "Working with experimental features")

### Working with AWS Services in the AWS Explorer(AWS Explorer で AWS のサービスを操作する)
AWS Expolrerは、この拡張機能でアクセスできるAWSサービスを表示することができます。
また、操作等も可能になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/222088/73a83e40-8f75-9178-7b96-91377742f019.png)

利用時の注意点としては、各AWSサービスにアクセスするためにはIAMユーザー認証のためKey等を設定する必要があります。
例として、Lambdaにアクセスしたいのであれば、最低限としてLambdaの読み取り専用のアクセス許可を設定したIAMユーザの認証Keyを設定しなければなりません。操作したいのであればIAMユーザーに許可を追加してあげてください。

該当のガイドページ
[Working with AWS Services in the AWS Explorer](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/aws-explorer.html "Working with AWS Services in the AWS Explorer")

### Amazon CodeCatalyst for VS Code(VS コード用の Amazon CodeCatalyst)
ソフトウェア開発チーム向けのクラウドベースのコラボレーション スペースを提供するAmazon CodeCatalystをVisual Stadio Code上から表示、管理等できるみたいです。

該当のガイドページ
[Amazon CodeCatalyst for VS Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/codecatalyst-service.html "Amazon CodeCatalyst for VS Code")

#### Amazon CodeCatalystとは？
[Amazon CodeCatalyst](https://aws.amazon.com/jp/blogs/news/announcing-amazon-codecatalyst-preview-a-unified-software-development-service/ "Amazon CodeCatalyst")
一言でまとめるとコラボレーション可能な「統合ソフトウェア開発サービス」です。
2022/12/01にプレビューリリースとして発表されました。
現在はできたてほやほやのプレビュー版とのことで、us-east2(オレゴン)のみで使用可能みたいです。

できることは以下みたいです。
- ソースコード管理
- 設計監理
- Issue管理
- CI/CDパイプライン
- ユーザー管理
- プロジェクトをダッシュボードで管理
- コラボレーション機能



### Working with Amazon API Gateway(Amazon API Gateway の操作)
API GatewayのリソースをVisual Studio CodeのUI上から参照、実行、結果確認が可能です。

該当のガイドページ
[Working with Amazon API Gateway](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/apigateway.html "Working with Amazon API Gateway")

### Using AWS App Runner with AWS Toolkit for Visual Studio Code(AWS App Runner を AWS Toolkit for Visual Studio Code で使用する)
Visual Studio Code上からAWS App Runnerによるソース イメージまたはソース コードに基づいてサービスを作成および管理できます。

該当のガイドページ
[Using AWS App Runner with AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/using-apprunner.html "Using AWS App Runner with AWS Toolkit for Visual Studio Code")

#### AWS App Runnerとは？
高速、シンプル、かつ費用対効果の高い方法でソース コードまたはコンテナイメージからAWS クラウド内のウェブアプリケーションにデプロイできます。

[AWS App Runner](https://docs.aws.amazon.com/apprunner/latest/dg/what-is-apprunner.html "AWS　App　Runner")

### AWS CDK for VS Code(VS コード用の AWS CDK)
Visual Studio Code上から、AWS　CDKにアクセスして利用することが可能です。
また、AWS CDK コンストラクトで定義されているスタックとリソースを視覚化できます。

該当のガイドページ
[AWS CDK for VS Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/cdk-explorer.html "AWS CDK for VS Code")

### Working with AWS CloudFormation stacks(AWS CloudFormation スタックの操作)
Visual Studio Code上から、以下のことが可能です。
- 特定スタックのタスク実行(削除等)
- AWS CloudFormationのテンプレートの作成

該当のガイドページ
[Working with AWS CloudFormation stacks](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/cloudformation.html "Working with AWS CloudFormation stacks")

### Working with CloudWatch Logs by using the AWS Toolkit for Visual Studio Code(AWS Toolkit for Visual Studio Code を使用して CloudWatch Logs を操作する)
Visual Studio Code上から、ログ グループ・ログ ストリームのデータを参照することが可能です。
また、ログストリームに関してはコピー操作やログ情報をローカルファイルとして保存することができます。

該当のガイドページ
[Working with CloudWatch Logs by using the AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/cloudwatchlogs.html "Working with CloudWatch Logs by using the AWS Toolkit for Visual Studio Code")

### Working with Amazon CodeWhisperer(Amazon CodeWhisperer の使用)
コードの推奨事項をリアルタイムで提供する汎用の機械学習を利用したコードジェネレーターであるAmazon CodeWhispererをVisual Studio Codeで利用可能です。
セキュリティとしてのコード分析、管理もできるみたいです。
現在は、Java、JavaScript、Python、C#、および TypeScript をサポートしています。

該当のガイドページ
[Working with Amazon CodeWhisperer](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/codewhisperer-security.html "Working with Amazon CodeWhisperer")

### Working with Amazon Elastic Container Registry(Amazon Elastic Container Registry の操作)
AWS マネージド コンテナ レジストリ サービスであるAmazon ECR をVisual Studio Codeから以下の操作ができます。
- リポジトリの作成。
- リポジトリまたはタグ付きイメージ用の AWS App Runner サービスを作成します。
- イメージタグとリポジトリ URI または ARN へのアクセス。
- イメージ タグとリポジトリの削除。

また、AWS CLIやその他プラットフォームを統合させることでVisual Studio CodeからAmazon ECRのすべての機能にアクセス可能みたいです。

以下の前提があるため注意が必要です。
- IAMユーザの作成
特殊なURLとIAMの認証情報が必要
また、ユーザの権限管理はIAM Identity Centerでの管理が推奨されています。
- Docker が必要です
- AWS CLI version2が必要です

該当のガイドページ
[Working with Amazon Elastic Container Registry](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/ecr.html "Working with Amazon Elastic Container Registry")

### Working with Amazon Elastic Container Service(Amazon Elastic Container Service の使用)
Amazon ECSのサポートをVisual Studio Codeで提供できます。
機能としては以下を提供しています。
- タスク定義の作成、使用
- ECS Exec機能を利用してVisual Studio Codeからコンテナ単一のコマンド発行

該当のガイドページ
[Working with Amazon Elastic Container Service](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/ecs.html "Working with Amazon Elastic Container Service")

### Working with Amazon EventBridge(Amazon EventBridge の操作)
Visual Studio Code を使用して、Amazon EventBridgeスキーマの操作ができます。
利用可能操作は以下となります。
- 利用可能スキーマの表示
- 利用可能スキーマの検索
- 利用可能スキーマのコード生成

該当のガイドページ
[Working with Amazon EventBridge](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/eventbridge.html "Working with Amazon EventBridge")

### Working with AWS IoT in AWS Toolkit for Visual Studio Code(AWS Toolkit for Visual Studio Code で AWS IoT を操作する)
Visual Studio Code を使用して、AWS IoTの操作が可能です。
利用可能操作は以下となります。
- AWS IoT の管理
  - Thingsの作成
  - Thingsに証明書の設定
  - 証明書の解除
  - Thingsの削除
- AWS IoT の証明書
  - 証明書の作成
  - 証明書のstate管理
  - 証明書へのポリシー設定管理
  - 証明書の作成
- AWS IoT のポリシー
  - ポリシーの作成、編集
  - 新しいポリシーバージョンのアップロード
  - ポリシーバージョンのdefault管理

該当のガイドページ
[Working with AWS IoT in AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/iot-start.html "Working with AWS IoT in AWS Toolkit for Visual Studio Code")

### Working with AWS Lambda Functions(AWS Lambda 関数の操作)
Visual Studio Code を使用して、AWS Lambdaを操作できます。
AWS　クラウド上にLambda関数を既に作成している場合は、呼び出すことができます。
また、新規でVisual Studio Codeから作成する場合は、後述する「Working with serverless applications
」を参照してください。
利用可能操作は以下となります。
- Lambda 関数を呼び出す
- Lambda 関数を削除する
注意：AWS CloudFormationで関連しているLambdaに関しては単独削除はせず、AWS CloudFormationスタックから削除する必要があり
- Lambda 関数をインポートする
補足： Node.js および Python ランタイムを使用した Lambda 関数のインポートのみをサポート
- Lambda 関数をアップロード(デプロイ/更新)する
アップロード(デプロイ/更新)には3つの方法があります。
  - .zipアーカイブのアップロード
  - ディレクトリをそのままアップロード
  - ディレクトリを構築してアップロード
  補足：AWS SAM CLIが必要

該当のガイドページ
[Working with AWS Lambda Functions](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/building-lambda.html "Working with AWS Lambda Functions")

### Working with Amazon S3(Amazon S3 の操作)
Visual Studio Code を使用して、S3のバケット、オブジェクトを管理可能です。
可能な管理について
- バケットの作成・削除・フォルダの追加
- オブジェクトのアップロード、ダウンロード、削除
- 保存されているオブジェクトを編集
- オブジェクトの署名付きURLの生成 ※制限があるダウンロード用URL

該当のガイドページ
[Working with Amazon S3](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/s3.html "Working with Amazon S3")

### Working with serverless applications(サーバーレス アプリケーションの操作)
Visual Studio Code を使用して、サーバーレス アプリケーション（Lambda、APIGateway等）の作成からAWS　CloudFormationスタックによるデプロイまでの基本的な流れをサポートします。
注意点としては、AWS SAM CLIが必要であり、AWSへアクセス(ローカル実行でも必要)するためにAWS構成ファイルでリージョン、認証の設定をする必要があります。
また、認証設定したIAMユーザには、AWS CloudFormation、IAM、Lambda、Amazon API Gateway、Amazon Simple Storage Service (Amazon S3)、および Amazon Elastic Container Registry (Amazon ECR)の適切なアクセス権が必要になります。
※ローカル実行だけなら認証設定は適当で問題ないです

サポート内容について
- ローカルに新しいサーバレスアプリケーション(Lambda、API Gateway)の雛形(project)作成・編集
- ローカルでのサーバーレスアプリケーション(Lambda、API Gateway)実行とデバッグ（テンプレートファイル利用）
- AWSクラウドへのデプロイ(AWS CloudFormationの実行)
- AWS クラウドからサーバーレス アプリケーションを削除(AWS CloudFormationのスタックから削除)
- Lambda関数のコード上から直接実行、デバッグ可能
- ローカルでAPI Gatewayリソースとして実行、デバッグ可能

該当のガイドページ
[Working with serverless applications](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/serverless-apps.html "サーバーレス アプリケーションの操作")

### Working with Systems Manager Automation documents(Systems Manager Automation ドキュメントの操作)
Visual Studio Code を使用して、AWS Systems ManagerのSystems Manager ドキュメントを作成、編集、公開、削除等の管理ができます。

該当のガイドページ
[Working with Systems Manager Automation documents](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/systems-manager-automation-docs.html "Working with Systems Manager Automation documents")

#### AWS Systems Manager とは？
複数の AWS サービスから運用データを表示し、AWS リソース全体で運用タスクを自動化等をすることでAWS上のインフラストラクチャの可視性、制御を提供するサービスとなっています。
[AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html "AWS Systems Manager")


### Working with AWS Step Functions(AWS Step Functions の操作)
Visual Studio Code を使用して、ステートマシンで以下の操作を実行できます。

- ステートマシンを操作
  - ステートマシンの一覧表示
  - ステートマシンのダウンロード
  - ステートマシンを作成・更新・削除・実行
- ステートマシンテンプレートから作成
- ステートマシングラフの視覚化
- コードスニペットやコード補完と検証

該当のガイドページ
[Working with AWS Step Functions](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/building-stepfunctions.html "Working with AWS Step Functions")

### Working with resources(リソースの操作)
AWS Explorerにデフォルトで表示しているサービス以外にも、数百のAWSサービスリソースを操作するインターフェースをAWS　Explorer一覧に追加することができます。
触れるサービスリソースにAmazon AppFlow、Amazon Kinesis Data Streams、AWS IAM roles、Amazon VPC、Amazon CloudFront distributions等があるみたいです。他にも色々ありそうです。
こちらで、追加できるリソースはドキュメントには明示的には記載はありませんでした。また、追加したリソースの使い方等についてのドキュメントには詳細にはありませんでした。
こちらは、実際に使ってみないとわかりませんね。。。

該当のガイドページ
[Working with resources](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/more-resources.html "Working with resources")

## 実際に試す！！（※本記事では実施しない）
さて、ここまでAWS Toolkitで出来ることを概要レベルでまとめてきました。
私が思っていた3倍ぐらいできることがありびっくりました。
そして、内容も長くなってしまったので`実際に試めす`は次回の記事でまとめたいと思います。

次回の記事はできれば、年末年始あたりに出せればと思います。
実際に試す内容は、`Lambda`、`ApiGateWay`、`S3`、`DyanmoDB`あたりかな思います。

## まとめ
実際に「何ができるのか？」を調べると、自分が思っている以上にたくさんのサービスリソースに対して操作等ができたので驚きました。
また、Amazon CodeWhisperer等は初耳のサービスでしたので、触ってみたいAWSサービスが増えました。
また、実際の開発案件ではTypeScriptを行っていますが3年前のときはサポートが十分ではありませんでした。ただ、現状はTypeScriptにも対応している模様なので開発に活かしていきたいと思います。