こんにちは。
アプリケーションサービス部、DevOps担当の兼安です。
今回はOSSのWEB IDEであるCoderについてお話しします。
- はじめに
- 開発環境におけるWEB IDEの需要
- Coderとは
- AWSマーケットプレイスからのCoderの起動方法
- CoderのWorkspaceの作成
- WorkspaceでのAWS CLIとAWS SAMの利用
- まとめと感想
はじめに
昨年、AWSのWEB IDEであるAWS Cloud9が新規のお客様にはご利用いただけなくなりました。
これを受けて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は、OSSのWEB IDEです。
ホストにインストールすることもできますし、各種パブリッククラウドでも使用可能です。
AWSにおいては、マーケットプレイスで提供されており、EC2インスタンスに簡単にインストールして利用することができます。
Visual Studio Codeに近いUIを持ち、拡張機能も利用できるため、開発者にとっては使いやすい環境となっています。
AWSマーケットプレイスからのCoderの起動方法
Coderはマーケットプレイスから起動します。
AWS マネジメントコンソールでEC2の画面からインスタンスを起動
をクリック。
アプリケーションイメージの検索窓で、Coder
と入力し、検索します。

Coder v2を選択します。

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

本記事では以下のスペックを選択しました。
項目 | 設定値 |
---|---|
インスタンスタイプ | t3a.small |
ストレージタイプ | gp3 |
ストレージサイズ | 30GiB |
インスタンスはパブリックサブネットに配置。
セキュリティグループはHTTPSのみ通信を許可する設定を行います。
EC2インスタンスが起動したら、EC2の詳細からオープンアドレスをクリック

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

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

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

CoderのWorkspaceの作成
ログインができたら、最初は何もないので、ユーザーガイドを参考にしながらWorkspaceを作成します。
まずはWorkspaceのtemplateを作成する必要があります。
右上の、Create Workspace
をクリックから、See all templates
をクリックします。

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

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

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

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

Workspaceの設定画面が表示されます。
必要事項を入力し、Create Workspace
をクリックします。
コンソールにログが表示され、一定時間が経過するとWorkspaceが作成されます。
ここから、WEB IDEを起動することができます。

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

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


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

IAMロールの設定後、aws s3 ls
を実行すると、S3のバケット一覧が表示されるのを確認できます。
CoderのWorkspaceは、ホストされているEC2のIAMロールを引き継いでいることがわかります。
次にAWS SAMをインストールします。
AWS SAMも公式ページの手順でインストールします。
AWS SAMのインストールが完了したら、sam init
で、AWS SAMのプロジェクトを作成します。
このあたりは特に躓くことなく進めることができました。
AWS SAMのプロジェクトで、言語にPythonを選択したため、Pythonのインストールも行います。
本記事ではuv
を使用して、Pythonをインストールしています。
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 build
とsam 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
広島在住です。今日も明日も修行中です。