AWS Cloud9
ブラウザベースの統合開発環境で、EC2 インスタンス上にコーディング・デバッグ・ターミナル環境を提供するサービス
概要
AWS Cloud9 は、ブラウザだけでコードの記述、実行、デバッグが可能なクラウドベースの統合開発環境 (IDE) です。バックエンドとして EC2 インスタンスまたは SSH 接続先のサーバーを使用し、40 以上のプログラミング言語のシンタックスハイライト、コード補完、ターミナルアクセスを提供します。AWS CLI や SAM CLI がプリインストールされており、Lambda 関数のローカルテストや CloudFormation テンプレートの編集など、AWS 開発ワークフローとの統合が特徴です。
環境タイプと EC2 インスタンスのライフサイクル
Cloud9 の環境は EC2 環境と SSH 環境の 2 種類があります。EC2 環境は Cloud9 が自動的に EC2 インスタンスを起動・管理し、IDE を閉じてから一定時間 (デフォルト 30 分) 経過するとインスタンスを自動停止します。この自動休止機能により、開発していない時間帯のコストを抑えられます。インスタンスタイプは t2.micro から m5.large まで選択でき、機械学習のプロトタイピングなど計算リソースが必要な場合は大きめのインスタンスを指定します。SSH 環境は既存のオンプレミスサーバーや他クラウドのインスタンスに接続する方式で、Cloud9 のエディタ機能だけを利用したい場合に適しています。EC2 環境のストレージはデフォルトで 10 GB の EBS ボリュームですが、Docker イメージのビルドや大規模プロジェクトでは不足するため、環境作成後に EBS ボリュームを拡張するスクリプトを実行するのが定番の運用です。VPC とサブネットの指定により、プライベートサブネット内のリソースに直接アクセスできる開発環境を構築できます。
コラボレーション機能とリアルタイム共同編集
Cloud9 の際立った機能がリアルタイムコラボレーションです。環境のオーナーが他の IAM ユーザーを招待すると、複数のエンジニアが同時に同じファイルを編集でき、各ユーザーのカーソル位置がリアルタイムで表示されます。ペアプログラミングやコードレビューをリモートで実施する際に、画面共有ツールよりも効率的に作業できます。招待時にはアクセス権限を読み取り専用 (read-only) または読み書き可能 (read-write) で設定でき、ジュニアエンジニアのコードをシニアがリアルタイムでレビューしながら指導するといった使い方が可能です。共有環境ではターミナルも共有されるため、コマンドの実行結果を全員が同時に確認できます。ただし、ターミナルの共有は同じ OS ユーザーで実行されるため、機密性の高い操作 (シークレットの参照など) を行う場合は注意が必要です。チャット機能も内蔵されており、コードの特定行について議論しながら修正を進められます。
AWS サービスとの統合と SAM ローカルテスト
Cloud9 環境には AWS CLI、SAM CLI、Git、Docker がプリインストールされており、環境構築の手間なく AWS 開発を開始できます。Lambda 関数の開発では、SAM CLI を使ったローカルテストが特に便利です。sam local invoke コマンドで Lambda 関数をローカルの Docker コンテナ内で実行し、実際のランタイム環境に近い状態でデバッグできます。Cloud9 のビルトインデバッガは Node.js と Python のステップ実行に対応しており、ブレークポイントの設定、変数の監視、コールスタックの確認が IDE 上で完結します。CloudFormation テンプレートの編集では、YAML のシンタックスハイライトとオートインデントが効き、リソースタイプの入力補完も機能します。IAM の認証情報は EC2 インスタンスプロファイル経由で自動的に取得されるため、アクセスキーをハードコードする必要がありません。AWS Toolkit プラグインを有効にすると、Lambda 関数の一覧表示、CloudWatch Logs の閲覧、S3 バケットのブラウジングなどを IDE のサイドバーから直接操作できます。