

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 透過 SSM 存取容器
<a name="ssm-access"></a>

 Amazon SageMaker AI 可讓您使用 AWS Systems Manager (SSM) 安全地連線至部署模型以進行推論的 Docker 容器。這可讓您對容器進行 Shell 層級存取，以便對容器內執行的程序偵錯，並使用 Amazon CloudWatch 記錄命令和回應。您也可以設定與託管容器的 ML 執行個體的 AWS PrivateLink 連線，以透過 SSM 私下存取容器。

**警告**  
 啟用 SSM 存取可能會影響端點的效能。我們建議您在開發或測試端點上使用此功能，而不是在生產端點。此外，SageMaker AI 會自動套用安全修補程式，並在 10 分鐘內取代或終止故障的端點執行個體。然而，對於已啟用 SSM 生產變體的端點，SageMaker AI 會延遲安全修補，並在一天之內更換或終止故障的端點執行個體，以便您進行偵錯。

 以下各節將詳細說明如何使用此功能。

## 允許清單
<a name="ssm-access-allowlist"></a>

 您必須聯絡客戶支援，並使您的帳戶列於允許清單上，方可使用此功能。如果不允許帳戶列於此存取，則無法建立啟用 SSM 存取的端點。

## 啟用 SSM 存取
<a name="ssm-access-enable"></a>

 若要啟用端點上現有容器的 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 存取](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html#API_EnableSSMAccess)。

## IAM 組態
<a name="ssm-access-iam"></a>

### 端點 IAM 許可
<a name="ssm-access-iam-endpoint"></a>

 如果您已為端點執行個體啟用 SSM 存取，則 SageMaker AI 會在啟動端點執行個體時開始和管理 [SSM 代理程式](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html)。若要允許 SSM 代理程式與 SSM 服務溝通，請將下列政策新增至端點執行所依據的執行角色。

------
#### [ JSON ]

****  

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

------

### 使用者 IAM 許可
<a name="ssm-access-iam-user"></a>

 新增下列政策以授與 IAM 使用者 SSM 工作階段連線至 SSM 目標的許可。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	             
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession",
                "ssm:TerminateSession"
            ],
            "Resource": "*"    
        }
    ]
}
```

------

 您可以使用下列政策限制 IAM 使用者可連線的端點。將*斜體預留位置文字*取代為您自己的資訊。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	  
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:StartSession"
            ],
            "Resource": "arn:aws:sagemaker:us-east-2:111122223333:endpoint/endpoint-name"    
        }
    ]
}
```

------

## 使用 存取 SSM AWS PrivateLink
<a name="ssm-access-privatelink"></a>

 如果您的端點在未連線至公有網際網路的虛擬私有雲端 (VPC) 中執行，您可以使用 AWS PrivateLink 啟用 SSM。 AWS PrivateLink 會限制端點執行個體、SSM 和 Amazon EC2 與 Amazon 網路之間的所有網路流量。如需有關如何透過 AWS PrivateLink設定 SSM 存取的詳細資訊，請參閱[為 Session Manager 設定 VPC 端點](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-privatelink.html)。

## 使用 Amazon CloudWatch Logs 進行記錄
<a name="ssm-access-logging"></a>

 對於已啟用 SSM 存取的端點，您可以透過 Amazon CloudWatch Logs 記錄 SSM 代理程式的錯誤。如需如何使用 CloudWatch 日誌記錄錯誤的詳細資訊，請參閱[記錄工作階段活動](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-logging.html)。該日誌可在端點日誌群組 `/aws/sagemaker/endpoints/endpoint-name` 下的 SSM 日誌串流 `variant-name/ec2-instance-id/ssm` 中取得。如需檢視日誌的詳細資訊，請參閱[檢視傳送至 CloudWatch 日誌的日誌資料](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#ViewingLogData)。

 端點後面的生產變體可以擁有多個模型容器。每個模型容器的日誌都記錄在日誌串流中。每個日誌的前面都會加上 `[sagemaker ssm logs][container-name]`，其中 `container-name` 是您指定給容器的名稱或是預設名稱，例如 `container_0` 和 `container_1`。

## 存取模型容器
<a name="ssm-access-container"></a>

 若要存取端點執行個體上的模型容器，您需要其目標 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-access-logging)中所述，您可以找到 SSM 日誌串流開頭列出的所有容器的目標 ID。

**注意**  
 您無法透過 SSM 連線至從 SageMaker AI MarketPlace 取得的 1P 演算法容器或模型容器。不過，您可以連線至由 AWS 或您擁有的任何自訂容器提供的深度學習容器 (DLC)。
 如果您已為模型容器啟用網路隔離，以防止其進行外撥網路呼叫，則無法啟動該容器的 SSM 工作階段。
 您只能從一個 SSM 工作階段存取一個容器。若要存取另一個容器 (即使該容器位於相同端點後面)，請使用該端點的目標 ID 啟動新的 SSM 工作階段。