Amazon SageMakerとGitHubの連携手順|3経路の設定とPAT権限
Amazon SageMaker AIからGitHubリポジトリを扱う経路は、ノートブックインスタンスへの関連付け、Studio上のJupyterLab、Code Editorの3つに分かれます。どれを選ぶかで認証情報の持たせ方もクローン先のパスも変わるため、先に経路を決めてから設定に入ると手戻りが出ません。ここでは経路ごとの設定手順に加えて、つまずきやすいAWS Secrets Managerのシークレット要件と、2026年6月30日にサポートが終了したAmazon Linux 2ノートブックインスタンスへの対応をまとめます。
まとめ
- プライベートリポジトリの認証には個人用アクセストークン(PAT)を使います。classicなら
repoスコープ、fine-grainedならContentsのRead and writeが最小権限です。 - ノートブックインスタンスに関連付ける場合、Secrets Managerのシークレットは「名前に
sagemakerを含む」「ステージングラベルがAWSCURRENT」「usernameとpasswordの2キーのJSON」の3条件を満たさないとコンソールの候補に出てきません。 - Studioはローカルにクローンされたリポジトリしか参照しません。リポジトリURLをドメインやユーザープロファイルに登録しても、Studio内でのクローン操作は別途必要です。
- Amazon Linux 2のノートブックインスタンスは2026年6月30日にサポートが終了しました。2026年7月1日以降は新規作成も停止インスタンスの再起動もできず、2026年8月1日以降はAWS側が残存インスタンスをAL2023へ順次アップグレードする段階に入っています。
- 「sagemaker sdk github」で探されるSDK本体は
aws/sagemaker-python-sdkです。v3系はEstimator/Model/Predictorを引き継がない破壊的変更を含みます。
以下、経路の選び分けから権限設定、期限対応までを順に整理します。
SageMakerとGitHubをつなぐ3経路の違いと選び分け
2024年12月3日にAmazon SageMakerはAmazon SageMaker AIへ改称され、同名の「Amazon SageMaker」はデータ・分析・AIを束ねる次世代の統合プラットフォームを指すようになりました。変わったのは呼び名だけです。sagemakerのAPIネームスペース、AWS CLIコマンド、AWS::SageMakerで始まるCloudFormationリソース、コンソールURLはいずれも後方互換のため据え置かれています。GitHub連携は、このSageMaker AI側の機能にあたります。
| 経路 | 認証情報の置き場所 | 既定のクローン先 |
|---|---|---|
| ノートブックインスタンス | AWS Secrets Manager | /home/ec2-user/SageMaker |
| Studio(JupyterLab) | クローン時に対話入力 | クローン時に指定 |
| Code Editor | クローン時に対話入力 | /home/sagemaker-user/ |
差が最も大きいのは認証情報の扱いです。Gitリポジトリをアカウント側のリソースとして登録し、そこにSecrets Managerのシークレットを紐づけられるのはノートブックインスタンスだけで、インスタンス起動時に自動でクローンされます。StudioとCode Editorはアカウント側のリポジトリリソースを参照せず、プライベートリポジトリで認証が必要な場合にユーザー名とPATの入力を求める方式です。チーム全体に同じ認証情報を配りたいならノートブックインスタンス、開発者ごとにトークンを分けたいならStudio系が扱いやすくなるでしょう。
GitHub個人用アクセストークンに必要な権限とスコープ設定
GitHubはHTTPS経由のGit操作についてパスワード認証を廃止しており、公式ドキュメントもパスワードを求められた場面では個人用アクセストークンを入力するよう案内しています。したがってSageMaker側に渡す認証情報はPATになります。AWS側のドキュメントでも、GitHubリポジトリではpasswordフィールドにPATを使うことが推奨され、二要素認証を有効にしている場合は必須と明記されています。
| トークン種別 | 必要な権限 | アクセス範囲 |
|---|---|---|
| classic | repoスコープ |
組織と個人の全リポジトリ |
| fine-grained | ContentsのRead and write | 単一ユーザーまたは単一組織 |
classicトークンはrepoを選ぶだけで済む反面、権限が「自分がアクセスできる組織の全リポジトリと個人の全リポジトリ」に及びます。組織側でSAML SSOの認可やトークンポリシーが設定されていれば実際の到達範囲はさらに絞られますが、その制御はGitHub管理者に委ねる形になります。ノートブックインスタンスのようにシークレットを共有する構成なら、リポジトリ単位で対象を限定できるfine-grainedトークンのほうが影響範囲を読みやすいはずです。fine-grainedのContentsはwriteがreadを含む設計のため、プッシュまで行う用途でもRead and writeだけで足ります。無期限のトークンも作成できますが、組織やEnterpriseが最大有効期間ポリシーを設定している場合はブロックされます。
ノートブックインスタンスにGitHubリポジトリを関連付ける手順
ノートブックインスタンスのノートブックは、インスタンスを停止・削除すると失われます。Gitリポジトリを関連付けておけばインスタンスの寿命を超えてノートブックが残り、別インスタンスで作業する同僚とも同じリポジトリを共有できるようになります。1台のインスタンスに紐づけられるのは、既定リポジトリ1つと追加リポジトリ最大3つの合計4つです。
Secrets Managerシークレットが満たすべき3条件
プライベートリポジトリを扱うには、認証情報をAWS Secrets Managerのシークレットとして先に作成します。SageMaker AI側の要件が細かく、1つでも外すとコンソールのシークレット選択欄に候補として現れません。条件は、名前に文字列sagemakerを含めること、ステージングラベルがAWSCURRENTであること、そして値が次の形式であることの3点です。
{
"username": "your-github-username",
"password": "github_pat_xxxxxxxxxxxxxxxxxxxx"
}
シークレットの作成に使うIAMロールにはsecretsmanager:GetSecretValueの許可が要ります。ローテーションやリソースポリシーの設計まで踏み込むならAWS Secrets Managerとは?料金・ローテーションと採用判断を実装者目線で解説もあわせて確認してください。なお、アカウントのリソースとして登録せずパブリックリポジトリをそのまま関連付ける方式も選べますが、この方式では認証情報を一切指定できません。
SageMaker AIコンソールでのリポジトリ登録手順
コンソールでは、左メニューのNotebookからGit repositoriesを開き、Add repositoryへ進みます。リポジトリの種別はAWS CodeCommitとGitHub/Other Git-based repoの2択です。CodeCommitは2024年7月にAWSが新規受付を停止していましたが、2025年11月24日に一般提供へ復帰し、29リージョンで新規アカウントからもリポジトリを作成できる状態に戻りました。GitHubを使う場合は後者を選択します。
入力欄で注意する点は2つあります。SageMaker AI上でのリポジトリ名は63文字以内で、使える文字は英数字とハイフンに限られること。そしてリポジトリURLにユーザー名を含めてはいけないことです。https://[email protected]/org/repo.gitのような形式ではなく、認証情報はSecrets Manager側に分離します。登録後、ノートブックインスタンスの作成画面でこのリポジトリを既定リポジトリまたは追加リポジトリとして指定してください。
クローン先ディレクトリとノートブック上のGit操作
関連付けたインスタンスを開くと、既定リポジトリの中で起動します。既定リポジトリは/home/ec2-user/SageMakerの直下に配置され、追加リポジトリも同じ階層に並ぶため、切り替えにはフォルダを1つ上へ移動する操作が必要です。Gitコマンドはノートブックのセルから直接実行できます。
!git checkout -b feature-branch
!git add sample.ipynb
!git commit -m "Update training notebook"
!git push origin feature-branch
JupyterLabインターフェースで開いた場合はjupyterlab-git拡張が導入済みで、左メニューに関連付けたリポジトリが並び、コマンドラインを使わずに差分確認やコミットを行えます。コミット単位の切り方やブランチ運用は連携設定とは別の設計課題です。コミットとは?Gitが変更履歴を記録する仕組みと粒度・メッセージ設計を実装視点で解説とブランチとは?バージョン管理で開発を分岐させる仕組みと使い方を実装視点で解説を土台にチームのルールを決めてください。
StudioとCode EditorでのGitHubリポジトリのクローン手順
Studioは、ノートブックインスタンスのようなアカウント側のリポジトリリソースを参照しません。AWSの表現では「Studioはローカルのgitリポジトリにのみ接続する」ため、リポジトリURLを登録しても、実際に使うにはStudio内でのクローン操作が別途必要になります。
ドメインとユーザープロファイルへのリポジトリURL登録
管理者は、よく使うリポジトリURLをドメインまたはユーザープロファイルに登録しておけます。ドメインに登録したURLは全ユーザーへ継承され、ユーザープロファイルに登録したURLはそのユーザーだけに表示される仕組みです。利用者はクローン画面で候補から選ぶだけで済みます。
aws sagemaker update-domain --region ap-northeast-1 --domain-id d-xxxxxxxxxxxx \
--default-user-settings JupyterLabAppSettings={CodeRepositories=[{RepositoryUrl="https://github.com/org/repo.git"}]}
aws sagemaker update-user-profile --domain-id d-xxxxxxxxxxxx --user-profile-name data-scientist-01 \
--user-settings JupyterLabAppSettings={CodeRepositories=[{RepositoryUrl="https://github.com/org/repo.git"}]}
リストには複数のURLを渡せます。プライベートで認証が必要なリポジトリをクローンする際は、ユーザー名とPATの入力を求めるプロンプトが表示されます。ここで入力するのは利用者本人のトークンなので、誰がどのリポジトリに書き込めるかはGitHub側の権限で制御できる形になります。
Code Editorでのクローンと制限モードの解除
Code Editorでは、左ナビゲーションのExplorationからExplorerを開き、Clone Repositoryを選んでリポジトリURLを入力します。クローン先フォルダを指定でき、既定は/home/sagemaker-user/です。クローン後はOpen in New WindowまたはOpenで開きます。
初回に「ファイルの作成者を信頼するか」という確認が出ます。ここで信頼しないほうを選ぶとrestricted modeになり、タスクの実行が禁止され、デバッグが無効化され、ワークスペース設定が適用されず、拡張機能の機能も制限されます。学習用に取り込んだ外部リポジトリを読むだけならrestricted modeのままで構いません。自社のリポジトリで開発するならRestricted ModeバナーのManageから信頼を与えて解除してください。
Amazon Linux 2ノートブックインスタンスとStudio Classicの期限対応
AWS公式ドキュメント側では、2024年時点の手順を前提にできなくなる期限が2つ確定しています。これを押さえておかないと、手順どおり操作しても環境そのものを作れません。
AL2ノートブックインスタンスの終了スケジュール
| 日付 | 内容 |
|---|---|
| 2025-06-30 | JupyterLab 1と3が非推奨 |
| 2026-05-15 | 新規作成の既定がAL2023へ |
| 2026-06-30 | AL2のサポート終了 |
| 2026-07-01 | 新規作成・再起動が不可 |
| 2026-08-01 | AL2023への自動アップグレード開始 |
対象はnotebook-al2-v1、notebook-al2-v2、notebook-al2-v3の3つのプラットフォーム識別子です。2026年6月30日を過ぎたAL2にはセキュリティ更新もバグ修正も提供されません。放置は選べません。AWSは、AL2がPyTorch 2.10.0未満の脆弱性CVE-2026-24747の影響を受け、OSの制約上AL2側では修正できないと明記しています。
AL2023への移行手順と確認事項
移行はインプレースのプラットフォーム更新で、EBSボリューム上の/home/ec2-user/SageMaker/配下のノートブックやデータセットは保持されます。インスタンスを停止し、UpdateNotebookInstanceでPlatformIdentifierをnotebook-al2023-v1へ変更して起動するだけです。
aws sagemaker stop-notebook-instance --notebook-instance-name my-notebook
aws sagemaker update-notebook-instance --notebook-instance-name my-notebook \
--platform-identifier notebook-al2023-v1
aws sagemaker start-notebook-instance --notebook-instance-name my-notebook
作業後に真っ先に確認すべきなのはライフサイクル設定スクリプトです。AL2023はパッケージマネージャがyumからdnfへ変わるため、sudo yum install -y htopのような行はsudo dnf install -y htopへ書き換えます。AWSが移行時の差分として挙げるPyTorchのバージョンは2.6.0から2.10.0へ上がり、使えないインスタンスタイプもml.p2だけだったものがml.p3、ml.p3dn、ml.inf1、ml.g3まで広がります。GPUインスタンスを指定している環境では事前の確認が欠かせません。
Studio Classicで使えなくなった操作
2023年11月30日に従来のStudio体験がStudio Classicへ改称され、その後は保守フェーズへ移りました。2024年12月31日で保守が終了し、更新とセキュリティ修正の提供も止まっています。新規ドメインはすべて新しいStudioが既定です。2025年1月31日以降は、Studio Classic内でJupyterLab 3のノートブックを新規作成することも、既存ノートブックを再起動・更新することもできません。既存のStudio Classicアプリケーションに残された操作は停止と削除だけで、新規作成やオンボーディングの導線はありません。
つまり、Studio ClassicのGit拡張を前提にした手順は現在再現できないということです。新しいStudioのJupyterLabかCode Editorでのクローン手順へ読み替えてください。既存ドメインは自動では移行されないため、移行作業はユーザー側が担います。
SageMaker Python SDKのGitHubリポジトリと導入方法
「sagemaker sdk github」で探されているのは、多くの場合コンソールの連携設定ではなくSDKのソースコードです。Amazon SageMaker Python SDKはaws/sagemaker-python-sdkとしてGitHubで公開され、ライセンスはApache-2.0です。PyPI上の最新版は3.18.0で、日本時間の2026年7月31日に公開されました。動作要件はPython 3.10以上です。
ここで押さえておきたいのは、v3のsagemakerパッケージが実体を持たないという点です。3.18.0のwheelを展開してもdist-infoのメタデータしか入っておらず、top_level.txtは空のまま。機能はsagemaker-core、sagemaker-train、sagemaker-serve、sagemaker-mlopsの4パッケージへ分割され、sagemakerはそれらを束ねる依存宣言だけを持ちます。そのためsagemaker.__version__ではバージョンを取得できません。
pip install sagemaker
pip show sagemaker
さらに、v3はEstimator、Model、Predictorとそのサブクラスを引き継がない破壊的変更を含みます。公式READMEも「Older interfaces such as Estimator, Model, Predictor and all their subclasses will not be supported in V3.」と明記し、学習はModelTrainer、推論はModelBuilderへ統合されました。PyPI上のclassifierは3.18.0時点でもDevelopment Status :: 3 – Alphaのままです。v2系の更新も続いており、2.257.5が日本時間の2026年7月15日に公開されています。v2前提の既存パイプラインを動かし続けるなら、READMEが案内する形でバージョンを固定してください。
pip install sagemaker==2.*
SDKで何ができるかを実例から掴みたい場合はAWS SageMaker JumpStartを使った生成AI活用の始め方と課題が入口になります。
連携でつまずく箇所と回避策
設定値の読み落としで起きるエラー
AWSのドキュメントがNoteとして繰り返し示している前提条件は、次の5点に集約されます。設定手順そのものより、これらの読み落としで止まる例が目立ちます。
- Secrets Managerのシークレット名に
sagemakerが入っていない。作成自体は成功するので、コンソールの選択リストに出てこないという形で気づきます。 - リポジトリURLにユーザー名を埋め込んでいる。認証情報はシークレット側に分離する設計のため、URLへの埋め込みは想定されていません。
- 二要素認証を有効にしたアカウントでパスワードを登録している。
passwordフィールドに入れるのはPATです。 - パブリックリポジトリをアカウントのリソースにせず直接関連付けた状態で、後から認証が必要になった。この方式では認証情報を指定できないため、リソースとして登録し直す必要があります。
- Studioでリポジトリを登録しただけで使えると考えている。登録は候補リストへの追加であって、クローンは別操作です。
Git連携と実験管理の役割分担
設計面では、ノートブックインスタンスへのGit関連付けを実験管理の代わりにしないことをおすすめします。GitはノートブックのソースをEBSの外へ逃がす手段としては有効ですが、パラメータと評価指標の追跡やモデルの系譜管理までは担いません。この線引きを曖昧にしたまま運用すると、リポジトリに実行結果込みのノートブックが積み上がり、差分が読めなくなります。役割分担の考え方はMLOpsツール比較|実験管理・パイプライン・監視の主要スタックと選定基準が参考になります。
よくある質問
SageMakerとGitHubの連携にアカウントのパスワードは使えますか
使えません。GitHubはHTTPS経由のGit操作でパスワード認証を廃止しており、公式ドキュメントもパスワードを求められた場面では個人用アクセストークンを入力するよう案内しています。AWS側でも、二要素認証を有効にしている場合はGitサービスプロバイダが発行したPATの入力が必要と明記されています。SageMakerのコンソールやシークレットに「password」という項目名が残っているのは形式上の都合で、入れる値はPATです。
1台のノートブックインスタンスに何個のリポジトリを関連付けられますか
既定リポジトリを1つと、追加リポジトリを最大3つまでの合計4つです。リポジトリの種別はAWS CodeCommit、GitHub、その他のGitサーバーのいずれでも構いません。ただし認証情報を指定できるのは、アカウントのリソースとして登録したリポジトリに限られます。パブリックリポジトリを直接関連付ける方式では、後からシークレットを付け足せません。
Studio ClassicのGit拡張はまだ使えますか
Studio Classicは2024年12月31日に保守が終了し、2025年1月31日以降はJupyterLab 3のノートブックを新規作成することも既存ノートブックを再起動・更新することもできません。残された操作は停止と削除のみで、新規オンボーディングの導線もありません。新しいStudioのJupyterLabまたはCode Editorでのクローン手順に切り替えてください。既存ドメインは自動移行されないため、移行作業はユーザー側で計画します。
SageMaker Python SDKのリポジトリはどれですか
GitHub上のaws/sagemaker-python-sdkです。ライセンスはApache-2.0で、PyPIの最新版は日本時間2026年7月31日公開の3.18.0、動作要件はPython 3.10以上です。v2系も更新が続いており、2.257.5が日本時間2026年7月15日に公開されました。v2前提のコードを動かすならpip install sagemaker==2.*でバージョンを固定します。