

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# VPC 内のインターネットへのアクセスがないサブネットで実行するように Studio を設定する
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access"></a>

このガイドでは、Amazon SageMaker AI ドメインがインターネットアクセスのないプライベートサブネットで実行されている場合に、リモート IDE から Amazon SageMaker Studio スペースに接続する方法について説明します。分離されたネットワーク環境で安全なリモート接続を確立するための接続要件と設定オプションについて説明します。

Amazon SageMaker Studio は、インターネットアクセスのないサブネットで VPC 専用モードを使って実行するように設定できます。この設定により、すべてのトラフィックが VPC を通過する、隔離されたネットワーク環境で動作するため、機械学習ワークロードのセキュリティを強化できます。セキュリティを維持しながら外部通信を有効にするには、 AWS サービスに VPC エンドポイントを使用し、必要な AWS 依存関係に VPC PrivateLink を設定します。

**プライベートサブネット接続の IDE サポート**

次の表は、インターネットアクセスなしでプライベートサブネットの Studio スペースに接続するときに、各リモート IDE でサポートされている接続方法を示しています。


| 接続方法 | VS Code | Kiro | カーソル | 
| --- | --- | --- | --- | 
| HTTP Proxy のサポート | サポート対象 | サポート | サポートされていません | 
| パッケージ化されたリモートサーバーと拡張機能 | サポート | サポートされません | サポートされません | 

**重要**  
カーソルは、アウトバウンドインターネットアクセスのないプライベートサブネットの Studio スペースへの接続ではサポートされていません。

**Topics**
+ [Studio のリモートアクセスネットワークの要件](#remote-access-remote-setup-vpc-subnets-without-internet-access-network-requirements)
+ [Studio リモートアクセスネットワークを設定する](#remote-access-remote-setup-vpc-subnets-without-internet-access-setup)

## Studio のリモートアクセスネットワークの要件
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access-network-requirements"></a>

**VPC モードの制限** Studio の VPC モードがサポートするのは、プライベートサブネットのみです。Studio は、インターネットゲートウェイ (IGW) に直接アタッチされたサブネットでは使用できません。リモート IDE 接続には、SageMaker AI と同じ制限があります。詳細については、「[VPC 内の Studio ノートブックを外部リソースに接続する](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-and-internet-access.html)」を参照してください。

### VPC PrivateLink の要件
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access-vpc-privatelink-requirements"></a>

SageMaker AI がプライベートサブネットで実行される場合は、SageMaker に必要な標準 VPC エンドポイントに加えて、これらの SSM VPC エンドポイントを設定します。詳細については、「[Studio を VPC エンドポイント経由で接続する](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-interface-endpoint.html)」を参照してください。
+ `com.amazonaws.{{REGION}}.ssm`
+ `com.amazonaws.{{REGION}}.ssmmessages`

**VPC エンドポイントポリシーの推奨事項**

以下は、Amazon SageMaker AI などの AWS サービスのみが呼び出しを実行できるように、 `aws:PrincipalIsAWSService`条件の使用中にリモートアクセスに必要なアクションを許可する、推奨される VPC エンドポイントポリシーです。`aws:PrincipalIsAWSService` 条件キーの詳細については、 [ドキュメント](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalisawsservice)を参照してください。

**SSM エンドポイントポリシー**

`com.amazonaws.{{REGION}}.ssm` エンドポイントには、次のポリシーを使用します。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "ssm:CreateActivation",
                "ssm:RegisterManagedInstance",
                "ssm:DeleteActivation",
                "ssm:DeregisterManagedInstance",
                "ssm:AddTagsToResource",
                "ssm:UpdateInstanceInformation",
                "ssm:UpdateInstanceAssociationStatus",
                "ssm:DescribeInstanceInformation",
                "ssm:ListInstanceAssociations",
                "ssm:ListAssociations",
                "ssm:GetDocument",
                "ssm:PutInventory"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:PrincipalIsAWSService": "true"
                }
            }
        }
    ]
}
```

**SSM メッセージエンドポイントポリシー**

`com.amazonaws.{{REGION}}.ssmmessages` エンドポイントには、次のポリシーを使用します。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "ssmmessages:CreateControlChannel",
                "ssmmessages:CreateDataChannel",
                "ssmmessages:OpenControlChannel",
                "ssmmessages:OpenDataChannel"
            ],
            "Resource": "*",
            "Condition": {
                "BoolIfExists": {
                    "aws:PrincipalIsAWSService": "true"
                }
            }
        }
    ]
}
```

**VS Code 固有のネットワーク要件**

