翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ローカル Visual Studio Code を設定する
管理者が リモートアクセスを使用してローカルの Visual Studio Code を SageMaker スペースに接続する の手順を完了したら、ローカルの Visual Studio Code をリモートの SageMaker スペースに接続できます。
ローカル環境をセットアップする
ローカルマシンに Visual Studio Code をインストールします。要件については、「リモートアクセスを使用してローカルの Visual Studio Code を SageMaker スペースに接続する」を参照してください。
ローカル VS Code に接続する
ローカルの Visual Studio Code からリモートの SageMaker スペースへの接続を確立する前に、管理者はリモートアクセスを設定する必要があります。管理者は、ユーザーが接続を確立するための特定の方法を設定します。設定された方法を選択します。
方法 1: Studio UI からのディープリンク
ディープリンクを使用して接続を確立するには、次の手順に従います。
-
Amazon SageMaker Studio を起動します。
-
Studio UI で、該当スペースに移動します。
-
[次を使ってスペースを開く] を選択します。
-
[VS Code] を選択します。これを実行すると、Visual Studio Code を開くよう求めるプロンプトが表示される場合があります。これを実行すると、ローカル VS Code が開き、確認のために別のポップアップが表示されます。完了すると、リモート接続が確立されます。
AWS Toolkit for Visual Studio Code を使用して接続を確立するには、次の手順に従います。
-
VS Code を開きます。
-
AWSToolkit 拡張機能を開きます。
-
AWS に接続します。
-
AWSExplorer で、SageMaker AI を展開します。
-
Studio スペースを探します。
-
スペースの横にある [接続] アイコンを選択して開始します。
方法 3: SSH CLI 経由でターミナルから接続する
次のいずれかのプラットフォームオプションを選択して、SSH CLI を使用して接続を確立する手順を表示します。
- Linux/macOS
-
シェルスクリプトを作成します (例: /home/user/sagemaker_connect.sh)。
#!/bin/bash
# Disable the -x option if printing each command is not needed.
set -exuo pipefail
SPACE_ARN="$1"
AWS_PROFILE="${2:-}"
# Validate ARN and extract region
if [[ "$SPACE_ARN" =~ ^arn:aws[-a-z]*:sagemaker:([a-z0-9-]+):[0-9]{12}:space\/[^\/]+\/[^\/]+$ ]]; then
AWS_REGION="${BASH_REMATCH[1]}"
else
echo "Error: Invalid SageMaker Studio Space ARN format."
exit 1
fi
# Optional profile flag
PROFILE_ARG=()
if [[ -n "$AWS_PROFILE" ]]; then
PROFILE_ARG=(--profile "$AWS_PROFILE")
fi
# Start session
START_SESSION_JSON=$(aws sagemaker start-session \
--resource-identifier "$SPACE_ARN" \
--region "${AWS_REGION}" \
"${PROFILE_ARG[@]}")
# Extract fields using grep and sed
SESSION_ID=$(echo "$START_SESSION_JSON" | grep -o '"SessionId": "[^"]*"' | sed 's/.*: "//;s/"$//')
STREAM_URL=$(echo "$START_SESSION_JSON" | grep -o '"StreamUrl": "[^"]*"' | sed 's/.*: "//;s/"$//')
TOKEN=$(echo "$START_SESSION_JSON" | grep -o '"TokenValue": "[^"]*"' | sed 's/.*: "//;s/"$//')
# Validate extracted values
if [[ -z "$SESSION_ID" || -z "$STREAM_URL" || -z "$TOKEN" ]]; then
echo "Error: Failed to extract session information from sagemaker start session response."
exit 1
fi
# Call session-manager-plugin
session-manager-plugin \
"{\"streamUrl\":\"$STREAM_URL\",\"tokenValue\":\"$TOKEN\",\"sessionId\":\"$SESSION_ID\"}" \
"$AWS_REGION" "StartSession"
-
このスクリプトを次のとおり実行可能にします。
chmod +x /home/user/sagemaker_connect.sh
-
$HOME/.ssh/config を設定して、以下のエントリを追加します。
Host space-name
HostName 'arn:PARTITION:sagemaker:us-east-1:111122223333:space/domain-id/space-name'
ProxyCommand '/home/user/sagemaker_connect.sh' '%h'
ForwardAgent yes
AddKeysToAgent yes
StrictHostKeyChecking accept-new
例えば、PARTITION の値として aws を指定できます。
名前付きAWS認証情報プロファイルを使用する必要がある場合は、次のようにプロキシコマンドを変更します。
ProxyCommand '/home/user/sagemaker_connect.sh' '%h' YOUR_CREDENTIAL_PROFILE_NAME
ssh space-name
scp file_abc space-name:/tmp/
- Windows
-
Windows の前提条件:
-
PowerShell 5.1 以降
-
SSH クライアント (OpenSSH を推奨)
PowerShell スクリプトを作成します (例: C:\Users\user-name\sagemaker_connect.ps1)。
# sagemaker_connect.ps1
param(
[Parameter(Mandatory=$true)]
[string]$SpaceArn,
[Parameter(Mandatory=$false)]
[string]$AwsProfile = ""
)
# Enable error handling
$ErrorActionPreference = "Stop"
# Validate ARN and extract region
if ($SpaceArn -match "^arn:aws[-a-z]*:sagemaker:([a-z0-9-]+):[0-9]{12}:space\/[^\/]+\/[^\/]+$") {
$AwsRegion = $Matches[1]
} else {
Write-Error "Error: Invalid SageMaker Studio Space ARN format."
exit 1
}
# BuildAWS CLIcommand
$awsCommand = @("sagemaker", "start-session", "--resource-identifier", $SpaceArn, "--region", $AwsRegion)
if ($AwsProfile) {
$awsCommand += @("--profile", $AwsProfile)
}
try {
# Start session and capture output
Write-Host "Starting SageMaker session..." -ForegroundColor Green
$startSessionOutput = & aws @awsCommand
# Try to parse JSON response
try {
$sessionData = $startSessionOutput | ConvertFrom-Json
} catch {
Write-Error "Failed to parse JSON response: $_"
Write-Host "Raw response was:" -ForegroundColor Yellow
Write-Host $startSessionOutput
exit 1
}
$sessionId = $sessionData.SessionId
$streamUrl = $sessionData.StreamUrl
$token = $sessionData.TokenValue
# Validate extracted values
if (-not $sessionId -or -not $streamUrl -or -not $token) {
Write-Error "Error: Failed to extract session information from sagemaker start session response."
Write-Host "Parsed response was:" -ForegroundColor Yellow
Write-Host ($sessionData | ConvertTo-Json)
exit 1
}
Write-Host "Session started successfully. Connecting..." -ForegroundColor Green
# Create session manager plugin command
$sessionJson = @{
streamUrl = $streamUrl
tokenValue = $token
sessionId = $sessionId
} | ConvertTo-Json -Compress
# Escape the JSON string
$escapedJson = $sessionJson -replace '"', '\"'
# Call session-manager-plugin
& session-manager-plugin "$escapedJson" $AwsRegion "StartSession"
} catch {
Write-Error "Failed to start session: $_"
exit 1
}
Host space-name
HostName "arn:aws:sagemaker:us-east-1:111122223333:space/domain-id/space-name"
ProxyCommand "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy RemoteSigned -File "C:\\Users\\user-name\\sagemaker_connect.ps1" "%h"
ForwardAgent yes
AddKeysToAgent yes
User sagemaker-user
StrictHostKeyChecking accept-new