AWS Cloud9で共有環境を用意する手順

AWS Cloud9の利点の１つが、同じ環境を複数人で共有できることです。
同じファイルを同時に更新したり、チャットでコミューケーションをとったりできます。
AWS Cloud9で共有環境を用意し、複数人で開発を行えるようにするまでの手順をまとめました。

# [1] IAMユーザーを用意する
Cloud9にアクセス出来るユーザーを準備します。

## [1-1] ユーザー権限の違い
AWSCloud9Administrator, AWSCloud9User, AWSCloud9EnvironmentMember、3種類のポリシー(権限)が存在します。
3種類の違いは、大雑把にまとめると以下の通りです。

| ポリシー                    | 作成 | 編集(*1) | 削除   | アクセス |
|----------------------------|------|---------|--------|--------|
| AWSCloud9Administrator     | OK   | OK      | OK     | OK |
| AWSCloud9User              | OK   | NG(*2)  | NG(*2) | OK |
| AWSCloud9EnvironmentMember | NG   | NG      | NG     | OK

*1：環境の編集のことであり、ファイルの編集はAWSCloud9EnvironmentMemberでも可能。
*2：自身で作成した環境の編集・削除は可。

詳しくは下記を参照。
 [AWS Cloud9 のアクセス権限リファレンス](https://docs.aws.amazon.com/ja_jp/cloud9/latest/user-guide/auth-and-access-control.html)

## [1-2] AWSCloud9User権限ユーザー作成
自身で環境の作成も可能なAWSCloud9Userを作成します。

### [1-2-1] ユーザー名とアクセスの種類
ユーザー名やパスワードは自分の好きなものにして問題ありません。
今回は、マネジメントコンソールからのみ使用するので、アクセスの種類は「AWS マネジメントコンソールへのアクセス」を選択します。

![01.Cloud9User作成1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/345798/a2c1299d-d4b0-72c8-0237-cf690e647a1c.jpeg)

### [1-2-2] アクセス許可の設定
アクセス許可の設定では[既存のポリシーを直接アタッチ]を選択します。
ポリシーのフィルタで検索欄に"cloud9"と入力すると、上述の3つのポリシーが表示されます。
その中から「AWSCloud9User」を選択します。

![02.Cloud9User作成2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/345798/b972c97f-e522-55ef-13fe-0ef04417a741.jpeg)

### [1-2-3] その他の設定
以降の項目はデフォルトのままにして作成を進めました。

## [1-3] AWSCloud9EnvironmentMember権限ユーザー作成
選択するポリシー以外は、AWSCloud9Userと同様に作成します。

![04.Cloud9Member作成2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/345798/cd4362a8-6cd0-5a63-f283-afa73cdf11a8.jpeg)

# [2] 共有環境を作る

## [2-1] ルートユーザーでCloud9環境作成
共有するからと言って特別な手順はなく、1人で開発するときと同様に環境を作成します。

![05.共有環境の構築.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/345798/d9e77da7-1c56-ef78-1cf6-4c7ab091e365.jpeg)

## [2-2] 他のユーザーと共有
環境の作成が終わったら、早速ほかのユーザーと共有してみます。
右上の[Share]をクリックします。

![11.環境のシェア.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/345798/f87b8f51-3e87-eb5b-f209-34af573cdfdb.jpeg)

## [2-3] AWSCloud9User権限ユーザーを招待
[Share]を押すと、以下の画面が表示されます。
ユーザーを招待することで、作成した環境を共有します。
シェアしたいユーザーの名称を入力し、R (Readのみ可), R/W (Read/Write可)のいずれを選択し、[Invite]をクリックします。
以上で、AWSCloud9User権限ユーザーの招待が完了しました。

![12.Cloud9Userをシェア1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/345798/3d332313-81ba-f035-3a25-97c734b72dd0.jpeg)


# [3] 共有環境を使用する

## [3-1] 2つのユーザーで同時編集
rootユーザーと先ほど招待したユーザーとで、同じファイルを編集してみたところ、ほとんど遅延なくお互いの画面に編集内容が反映されました。
ソースコードの行No.の左側に色が付いていますが、ユーザーごとに異なる色になっています。
どのユーザーがどの行を編集したのかが分かるようになっています。

![13.Cloud9Userの画面.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/345798/ef6f5c0e-10dc-c226-5a4b-121e0da9f7a1.jpeg)

## [3-2] 3つのユーザーで同時編集
もう1人ユーザーを招待し、同じファイルを編集した場合も同様です。

![14.Cloud9Memberの画面.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/345798/202f2b4b-8b6f-8261-3a3a-ac58a286feac.jpeg)

## [3-3] チャット機能
チャットは画面右側に表示されます。
絵文字等はなく、最低限のチャットに必要な機能だけが提供されているという印象です。

![21.チャット.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/345798/a93803bc-7baa-3fb0-51c1-e5daf94b2954.jpeg)

# 終わりに
かなり簡単に共有環境を用意することができました。
実際に複数人で開発するにあたっては、色々とルールを決める必要はありでしょう。
しかしながら、数人でさくっと何かを作る、コードレビューを行う、といった場面では便利なこと間違いなしということが分かりました。

# 参考文献
IAMユーザーのポリシー(権限)に関して、下記記事を参考にさせていただきました。
[【AWS】cloud9へのアクセスのみが可能なユーザーを作成してコードを共有してみる](https://qiita.com/keid131/items/1c34d0c20b49bcfeca02)