本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon SageMaker AI 可讓您使用 AWS Systems Manager (SSM) 安全地連線至部署模型以進行推論的 Docker 容器。這可讓您對容器進行 Shell 層級存取,以便對容器內執行的程序偵錯,並使用 Amazon CloudWatch 記錄命令和回應。您也可以設定與託管容器的 ML 執行個體的 AWS PrivateLink 連線,以便透過 SSM 私下存取容器。
警告
啟用 SSM 存取可能會影響端點的效能。我們建議您在開發或測試端點上使用此功能,而不是在生產端點。此外,SageMaker AI 會自動套用安全修補程式,並在 10 分鐘內取代或終止故障的端點執行個體。不過,對於已啟用 SSM 生產變體的端點,SageMaker AI 會延遲安全修補,並一天替換或終止故障的端點執行個體,以允許您偵錯。
以下各節將詳細說明如何使用此功能。
允許清單
您必須聯絡客戶支援,並使您的帳戶列於允許清單上,方可使用此功能。如果不允許帳戶列於此存取,則無法建立啟用 SSM 存取的端點。
啟用 SSM 存取
若要啟用端點上現有容器的 SSM 存取,請使用新的端點組態更新端點,並將 EnableSSMAccess
參數設定為 true
。下列範例提供端點組態範例。
{
"EndpointConfigName": "endpoint-config-name"
,
"ProductionVariants": [
{
"InitialInstanceCount": 1,
"InitialVariantWeight": 1.0,
"InstanceType": "ml.t2.medium",
"ModelName": model-name
,
"VariantName": variant-name
,
"EnableSSMAccess": true,
},
]
}
如需啟用 SSM 存取的詳細資訊,請參閱啟用 SSM 存取。
IAM 組態
端點 IAM 許可
如果您已啟用端點執行個體的 SSM 存取,SageMaker AI 會在啟動端點執行個體時啟動和管理 SSM 代理程式。若要允許 SSM 代理程式與 SSM 服務溝通,請將下列政策新增至端點執行所依據的執行角色。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
使用者 IAM 許可
新增下列政策以授與 IAM 使用者 SSM 工作階段連線至 SSM 目標的許可。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartSession",
"ssm:TerminateSession"
],
"Resource": "*"
}
]
}
您可以使用下列政策限制 IAM 使用者可連線的端點。將斜體預留位置文字
取代為您自己的資訊。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartSession",
],
"Resource": [
"sagemaker-endpoint-arn
"
]
}
]
}
使用 存取 SSM AWS PrivateLink
如果您的端點在未連線至公有網際網路的虛擬私有雲端 (VPC) 中執行,您可以使用 AWS PrivateLink 來啟用 SSM。 AWS PrivateLink 會限制端點執行個體、SSM 和 Amazon EC2 與 Amazon 網路之間的所有網路流量。如需有關如何透過 AWS PrivateLink設定 SSM 存取的詳細資訊,請參閱為 Session Manager 設定 VPC 端點。
使用 Amazon CloudWatch Logs 進行記錄
對於已啟用 SSM 存取的端點,您可以透過 Amazon CloudWatch Logs 記錄 SSM 代理程式的錯誤。如需如何使用 CloudWatch 日誌記錄錯誤的詳細資訊,請參閱記錄工作階段活動。該日誌可在端點日誌群組 /aws/sagemaker/endpoints/
下的 SSM 日誌串流 endpoint-name
中取得。如需檢視日誌的詳細資訊,請參閱檢視傳送至 CloudWatch 日誌的日誌資料。variant-name
/ec2-instance-id
/ssm
端點後面的生產變體可以擁有多個模型容器。每個模型容器的日誌都記錄在日誌串流中。每個日誌的前面都會加上 [sagemaker ssm
logs][container-name]
,其中 container-name
是您指定給容器的名稱或是預設名稱,例如 container_0
和 container_1
。
存取模型容器
若要存取端點執行個體上的模型容器,您需要其目標 ID。目標 ID 採用下列其中一種格式:
-
sagemaker-endpoint:
適用於單一容器端點上的容器endpoint-name
_variant-name
_ec2-instance-id
-
sagemaker-endpoint:
適用於多容器端點上的容器endpoint-name
_variant-name
_ec2-instance-id
_container-name
下列範例示範如何使用 AWS CLI 來存取使用其目標 ID 的模型容器。
aws ssm start-session --target sagemaker-endpoint:prod-image-classifier_variant1_i-003a121c1b21a90a9_container_1
如果您啟用日誌記錄功能,如使用 Amazon CloudWatch Logs 進行記錄中所述,您可以找到 SSM 日誌串流開頭列出的所有容器的目標 ID。
注意
-
您無法連線至 1P 演算法容器,或是使用 SSM 從 SageMaker AI MarketPlace 取得的模型容器。不過,您可以連線至由 AWS 或您擁有的任何自訂容器提供的深度學習容器 (DLC)。
-
如果您已為模型容器啟用網路隔離,以防止其進行外撥網路呼叫,則無法啟動該容器的 SSM 工作階段。
-
您只能從一個 SSM 工作階段存取一個容器。若要存取另一個容器 (即使該容器位於相同端點後面),請使用該端點的目標 ID 啟動新的 SSM 工作階段。