LoginSignup
3
1

More than 3 years have passed since last update.

[AWS] [2020/8/18Update] Cloud9がSession Managerに対応しました!

Last updated at Posted at 2020-08-21

Cloud9

AWSが提供する、コードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE)です。
詳細はこちら。

AWS Cloud9

そのCloud9ですが、2020/8/18にアップデートがあり、

Cloud9 は、Cloud9 IDE を使用しているお客様に拡張 VPC サポートの提供を開始します。このリリースでは、イングレスがない (そして、オプションでエグレスがない) プライベートサブネットで Cloud9 環境を作成するためのサポートが追加されています。

AWS Cloud9 が拡張 VPC サポートをリリース

という機能追加が行われました。
つまり、Session ManagerでEC2インスタンスに接続して、そこで開発作業が行えるようになったのです。

Session Manager

System Managerの機能の一部で、インバウンドポートを開いたり、踏み台ホストを維持したり、SSHキーを管理したりすることなく、監査可能なインスタンスを安全に管理できるようになります。
詳細はこちら。

AWS Systems Manager Session Manager

何がうれしくなるの?

これまで、Cloud9を動作させるために必要なEC2インスタンスは、SSH接続する必要がありました。
それはそれで、別にダメではないのですが、よりセキュアな環境を作るために、SSHポートは閉じてSession Managerでセキュアに接続する運用をしたい、と考えていた開発者の方々には、なんかひっかかる部分があったのではないでしょうか。
今回、Session Manager経由でアクセスできるようになったことで、SSHポートを開けることなく、Private でセキュアなEC2インスタンスをCloud9から接続して開発作業が行えるようになるのです。
これは、朗報ではないでしょうか。

準備

準備の章については、既に特定のVPC上に、Session ManagerでアクセスできるPrivate Subnetが構築できている(既にEC2用に使用している)のであれば、スキップしても大丈夫です。

VPC

ルートテーブル

以下の設定で作成します。

  • 名前タグ:わかりやすい名称で
  • VPC:デフォルトのVPCでOKです

InternetGatewayにルーティングしていないことを確認してください。

サブネット

以下設定で作成します。

  • 名前タグ:わかりやすい名称で
  • VPC:デフォルトのVPCでOKです
  • アベイラリティゾーン:指定なし
  • IPv4 CIDRブロック:VPCのCIDR内の適当なCIDRを指定

ルートテーブルは、上で作成したルートテーブルに関連付けるようにしてください。

セキュリティグループ

以下設定で作成します。

  • セキュリティグループ名:わかりやすい名称で
  • 説明:適当にわかりやすい説明を
  • VPC:デフォルトのVPCでOKです
  • インバウンドルール:
    • タイプ:HTTPS
    • プロトコル:TCP
    • ポート範囲:443
    • ソース:サブネットのIPv4 CIDRブロックを指定
  • アウトバンドルール:なし

エンドポイント

以下のエンドポイントを作成してください。

  • com.amazonaws.[リージョン名].ssm
  • com.amazonaws.[リージョン名].ssmmessages
  • com.amazonaws.[リージョン名].ec2messages

上記インタフェースは、いずれも、

  • VPC:デフォルトのVPCでOKです
  • サブネット:上で作成したサブネット
  • アベイラリティゾーン:全部チェックでOKです
  • プライベートDNS名有効にする:チェック
  • セキュリティグループ:上で作成したセキュリティグループ

さらに、下記ゲートウェイを同様に作成してください。

  • com.amazonaws.[リージョン名].s3

各種設定は、以下のようになります。

  • VPC:デフォルトのVPCでOKです
  • ルートテーブル:上記で作成したルートテーブル
  • ポリシー:フルアクセス

Cloud9

では、Cloud9の環境を作成していきましょう。
最初の「Name」については、わかりやすい適当な名前をつけてください。

次に、Configure settingsで、Environment typeに、新しく選択項目が追加になったのです。

  • Create a new no-ingress EC2 instance for environment (access via Systems Manager)

という項目です。これが、EC2インスタンスを作成しつつSession Managerで接続できる環境を意味します。

c91.png

そして、画面の下部ぶある「Network settings(advanced)」を展開し、Session ManagerのEndpointが設定済みのVPCと、Private Subnetを選択してください。

c92.png

そして「Next Step」ボタンを押します。
確認画面が出るので、そのまま「Create environment」ボタンを押すと、Cloud9の環境と、EC2のプロビジョニングが始まります。

c93.png

そして、繋がりました。

c96.png

でも正直、今までとの違いがわかりません。

接続確認

というわけで、ローカルPCのターミナルから、SSHではなくSession Managerで接続してみましょう。

接続するコマンドは、

構文
$ aws ssm start-session --target [インスタンスID]

です。
インスタンスIDを調べるには、起動中のCloud9のコンソールから

$ curl 169.254.169.254/latest/meta-data/instance-id/
i-0d4c52a1c2080013e

と実行してみましょう。自分のインスタンスIDが表示されます。
では、ローカルPCのターミナルから、Session Managerで接続してみましょう。
あと、事前にクレデンシャルの設定をお忘れなく。

$ aws ssm start-session --target i-0d4c52a1c2080013e

Starting session with SessionId: **************
sh-4.2$

繋がりますね、あっさりと。

なお、AWS Cliから、Session Managerでアクセスするためには、Session Manager Pluginが必要です。もしプラグインがインストールされていない場合は、下記よりクライアント環境にあったプラグインをインストールしてください。

(Optional) Install the Session Manager Plugin for the AWS CLI

まとめ

今回のアップデートは、セキュリティ強化のためのアップデートですので、ぜひ開発環境向けに活用したいと思います。
あと、開発するものからAWSのサービスを使う際に、場合によってはアタッチしているVPCにエンドポイントを追加する必要があるかもしれませんので、その辺は必要に応じて追加していってみてください。

関連記事

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1