はじめに
AWS Cloud9は、ブラウザのみでコードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE) です。IDEの画面はこんな感じです。
AWS Cloud9で、AWS Cloud9サービスからCloud9を動かすEC2インスタンス or VMへの接続方式は以下の3種類があります。
- ダイレクトアクセス
- Systems Manager経由
- SSH接続
この記事ではSSH接続方式の場合のCloud9のセットアップ手順を説明します。
結論としては面倒なので、EC2インスタンスタイプで特にこの方式を採用するメリットはないと思います。しいて言えばCloud9をEC2インスタンス以外で動作させたい場合はこの方式になるのではないでしょうか。
手順
インスタンス作成
インスタンス作成
#設定が必要なパラメータ PROFILE="<対象アカウントのプロファイル(デフォルトプロファイル利用時はdefaultを指定)>" REGION="<インスタンスを作成するリージョンのコード。東京リージョンならap-northeast-1>" SUBNET_ID="<パブリックサブネットのID>" SG_ID="<インバウンドでsshを許可しているセキュリティーグループのID>" KEYNAME="<EC2インスタンスにSSHログインするためのキーペア名>" #基本固定で良いパラメータ INSTANCE_TYPE="t2.micro" #AMI ID取得(ubuntuイメージ利用) UBUNTU_AMI_ID=$(aws --profile ${PROFILE} --region ${REGION} --output text \ ec2 describe-images \ --filters 'Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-????????' \ 'Name=state,Values=available' \ --query 'reverse(sort_by(Images, &CreationDate))[:1].ImageId' ); echo " UBUNTU_AMI_ID = ${UBUNTU_AMI_ID} " #タグ設定 TAGJSON=' [ { "ResourceType": "instance", "Tags": [ { "Key": "Name", "Value": "Cloud9-SshType" } ] } ]' # サーバの起動 aws --profile ${PROFILE} --region ${REGION} \ ec2 run-instances \ --image-id ${UBUNTU_AMI_ID} \ --instance-type ${INSTANCE_TYPE} \ --key-name ${KEYNAME} \ --subnet-id ${SUBNET_ID} \ --security-group-ids ${SG_ID} \ --associate-public-ip-address \ --tag-specifications "${TAGJSON}" ;
Cloud9用ユーザ準備
インスタンスへのログイン
#作成したインスタンスのPublic IP取得 PUBLIC_IP=$( aws --profile ${PROFILE} --region ${REGION} --output text \ ec2 describe-instances \ --filters \ "Name=instance-state-name,Values=running" \ "Name=tag:Name,Values=Cloud9-SshType" \ --query 'Reservations[].Instances[].PublicIpAddress' ); echo "PUBLIC_IP = ${PUBLIC_IP}" #インスタンスへのssh接続 ssh "ubuntu@${PUBLIC_IP}"
Cloud9用ユーザ追加
sudo adduser --quiet --gid 100 --disabled-password cloud9 Changing the user information for cloud9 Enter the new value, or press ENTER for the default Full Name []: Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y
cloud9ユーザでパスワード無しでのsudoでのroot権限利用が必要なため、sudo設定を追加します。
sudo -i echo 'cloud9 ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/99-cloud9-user exit
Cloud9の前提パッケージセットアップ
Python2.7
デフォルトではPython3しかインストールされていないので、追加でのインストールが必要なはずです。
#pythonの確認 python2 --version #インストールされていない場合は下記コマンドでインストール sudo apt update sudo apt install -y python2
Node.js
恐らくインストールされていないので、Node.jsのインストールが必要なはずです。
#Node.jsの確認(多分コマンドがないはず) node --version #Node.jsのインストール sudo apt update sudo apt install -y nodejs
Cloud9のセットアップ
セットアップに必要なパッケージのインストール
パッケージインストールでgccとmakeを利用するため、先にパッケージをインストールします。
sudo apt update
sudo apt install -y make gcc
Cloud9セットアップ
Cのビルドが走り完了までに数分かかります。
curl -L https://raw.githubusercontent.com/c9/install/master/install.sh | bash
(マネコン)Cloud9サービスでの設定
- マネージメントコンソールでAWS Cloud9を表示します。(リージョンはどこでもOK)
Create environment
でCloud9環境作成のウィザードを開きます- 下図を参照に必要項目を入力し公開鍵をコピーします(
Next step
は進まない)
(ubuntu)Cloud9サービスからのSSH接続設定
コピーした公開鍵を、ubuntsのcloud9ユーザに設定します。
sudo -i -u cloud9 echo "[コピーした公開鍵]" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
(マネコン)environment作成の続き
Next step
を実行します- ssh接続が成功すると確認画面が表示されるので、
Create environment
を実行します。