閉域環境に配置したAmazon SageMaker ノートブックインスタンスのパッケージアップデートをおこなう

2022.12.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは。大阪オフィスの林です。

インターネットアクセスが出来ないVPC環境に配置したAmazon SageMaker ノートブックインスタンスのパッケージアップデートを行いたくなり、S3のゲートウェイエンドポイントを使用したアップデートの方法を検証してみましたので内容をまとめておきたいと思います。

今回やりたいことは下記のイメージです。

  • インターネットアクセスが出来ないVPC環境に配置したAmazon SageMaker ノートブックインスタンス(Amazon Linux 2, Jupyter Lab 1(notebook-al2-v1))がある。
  • S3のゲートウェイエンドポイントを使ってAmazon Linuxの独自のリポジトリからパッケージのアップデートを行う。

やってみた

まずは、インターネットアクセスが出来ないVPC環境に配置するAmazon SageMaker ノートブックインスタンスを作成していきます。
Amazon SageMakerのダッシュボードから「ノートブックインスタンス」-「ノートブックインスタンスの作成」を選択します。

ネットワークの設定で独自に作成したインターネットアクセスが出来ないVPCを選択し、インターネットアクセスもVPCの設定に依存する設定とします。

ノートブックインスタンスが作成できましたので「JupyterLabを開く」からターミナルに接続してみます。

「Terminal」を選択します。

ノートブックインスタンスのデフォルトのリポジトリ設定を見てみると、amzn2-core.repoamzn2-extras.repoが入っているのでS3ゲートウェイエンドポイント経由でパッケージを落としてこれそうです

sh-4.2$ ls /etc/yum.repos.d/
amzn2-core.repo  amzn2-extras.repo  docker-ce.repo  neuron.repo  nvidia-docker.repo  vbatts-shadow-utils-newxidmap-epel-7.repo
sh-4.2$

今回はamzn2-core.repoamzn2-extras.repoがあれば最低限良いと思うのでその他のリポジトリは無効化しておきます。

  • 有効化のリポジトリ
    sh-4.2$ yum repolist
    Loaded plugins: dkms-build-requires, extras_suggestions, langpacks, priorities, update-motd, versionlock
    amzn2-core                                                                                                                                                                          | 3.7 kB  00:00:00     
    amzn2extra-docker                                                                                                                                                                   | 3.0 kB  00:00:00     
    amzn2extra-kernel-5.10                                                                                                                                                              | 3.0 kB  00:00:00     
    (1/7): amzn2-core/2/x86_64/group_gz                                                                                                                                                 | 2.5 kB  00:00:00     
    (2/7): amzn2-core/2/x86_64/updateinfo                                                                                                                                               | 539 kB  00:00:00     
    (3/7): amzn2extra-docker/2/x86_64/updateinfo                                                                                                                                        | 8.0 kB  00:00:00     
    (4/7): amzn2extra-docker/2/x86_64/primary_db                                                                                                                                        |  99 kB  00:00:00     
    (5/7): amzn2extra-kernel-5.10/2/x86_64/updateinfo                                                                                                                                   |  22 kB  00:00:00     
    (6/7): amzn2extra-kernel-5.10/2/x86_64/primary_db                                                                                                                                   |  14 MB  00:00:00     
    (7/7): amzn2-core/2/x86_64/primary_db                                                                                                                                               |  68 MB  00:00:02     
    repo id                                                                                          repo name                                                                                           status
    amzn2-core/2/x86_64                                                                              Amazon Linux 2 core repository                                                                      29,645
    amzn2extra-docker/2/x86_64                                                                       Amazon Extras repo for docker                                                                           75
    amzn2extra-kernel-5.10/2/x86_64                                                                  Amazon Extras repo for kernel-5.10                                                                     236
    repolist: 29,956

  • 無効化のリポジトリ

    sh-4.2$ yum repolist disabled
    Loaded plugins: dkms-build-requires, extras_suggestions, langpacks, priorities, update-motd, versionlock
    repo id                                                                                                      repo name                                                                                     
    amzn2-core-debuginfo/2/x86_64                                                                                Amazon Linux 2 core repository - debuginfo packages                                           
    amzn2-core-source/2                                                                                          Amazon Linux 2 core repository - source packages                                              
    amzn2extra-docker-debuginfo/2/x86_64                                                                         Amazon Extras debuginfo repo for docker                                                       
    amzn2extra-docker-source/2                                                                                   Amazon Extras source repo for docker                                                          
    amzn2extra-kernel-5.10-debuginfo/2/x86_64                                                                    Amazon Extras debuginfo repo for kernel-5.10                                                  
    amzn2extra-kernel-5.10-source/2                                                                              Amazon Extras source repo for kernel-5.10                                                     
    centos-extras                                                                                                Centos extras -                                                                               
    copr:copr.fedorainfracloud.org:vbatts:shadow-utils-newxidmap/x86_64                                          Copr repo for shadow-utils-newxidmap owned by vbatts                                          
    docker-ce-nightly/2/x86_64                                                                                   Docker CE Nightly - x86_64                                                                    
    docker-ce-nightly-debuginfo/2/x86_64                                                                         Docker CE Nightly - Debuginfo x86_64                                                          
    docker-ce-nightly-source/2                                                                                   Docker CE Nightly - Sources                                                                   
    docker-ce-stable/2/x86_64                                                                                    Docker CE Stable - x86_64                                                                     
    docker-ce-stable-debuginfo/2/x86_64                                                                          Docker CE Stable - Debuginfo x86_64                                                           
    docker-ce-stable-source/2                                                                                    Docker CE Stable - Sources                                                                    
    docker-ce-test/2/x86_64                                                                                      Docker CE Test - x86_64                                                                       
    docker-ce-test-debuginfo/2/x86_64                                                                            Docker CE Test - Debuginfo x86_64                                                             
    docker-ce-test-source/2                                                                                      Docker CE Test - Sources                                                                      
    libnvidia-container/x86_64                                                                                   libnvidia-container                                                                           
    libnvidia-container-experimental/x86_64                                                                      libnvidia-container-experimental                                                              
    neuron                                                                                                       Neuron YUM Repository                                                                         
    nvidia-container-runtime/x86_64                                                                              nvidia-container-runtime                                                                      
    nvidia-container-runtime-experimental/x86_64                                                                 nvidia-container-runtime-experimental                                                         
    nvidia-docker/x86_64                                                                                         nvidia-docker                                                                                 
    repolist: 0
    sh-4.2$

