OSSのWEB IDEであるCoderでIaCを使ってAWSリソースをデプロイすることはできるのか?

記事タイトルとURLをコピーする

こんにちは。
アプリケーションサービス部、DevOps担当の兼安です。
今回はOSSのWEB IDEであるCoderについてお話しします。

はじめに

昨年、AWSのWEB IDEであるAWS Cloud9が新規のお客様にはご利用いただけなくなりました。

blog.serverworks.co.jp

これを受けてAWS Cloud9でできていたことが他のWEB IDEでできるのかを調べており、今回はその中でCoder v2を試してみたので、その結果を共有します。
本記事では、IaCはAWS SAMを使用し、AWSリソースをデプロイできるのか?を検証しています。
結論として、可能であることをお伝えします。

開発環境におけるWEB IDEの需要

システム開発における開発環境の作成は、開発者にとっては非常に重要です。
環境構築に不慣れな場合、時間がかかり、この段階で挫折することもあります。
解決策の一つとして、クラウド上の用意された開発環境を利用する方法があります。
クラウド上の開発環境を利用した場合、その環境と通信する方式には大きく分けてSSHでのアクセスとHTTP/HTTPSでのアクセスがあります。
SSHでのアクセスは便利ではあるのですが、一般的な企業ではセキュリティポリシー上、SSHが禁止されていたり申請のハードルが高かったりするのが実情です。
HTTP/HTTPSでのアクセスができれば、セキュリティポリシーに抵触することなく、開発環境にアクセスできます。
ここに、WEB IDEの需要があります。

WEB IDEを使えばブラウザ上でプログラミングができますが、AWSを利用している場合、AWSへのデプロイができないと片手落ちの環境となってしまいます。
本記事ではこの観点から、CoderでAWSリソースをデプロイできるのか?を検証しています。

なお、ブラウザはSafariを使用して検証しています。

Coderとは

coder.com

aws.amazon.com

Coderは、OSSのWEB IDEです。
ホストにインストールすることもできますし、各種パブリッククラウドでも使用可能です。
AWSにおいては、マーケットプレイスで提供されており、EC2インスタンスに簡単にインストールして利用することができます。
Visual Studio Codeに近いUIを持ち、拡張機能も利用できるため、開発者にとっては使いやすい環境となっています。

AWSマーケットプレイスからのCoderの起動方法

Coderはマーケットプレイスから起動します。
AWS マネジメントコンソールでEC2の画面からインスタンスを起動をクリック。
アプリケーションイメージの検索窓で、Coderと入力し、検索します。

EC2の起動画面の検索窓で、Coderと入力し、検索

Coder v2を選択します。

AWS MarketplaceでCoder v2 を選択

インスタンス起動時に購読をクリックし、次に進みます。
なお、「t2.xlarge ベンダー推奨」とありますが、検証用途であればもっと小さいインスタンスでも問題ありません。

Coder v2を選択して、インスタンス起動時に購読

本記事では以下のスペックを選択しました。

項目 設定値
インスタンスタイプ t3a.small
ストレージタイプ gp3
ストレージサイズ 30GiB

インスタンスはパブリックサブネットに配置。
セキュリティグループはHTTPSのみ通信を許可する設定を行います。

EC2インスタンスが起動したら、EC2の詳細からオープンアドレスをクリック

EC2の詳細からオープンアドレスをクリック

Coderは起動した時点でSSL証明書が自動で発行されるため、HTTPSでのアクセスが可能です。
しかし、自己署名証明書のため、ブラウザでアクセスすると警告が表示されます。
本運用であれば、正式なSSL証明書を取得して設定することが望ましいですが、今回はそのまま進めます。

自己署名証明書のため、ブラウザでアクセスすると警告が表示される

アクセスすると、初期ユーザー作成画面が表示されます。
画面に従い初期ユーザーを作成し、ログインします。

Coderの初期ユーザー作成画面

ログインするとCoderのTOP画面が表示されます。

CoderのTOP画面

CoderのWorkspaceの作成

ログインができたら、最初は何もないので、ユーザーガイドを参考にしながらWorkspaceを作成します。

coder.com

まずはWorkspaceのtemplateを作成する必要があります。
右上の、Create Workspaceをクリックから、See all templatesをクリックします。

Create Workspaceをクリックから、See all templatesをクリック

ユーザーガイドでは、Dockerを使った開発環境を作成するのが推奨されているので、今回はそれに従います。
Docker ContainersのUse templateをクリックします。

Docker Contanersのtemplateを使用

名前をつけて、Create templateをクリックします。
少し時間がかかります。

templateの作成画面で情報を入力

作成されたtemplateが表示されます。
今回は実施していませんが、このtemplateは編集ができます。

