はじめに
【2024年7月25日にCodeCommitの新規利用が終了しているため、既存でサービスを利用していなかった方は、本記事の対象外となります。】
今回は、アプリ開発環境である JupyterLab と、AWSのコード管理ツールである CodeCommit を連携させた事例について、簡易な構成例を紹介します。 連携することで、JupyterLab上で作業中のソースコードをCodeCommitリポジトリに直接保存したり、リポジトリからコードを取得したりすることが可能になり、 ローカル環境でのコード管理が不要となるため、運用負荷を大幅に軽減できます。
なお、本記事はあくまで一例の紹介であり、より効率的かつセキュアな実装方法は他にも存在します。 また、AWSの基本的なサービス作成手順や用語解説は省略していますので、必要に応じて別途調べながら読み進めてください。
JupyterLabとは
JupyterLabは、Jupyter Notebookの次世代バージョンとして開発された統合開発環境(IDE)です。 Jupyter Notebookの機能を含みながらも、より多くの機能や柔軟性を提供しています。 JupyterLabは、コードの編集、デバッグ、データの可視化、そして豊富な拡張機能を提供しています。 私の経験した事例ではPythonのコード開発環境として活用していました。#
AWS CodeCommitとは
AWS CodeCommitは、AWSが提供するマネージド型のソースコード管理サービスです CodeCommitを使用することで、セキュアでスケーラブルなソースコードリポジトリを簡単にセットアップし、 チームでの共有やソフトウェア開発プロセスの管理を行うことができます。 私の事例ではJupyterLabで作成したPythonコードの管理場所として利用していました。
対応の流れ
①NW関連、EC2の作成
②EC2にJupyterLabの導入
③CodeCommit作成
④CodeCommit用IAMとGit認証情報の作成
⑤JupyterLabからCodeCommitへコードの登録
①NW関連、EC2の作成
・VPC、サブネット、ルートテーブル、IGW作成
・作成したサブネットにEC2(Ubuntu)を作成 ※AMI_ID:ami-0db548937a54fa3a7
②EC2にJupyterLabの導入
・EC2にログイン後、JupyterLabをインストール
$ sudo apt update
$ sudo apt install -y python3-pip
$ pip3 install jupyterlab
・jupyterコマンドのパス通し
$ export PATH=$HOME/.local/bin:$PATH
$ source ~/.bashrc
・JupyterLabの起動
サービスが起動され、ブラウザからログインが可能となる。
※ログイン時に使用するため、token=以降の文字列をコピーしておく
※Ctrl+Cにてサービス停止
$ jupyter lab --ip='0.0.0.0'
[I 2024-04-24 08:38:41.000 ServerApp] jupyter_lsp | extension was successfully linked.
~省略~
・ブラウザからJupyterLabのログイン画面を表示
以下の形式でブラウザからログイン
http://<EC2のパブリックIP>:8888
※エラーとなる場合は、EC2のSGを見直す
・JupyterLabへログイン
「JupyterLabの起動」手順でコピーしたtokenの値を「Password or token」に貼り付けてログインを行う
・Gitの拡張機能を追加
「jupyterlab-git」の「install」を選択
・EC2上にてCtrl+Cを行ってサービスを停止し、再度起動する
※拡張機能の追加はサービスの再起動が必要となるため
・上部メニューと左タブにGitが追加されていることを確認
③CodeCommit作成
・CodeCommitの作成と「HTTPSのクローン」を選択してURLを取得する
④CodeCommit用IAMとGit認証情報の作成
・認証情報をメモしておく
・作成が完了したIAMの「認証情報」タブを開くと、「AWS CodeCommitのHTTPS Git 認証情報」の項目が有るので、「認証情報を生成」を選択
・ユーザー名とパスワードが払い出されるため、メモしておく
⑤JupyterLabからCodeCommitへコードの登録
・JupyterLabのGitアイコンを選択
※カレントディレクトリにリポジトリがクローンされるため、適宜変更
・③の手順で取得したCodeCommitのURLを入力して「Clone」を選択
・③の手順で取得したCodeCommitのURLを入力して「Clone」を選択
・CodeCommitのリポジトリがクローンされたことを確認
・必要なコードを作成後、Gitメニューを選択してcommitを選択
・pushを選択し、CodeCommit上にコードが追加されることを確認する
補足
・JupyterLab - CodeCommit間をプライベート環境で利用したい場合、CodeCommitのVPCエンドポイントで実現が可能
※その場合、VPCエンドポイントのSGのインバウンドにEC2のプライベートIPを許可すること
・Cloud9を利用することにより同様の環境をより簡単に構築することが可能です。
ブラウザベースのIDEが準備されており環境の準備が容易となる反面、無料枠を超過することにより利用料の課金も注意が必要なため、利用の規模やニーズに応じて判断が必要となります。
・上記の構成では、CodeCommitに対してGit CloneしたりGit Pushする際に毎回認証が必要となりますが、
git-remote-codecommitを使用し、aws configureで認証情報を予め設定しておくことにより、パスワードの入力を省略することが出来ます。
セキュリティの観点で問題が無い場合は、導入の検討をお勧めします。
参考:https://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/setting-up-git-remote-codecommit.html
まとめ
本記事では、JupyterLabとAWS CodeCommitを連携させることで、効率的なソースコード管理を実現する方法を紹介しました。
JupyterLabで開発したコードを直接CodeCommitに保存・管理することで、ローカル環境の煩雑な運用を減らし、チームでのコラボレーションや開発プロセスの効率化が可能になります。
ただし、今回紹介したのはあくまで一例であり、プロジェクトの規模や要件に応じて、セキュリティや運用の最適化をさらに検討する必要があります。
今後は、例えばCodePipelineなど、CI/CDサービスとの連携を行うことで、さらに強固で自動化された開発環境を目指すことができます。
ぜひ今回の内容を参考に、自身の環境に最適な連携方法を模索してみてください。