この状態でyum updateしてみますがS3ゲートウェイエンドポイントの設定を行っていないのでアクセスできるリポジトリが無くモチロン失敗します。

sh-4.2$ sudo yum update 
Loaded plugins: dkms-build-requires, extras_suggestions, langpacks, priorities, update-motd, versionlock
Could not retrieve mirrorlist https://amazonlinux-2-repos-ap-northeast-1.s3.dualstack.ap-northeast-1.amazonaws.com/2/core/latest/x86_64/mirror.list error was
12: Timeout on https://amazonlinux-2-repos-ap-northeast-1.s3.dualstack.ap-northeast-1.amazonaws.com/2/core/latest/x86_64/mirror.list: (28, 'Failed to connect to amazonlinux-2-repos-ap-northeast-1.s3.dualstack.ap-northeast-1.amazonaws.com port 443 after 4964 ms: Connection timed out')

~(省略)~

S3ゲートウェイエンドポイントの設定を行っていきます。
VPCのダッシュボードから「エンドポイント」-「エンドポイントの作成」を選択します。

任意の名前を入力し、S3のゲートウェイエンドポイントとノートブックインスタンスを配置したVPCを指定しつつエンドポイントを作成します。

ノートブックインスタンスを配置したVPCにS3のゲートウェイエンドポイントが作成できました。

この状態でyum updateしてみると無事にパッケージのアップデートができるようになりました。

sh-4.2$ sudo yum update
Loaded plugins: dkms-build-requires, extras_suggestions, langpacks, priorities, update-motd, versionlock
amzn2-core                                                                                                                                                                          | 3.7 kB  00:00:00     
amzn2extra-docker                                                                                                                                                                   | 3.0 kB  00:00:00     
amzn2extra-kernel-5.10                                                                                                                                                              | 3.0 kB  00:00:00     
(1/7): amzn2-core/2/x86_64/group_gz                                                                                                                                                 | 2.5 kB  00:00:00     
(2/7): amzn2-core/2/x86_64/updateinfo                                                                                                                                               | 539 kB  00:00:00     
(3/7): amzn2extra-docker/2/x86_64/updateinfo                                                                                                                                        | 8.0 kB  00:00:00     
(4/7): amzn2extra-kernel-5.10/2/x86_64/primary_db                                                                                                                                   |  14 MB  00:00:00     
(5/7): amzn2extra-kernel-5.10/2/x86_64/updateinfo                                                                                                                                   |  22 kB  00:00:00     
(6/7): amzn2extra-docker/2/x86_64/primary_db                                                                                                                                        |  99 kB  00:00:00     
(7/7): amzn2-core/2/x86_64/primary_db                                                                                                                                               |  68 MB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package aws-cfn-bootstrap.noarch 0:2.0-10.amzn2 will be updated

~(省略)~

Transaction Summary
===========================================================================================================================================================================================================
Install   3 Packages (+2 Dependent packages)
Upgrade  93 Packages
Remove    1 Package

Total download size: 118 M
Is this ok [y/d/N]: y

~(省略)~

Complete!
sh-4.2$

まとめ

今回はインターネットアクセスが出来ないVPC環境に配置したAmazon SageMaker ノートブックインスタンスのパッケージアップデートをS3ゲートウェイエンドポイント経由で試してみました。 この記事がどなたかの参考になりましたら幸いです。

以上、大阪オフィスの林がお送りしました!