

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 通过 SSM 访问容器
<a name="ssm-access"></a>

 Amazon SageMaker AI 允许您使用 S AWS ystems 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 访问的端点。

## 启用 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 访问的更多信息，请参阅[启用SSMAccess](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 用户可以连接的端点。将 *italicized placeholder text* 替换为您自己的信息。

------
#### [ 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 之间的所有网络流量限制到亚马逊网络。有关如何使用 AWS PrivateLink设置 SSM 访问的更多信息，请参阅[为 Session Manager 设置 VPC 端点](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started-privatelink.html)。

## 使用 Amazon CloudWatch 日志进行登录
<a name="ssm-access-logging"></a>

 对于启用 SSM 访问的终端节点，您可以使用 Ama CloudWatch zon 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 日志进行登录](#ssm-access-logging)，则可以找到 SSM 日志流开头列出的所有容器的目标 IDs 。

**注意**  
 您无法通过 SSM 连接到 1P 算法容器或从 SageMaker AI MarketPlace 获得的模型的容器。但是，您可以连接到提供的深度学习容器 (DLCs) AWS 或您拥有的任何自定义容器。
 如果已为模型容器启用了网络隔离，使其无法进行出站网络调用，则无法为该容器启动 SSM 会话。
 您只能通过一个 SSM 会话访问一个容器。要访问另一个容器（即使它位于同一端点后面），请使用该端点的目标 ID 启动一个新的 SSM 会话。