作成されたtemplate

templateができるとTOP画面が以下のようになります。
中心のアイコンをクリックするか、右上の Create Workspaceをクリックします。

template作成画面のTOP画面

Workspaceの設定画面が表示されます。
必要事項を入力し、Create Workspaceをクリックします。

コンソールにログが表示され、一定時間が経過するとWorkspaceが作成されます。
ここから、WEB IDEを起動することができます。

Workspaceの画面

この画面で、Coderのリソース使用状況も確認できます。
1つWorkspaceを作成した時点で、39%のメモリを使用していることがわかります。
単純にWorkspaceの数に比例するわけではないかもしれませんが、本記事で選択したスペックでは、あと1つWorkspaceを作成するのが限界のように見えます。

WorkspaceでのAWS CLIとAWS SAMの利用

Workspaceの画面

Workspaceの画面から、code-serverでWEB IDEを起動することができます。
Terminalで、同じくWEBのターミナルを起動することができます。
本記事では、VS Code Desktopは触れていません。

起動したWEB IDEの画面

起動したTerminalの画面

本記事では、IaCはAWS SAMを使用して、AWSリソースのデプロイを検証しました。
AWS SAMのインストールはコマンドラインが必要なので、Terminalを起動します。

と、その前にそもそもCoderの環境からAWSリソースにアクセスできるかを確認します。
ターミナルでawsコマンドを実行すると、aws: command not foundと表示されるので、AWS CLIをインストールします。
まず、Workspaceにはunzipがインストールされていないので、unzipをインストールしておきます。

sudo apt update
sudo apt install -y unzip

次にAWS CLI公式ページの手順でAWS CLIをインストールします。

docs.aws.amazon.com

インストールが完了したら、試しにS3のバケット一覧を表示するコマンドaws s3 lsを実行すると、Unable to locate credentials. You can configure credentials by running "aws configure".と表示されます。
これは、起動直後の状態ではAWSの認証情報が未設定だからです。
これはCoderをホストするEC2インスタンスにIAMロールを設定することで解決できます。
EC2インスタンスのアクションから、IAM ロールを変更をクリックし、設定します。

EC2のIAM ロールを変更でロールを設定

IAMロールの設定後、aws s3 lsを実行すると、S3のバケット一覧が表示されるのを確認できます。
CoderのWorkspaceは、ホストされているEC2のIAMロールを引き継いでいることがわかります。

次にAWS SAMをインストールします。
AWS SAMも公式ページの手順でインストールします。

docs.aws.amazon.com

AWS SAMのインストールが完了したら、sam initで、AWS SAMのプロジェクトを作成します。
このあたりは特に躓くことなく進めることができました。
AWS SAMのプロジェクトで、言語にPythonを選択したため、Pythonのインストールも行います。
本記事ではuvを使用して、Pythonをインストールしています。

docs.astral.sh

docs.astral.sh

curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install 3.9
uv venv

Pythonのインストールが完了したら、AWS SAMでデプロイを行います。

uv run sam build
uv run sam deploy --stack-name スタック名 --capabilities CAPABILITY_IAM --no-confirm-changeset

※本記事ではuvを使用しているので、sam buildsam deployのコマンドを実行する前に、uv runが付いてます。

ここも、ホストされているEC2にIAMロールが設定されていないと、デプロイが失敗しますが、IAMロールが設定されてさえいれば、特に問題なくデプロイが完了します。

まとめと感想

  • Coderは、AWS Marketplaceから簡単に起動可能
  • セキュリティグループでHTTPSのみ通信を許可すればよい
  • Coderの管理画面へのアクセスはHTTPSだが、単純にAWS Marketplaceから起動しただけでは自己署名証明書のため、ブラウザでアクセスすると警告が表示される
  • CoderをホストしているEC2へのIAMロールが設定されていれば、CoderのWorkspaceでIaCを利用してAWSリソースをデプロイすることができる

AWSリソースをデプロイする際にホスト側のIAMロールが必要である点はわかりにくかったので、この検証は意義があったと思います。
感想としては、ターミナルの動作がやや重い印象でした。
このあたりは、ネットワークの速度とホストするEC2のスペックによるのでしょう。
それを差し引いたとしても、気軽に利用開始できる良いWEB IDEに感じます。

本記事の内容がどなたかのお役に立てれば幸いです。

兼安 聡(執筆記事の一覧)

アプリケーションサービス部 DS3課所属
2025 Japan AWS Top Engineers (AI/ML Data Engineer)
2025 Japan AWS All Certifications Engineers
2025 AWS Community Builders
Certified ScrumMaster
PMP
広島在住です。今日も明日も修行中です。