AI.RL.LYsのcursheyです。
今回はAmazon SageMakerとGitHubのプライベートリポジトリのGit連携をさせるのに詰まってしまったので、その時の手順を備忘録として記事にしたいと思います。大まかな手順は、
- GitHubの個人用アクセストークンの作成
- SageMakerのGitリポジトリの作成
- SageMakerのノートブックインスタンスの作成
となります。
GitHubの個人用アクセストークンの作成
GitHubのプライベートリポジトリをユーザ名とパスワードを入力する必要がありますが、このパスワードは個人用アクセストークンを入力するのがベストプラクティスとして推奨されています。なので、まずはこれを作ります。なお、1年以上使われていないトークンは自動的に削除されますので注意してください。
-
GitHubの個人アカウントにログインします。
-
トークンに命名をします。
-
トークンが作成されます。この時、別ページに移動すると、このトークンを再確認することはできないので、必ず控えておきます。
-
作成したトークンの「Enable SSO」をクリックし、「Authorize」をクリックします。
10-1. トークンをアップデートした時も、「Disable SSO」をクリックし、「Authorize」をクリックする必要があります。
Gitリポジトリの作成
ここではAmazon SageMakerコンソールに入り、Gitリポジトリを作成します。Gitリポジトリは必ずしも必要ではなく、Jupyter上のターミナルからsshキーを作成し、公開鍵をリポジトリのdeploy keyに登録することでもgit連携をすることができます。しかし、ノートブックインスタンスを落とすたびにこの操作をやり直す必要があります。また、アクセストークンは操作のスコープを決定でき、SageMakerからは実行したくない操作を制限できますのでこちらの方がおすすめです。
-
AWS環境にログインし、SageMakerのコンソールを開きます。
-
「Amazon SageMaker リポジトリ名」を命名します。この命名はGitHubに作成しているリポジトリ名と一致させる必要はありませんが、アカウントおよびAWSリージョン内で一意にする必要があります。
-
「Git リポジトリの URL」に連携させるリポジトリのURLを入力します。このとき、URLに**.git**は付けないようにしてください。
-
Git 認証情報を選択します。「シークレットがありません」を選択した場合、プライベートリポジトリと連携ができないので選択しないようにしてください。
7a. 「既存のシークレットの使用」を選択した場合
7a-1.「シークレットの検索」から使用するシークレットを探して選択します。
7b. 「シークレットの作成」を選択した場合
7b-1. 「シークレット名」を命名し、GitHubのユーザー名を「ユーザー名」、作成した個人用アクセストークンを「パスワード」にそれぞれ入力します。
7b-2. 「シークレットの作成」をクリックします。
SageMakerの設定
ここでのGit連携に必要な操作はGitリポジトリを選択することだけですが、IAMロールの設定は必要に応じて設定するようにしてください。また、ネットワークは一度設定してしまうと後から変更できなくなりますので、制限がある場合は確認してから設定するようにしてください。
-
AWS環境にログインし、SageMakerのコンソールを開きます。
-
「アクセス許可と暗号化」は必要に応じて設定します。
-
「Git リポジトリ」で上記で作成したGitリポジトリを選択します。
-
「ノートブックインスタンスの作成」をクリックし、作成されます。
一連の手順が終わりましたらノートブックインスタンスの管理画面に戻ります。作成したノートブックインスタンスのステータスが「InService」になりましたら起動できますので、Jupyterを開いてgit連携ができているか確認しましょう。