AWS Cloud9とAWS CodeCommitを利用した開発環境の構築

AWS

AWSのサービスを利用した開発環境の構築です。
DevOps関連のサービスは多数ありますが今回はAWS Cloud9とAWS CodeCommitを利用します。

AWS Cloud9とは

クラウドベースの統合開発環境でブラウザを使ってコードを書いたりデバッグを行うことが出来ます。
JavaScript、Python、PHPなどの主要な言語を利用するための環境が準備されるので
スムースに簡単に開発を始めることが出来ます。
ただしパッケージのアップデート等はユーザ管理になります。

その他にもAWS Lambdaのローカルテスト環境や、コードをリアルタイムで共有しペアプログラミングする機能、AWS CLIのターミナル機能なども備えておりAWSサービスを開発するにはとても便利なサービスです。
  
Cloud9自体は無料で利用が出来ますが、実体はEC2、EBSサービスなどが使われるので
それらの利用料金だけは必要になります。

AWS Cloud9の作成場所/セキュリティ

AWS Cloud9はデフォルトVPC、または指定のVPCに作成することができ、プライベートサブネットに作成することも可能です。
ただし、プライベートサブネットに作成するNATやVPCエンドポイントを用意する必要があったり、AWS CLIの利用に制限があるので注意が必要です。

AWS Cloud9では利用ユーザに対してAMTC(AWS managed temporary credentials)を利用して一時クレデンシャルを発行することで利用者が自身のIAM権限と同等の操作が出来る仕組みになっていますが制限があります。

AWS Cloud9が構築EされたC2インスタンスにはグローバルIPアドレスが付与されるのですがAWS APIコールの送信元IPアドレスが このグローバルIPアドレスに制限されます。
そのためプライベートサブネットからNATやVPCエンドポイント経由でAPIコールを行った場合は呼び出しは失敗します。

AMTCを無効にすることでこの制限は回避は出来ますが運用・構築面のメリットが失われてしまうので出来れば回避したいところです。
AWS Cloud9専用のVPC・パブリックサブネット構築するのが良いかと思います。
参考:AWS Cloud9 と IAM の連携方法
参考:AWS Cloud9環境で利用できる一時クレデンシャル『AWS Managed Temporary Credentials』について調べてみた

AWS Cloud9との接続方法

AWS Systems Manager経由か、SSHでの接続になります。
AWS Systems Manager経由で接続する場合は、SSHポートも閉じれるのでよりセキュアになります。
今回もAWS Systems Manager経由で接続する方法で構築します。

AWS Cloud9用VPCとサブネットの作成

AWS Cloud9専用のVPCとサブネットを作成します。今回はパブリックサブネットを作成します。
1.インターネットゲートウェイを作成してVPCにアタッチ
2.ルートテーブルを作成してパブリック用サブネットに割当
3.上記のルートテーブルのデフォルトルートにインターネットゲートウェイを設定
4.今回はAWSが自動に割当するEIPとホスト名でアクセスするので
  VPCの「DNS解決」と「DNSホスト名」は有効にし、サブネット設定の
  「パブリック IPv4 アドレスを自動割り当て」も有効にする

AWS Cloud9環境の作成

AWSコンソールから「Cloud9」を選択し、「Create environment」を押下。
名前には任意の名前を入れます。
 
今回はAWS Systems Managerを利用した環境を作成するので環境タイプでは以下を選択。

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

プラットフォームとインスタンスタイプは任意のものを選択。
「Cost-saving setting」はAWS Cloud9を利用していない時に自動でサービスを停止するまでの時間を指定します。

「Network settings」でVPCとサブネットを指定します。
今回はAWS Cloud9用に作成したVPCのパブリックサブネットを指定します。詳しくは以下を参照。
AWS Cloud9 開発環境の VPC 設定

AWS Cloud9に接続出来ないとき

環境設定が正しくてもCloud9の接続に失敗するケースがあるようです。
私の場合はMacのSafari/Chromeから接続出来ないケースがありましたが、以下の対応をすることで改善されました。
・Safariの環境設定 > プライバシー > Webサイトによるトラッキングの設定で
「サイト超えトラッキングを防ぐ」のオプションをオフにする
・EC2の再起動

AWS CodeCommit環境の作成

AWS Cloud9環境にAWS CodeCommitリポジトリのクローンを作成します。

■リポジトリの作成
AWSコンソールを開いて「CodeCommit」サービスを選択し、「リポジトリを作成」から任意の名前のリポジトリを作成します。

■HTTPS接続用のGit認証情報の作成
「IAM」のコンソールからユーザを選択し、「認証情報」のタブから作成します。

■AWS CLI 認証情報ヘルパーを設定
HTTPS 接続用の AWS CLI 認証情報ヘルパーを設定します。

git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true

■リポジトリクローンの作成
CodeCommitのコンソールからリポジトリを選択すると以下のようなリポジトリクローン用のURIが表示されています。
Cloud9でクローンを作成したいフォルダに移動してクローン用コマンドを実行。

git clone https://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/MyDemoRepo

■gitの共通設定
コミット用のユーザ名、メールアドレスを設定

git config --global user.name "Your Name"
git config --global user.email you@example.com

■ブランチ作成用に初回コミットとPush
開発用にブランチ等を作成すると思いますが、何もないとブランチも作成出来ないので
まずは空のコミットを行いPushします。
これでまずはmasterブランチが出来ていると思いますので、ここから
開発用ブランチを作成してください。

git commit --allow-empty -m "first commit"
git push origin master

以上

タイトルとURLをコピーしました