この記事は公開されてから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を開く」からターミナルに接続してみます。
ノートブックインスタンスのデフォルトのリポジトリ設定を見てみると、amzn2-core.repo
とamzn2-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.repo
とamzn2-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ゲートウェイエンドポイント経由で試してみました。 この記事がどなたかの参考になりましたら幸いです。
以上、大阪オフィスの林がお送りしました!