Amazon SageMaker実運用: NAT GatewayでNotebookの接続元IPアドレスを固定する

Amazon SageMakerを使っていて Notebook インスタンスから以下を行いたくなったので構成を考えてみた。

  • Notebook インスタンスから外部システムにアクセスしたい
    • 対象のシステムはアクセス制限を行なっており接続元 IP アドレスを固定したい
  • Notebook インスタンスマネージド NFS サービスであるAmazon EFSをマウントしたい
    • VPC 内のインスタンスからはマウントできるよう設定済み

解答

AWS Machine Learning Blogに正解が書いてあった。

構成

上記を踏まえて以下のような構成を考えた。

Notebook インスタンス

前提として人間が Notebook を使用する方法は当然ながら Web UI を使う。

Notebook インスタンスからの VPC 内/外部アクセス

後述するように Notebook 作成時に VPC と Private Subnet を紐づける。
すると指定した Private Subnet 内に NIC が作成され、Notebook インスタンスから VPC 内にアクセスできるようになる。
NAT Gateway を配置しているので、NAT Gateway に attach した EIP アドレスを接続元として外部にアクセスできるようになる。
ちなみに Public Subnet から NAT Gateway への route は動作しない(?)ので、Private Subnet を紐づける必要がある。

おそらく Notebook インスタンス自体は専用の不可視 VPC 内で起動されている。
(No VPC 設定で Notebook インスタンスを起動しても NIC が 2 つ存在する,VPC を紐づけると NIC がもう 1 つ増える)

なお接続対象の外部システムについてこの記事では触れないが、以下のような外部システムを想定している。

  • 接続元 IP アドレスによるアクセス制限を行なっている
  • HTTPS と SSH 両方で接続したい

Notebook インスタンスからの EFS ボリュームマウント

Private Subnet に NIC が作成されているので EFS ボリュームにも問題なくアクセスできる。
Web UI から Terminal(こちらも Web UI)を開いて sudo mount ~ 等実行することもできる。
しかし Lifecycle configuration なる便利機能が追加されており、スクリプトを指定するとある程度自動化できる。

その他 GPU インスタンス他

既存のいわゆる AI プロジェクトで使うことを想定しているため GPU インスタンス等がある。
以下に少し情報がある。

ELB と Web インスタンス

機械学習 Job の結果を Web から閲覧したいことがあるのでシンプルな Web サーバーを立てる。
ELB を Public Subnet に、Web サーバー用の EC2 インスタンスを同じ AZ の Private Subnet 上に立てて追加してしまうのが AI R&D エンジニアにとって楽そう。

SSH 接続について

最初に SSH ログインする踏み台ホストの IP アドレスは固定したいのでインスタンスに EIP を振る。
可用性を考えると AZ ごとに配置すると安全。
万が一 AZ がダウンした場合は手動でログインし直すことにする。
ファイルは EFS に置いておけばそれほど困らない想定。

Notebook インスタンス作成方法

以前より細かく設定できるようになっている。ありがたい。

2018.03 に書いた記事からの差分は以下。

  • VPC
    • 今回は VPC を選択する
  • Subnet(s)
    • 現時点では Subnet が 1 つ指定できる
    • 表示された Subnet から Private Subnet を選ぶ
  • Security group(s)
    • 必要な Security Group を選ぶ
    • こちらは複数選択できる
  • Direct internet access
    • NAT でインターネットアクセスするので Disable を選ぶ
  • Lifecycle configuration
    • Notebook インスタンスの作成/起動時にスクリプトを実行できるようになっていた、便利
    • (たぶん)次の記事で書く => 書いた

ということで SageMaker の進歩のおかげで希望に近い構成が作れそうな予感がしてきた。