リモート VS Code 接続には、リモートサーバーと拡張機能をインストールするための特定のネットワークアクセスを必要とする VS Code リモート開発が必要になります。ネットワーク要件の詳細については、Visual Studio Code ドキュメントの「[リモート開発に関するよくある質問](https://code.visualstudio.com/docs/remote/faq)」を参照してください。要件の概要は以下のとおりです。
+ VS Code リモートサーバーをインストールおよび更新するには、Microsoft の VS Code サーバーエンドポイントへのアクセスが必要です。
+ 拡張機能パネルから VS Code 拡張機能をインストールするには、Visual Studio Marketplace および関連する CDN エンドポイントへのアクセスが必要です (別の方法として、拡張機能はインターネット接続なしで VSIX ファイルを使用して手動でインストールすることもできます)。
+ 拡張機能によっては、特定の依存関係をダウンロードするために、追加のエンドポイントへのアクセスが必要になる場合があります。具体的な接続要件については、拡張機能のドキュメントを参照してください。

**Kiro 固有のネットワーク要件**

リモート Kiro 接続には、リモートサーバーと拡張機能をインストールするための特定のネットワークアクセスを必要とする Kiro リモート開発が必要です。ファイアウォールとプロキシサーバーの設定については、[「Kiro ファイアウォールの設定](https://kiro.dev/docs/privacy-and-security/firewalls/)」を参照してください。要件は VS Code に似ています。
+ Kiro リモートサーバーをインストールおよび更新するには、Kiro サーバーエンドポイントへのアクセスが必要です。
+ 拡張機能パネルから Kiro 拡張機能をインストールするには、拡張機能マーケットプレイスおよび関連する CDN エンドポイントへのアクセスが必要です。
+ 拡張機能によっては、特定の依存関係をダウンロードするために、追加のエンドポイントへのアクセスが必要になる場合があります。具体的な接続要件については、拡張機能のドキュメントを参照してください。

## Studio リモートアクセスネットワークを設定する
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access-setup"></a>

リモート IDE をプライベートサブネットの Studio スペースに接続するには、次のオプションがあります。
+ HTTP Proxy (VS Code および Kiro でサポート)
+ パッケージ化されたリモートサーバーと拡張機能 (VS Code のみ)

### 制御された許可リストを使用して HTTP プロキシを設定する
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access-setup-http-proxy-with-controlled-allow-listing"></a>

Studio スペースがファイアウォールまたはプロキシの内側にある場合は、IDE サーバーおよび拡張機能関連の CDNsとエンドポイントへのアクセスを許可します。

1. パブリックサブネットを設定して HTTP プロキシ (Squid など) を実行し、許可するウェブサイトを設定できます。SageMaker スペースから HTTP プロキシにアクセスできることを確認します。

1. パブリックサブネットは、Studio で使用するのと同じ VPC 内、または Amazon SageMaker AI ドメインで使用されるすべての VPC とピア接続された個別の VPC 内に配置できます。

### パッケージ化されたリモートサーバーと拡張機能を設定する (VS Code のみ)
<a name="remote-access-remote-setup-vpc-subnets-without-internet-access-setup-pre-packaged-vs-code-remote-server-and-extensions"></a>

**注記**  
このオプションは Visual Studio Code でのみ使用できます。Kiro と Cursor は、パッケージ化されたリモートサーバーのセットアップをサポートしていません。

Studio スペースが外部エンドポイントにアクセスして VS Code リモートサーバーと拡張機能をダウンロードできない場合は、事前にパッケージ化できます。この方法では、特定のバージョンの VS Code の `.VS Code-server` ディレクトリを含む tarball をエクスポートします。次に、SageMaker AI ライフサイクル設定 (LCC) スクリプトを使用し、tarball をコピーして Studio スペースのホームディレクトリ (`/home/sagemaker-user`) に解凍します。この LCC ベースのソリューションは、 AWS提供されているイメージとカスタムイメージの両方で動作します。プライベートサブネットを使用していない場合でも、このアプローチを採用すると、VS Code リモートサーバーとプリインストール済みの拡張機能の設定を高速化できます。

**VS Code リモートサーバーと拡張機能を事前にパッケージ化する手順**

1. ローカルマシンに VS Code をインストールします。

1. SSH が有効になっている Linux ベース (x64) の Docker コンテナをローカルで起動するか、インターネットアクセスのある Studio スペース経由で起動します。簡素化するために、リモートアクセスとインターネットを有効にした、一時的な Studio スペースを使用することをお勧めします。

1. インストールした VS Code をリモート SSH 経由でローカル Docker コンテナに接続するか、Studio リモート VS Code 機能経由で Studio スペースに接続します。VS Code は、接続中にリモートコンテナのホームディレクトリの `.VS Code-server` にリモートサーバーをインストールします。詳細については「[VS Code リモートサーバーと拡張機能を事前にパッケージ化するための Dockerfile の使用例](remote-access-local-ide-setup-vpc-no-internet.md#remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions-example-dockerfile)」を参照してください。

1. リモート接続後、VS Code Default プロファイルを使用していることを確認します。

1. 必要な VS Code 拡張機能をインストールし、その機能を検証します。例えば、ノートブックを作成して実行し、VS Code リモートサーバーに Jupyter ノートブック関連の拡張機能をインストールします。

   リモートコンテナに接続したら、必ず [AWS Toolkit for Visual Studio Code 拡張機能をインストール](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html)してください。

1. `$HOME/.VS Code-server` ディレクトリ (`VS Code-server-with-extensions-for-1.100.2.tar.gz` など) をローカル Docker コンテナまたはリモート接続された Studio スペースのターミナルにアーカイブします。

1. Amazon S3 に tarball をアップロードします。

1. 以下の [LCC スクリプト](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lifecycle-configurations.html) ([LCC スクリプトの例 (LCC-install-VS Code-server-v1.100.2)](remote-access-local-ide-setup-vpc-no-internet.md#remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions-example-lcc)) を作成します。
   + Amazon S3 から特定のアーカイブをダウンロードします。
   + プライベートサブネット内の Studio スペースを起動する際に、このアーカイブをホームディレクトリに抽出します。

1. (オプション) LCC スクリプトを拡張して、ユーザー固有の Amazon S3 フォルダに保存されている、ユーザーごとの VS Code サーバーの tarball をサポートします。

1. (オプション) スペースにアタッチできるバージョン固有の LCC スクリプト ([LCC スクリプトの例 (LCC-install-VS Code-server-v1.100.2)](remote-access-local-ide-setup-vpc-no-internet.md#remote-access-local-ide-setup-vpc-no-internet-pre-packaged-vs-code-remote-server-and-extensions-example-lcc)) を管理し、ローカル VS Code クライアントとリモートサーバー間の互換性を確保します。