

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

# 运行时系统依赖项的私有存储库
<a name="train-remote-decorator-private"></a>

您可以使用执行前命令或脚本在作业环境中配置依赖项管理器，例如 pip 或 conda。要实现网络隔离，请使用这两个选项中的任何一个来重定向依赖项管理器，以访问您的私有存储库并在 VPC 内运行 Remote 函数。执行前命令或脚本将在 Remote 函数运行之前运行。您可以使用 @remote 装饰器、`RemoteExecutor` API 或在配置文件中定义它们。

以下各节介绍如何访问由管理的私有 Python Package 索引 (PyPI) 存储库。 AWS CodeArtifact这些部分还说明如何访问托管于 Amazon Simple Storage Service (Amazon S3) 上的自定义 conda 通道。

## 如何使用使用管理的自定义 PyPI 存储库 AWS CodeArtifact
<a name="train-remote-decorator-private-pypi"></a>

 CodeArtifact 要使用管理自定义 PyPI 存储库，需要满足以下先决条件：
+ 您的私有 PyPI 存储库应已创建。您可以使用 AWS CodeArtifact 来创建和管理您的私有软件包存储库。要了解更多信息 CodeArtifact，请参阅《[CodeArtifact 用户指南》](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html)。
+ 您的 VPC 应该可以访问您的 CodeArtifact 存储库。要允许从您的 VPC 连接到您的 CodeArtifact 存储库，您必须执行以下操作：
  + [为创建 VPC 终端节点 CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/create-vpc-endpoints.html)。
  + 为您的 VPC [创建一个 Amazon S3 网关终端节点](https://docs.aws.amazon.com/codeartifact/latest/ug/create-s3-gateway-endpoint.html)，该终端节点 CodeArtifact 允许存储包资产。

以下执行前命令示例显示了如何在 SageMaker AI 训练作业中配置 pip 以指向您的 CodeArtifact 存储库。有关更多信息，请参阅[配置和使用 pi CodeArtifact p](https://docs.aws.amazon.com/codeartifact/latest/ug/python-configure-pip.html)

```
# use a requirements.txt file to import dependencies
@remote(
    instance_type="ml.m5.large"
    image_uri = "my_base_python:latest", 
    dependencies = './requirements.txt',
    pre_execution_commands=[
        "aws codeartifact login --tool pip --domain my-org --domain-owner <000000000000> --repository my-codeartifact-python-repo --endpoint-url https://vpce-xxxxx.api.codeartifact.us-east-1.vpce.amazonaws.com"
    ]
)
def matrix_multiply(a, b):
    return np.matmul(a, b)
```

## 如何使用 Amazon S3 上托管的自定义 conda 通道
<a name="train-remote-decorator-private-conda"></a>

要使用 Amazon S3 来管理自定义 conda 存储库，需要满足以下先决条件：
+ 必须已在您的 Amazon S3 存储桶中设置您的私有 conda 通道，并且必须为所有依赖包编制索引并将其上传到 Amazon S3 存储桶。有关如何为 conda 包编制索引的说明，请参阅[创建自定义通道](https://conda.io/projects/conda/en/latest/user-guide/tasks/create-custom-channels.html)。
+ 您的 VPC 应具有对 Amazon S3 存储桶的访问权限。有关更多信息，请参阅[用于 Amazon S3 的端点](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html)。
+ 您的作业映像中的基本 conda 环境应已安装 `boto3`。要检查您的环境，请在 Anaconda 提示符中输入以下内容，以检查 `boto3` 是否显示在生成的列表中。

  ```
  conda list -n base
  ```
+ 应已使用 conda 而不是 [mamba](https://mamba.readthedocs.io/en/latest/installation.html) 安装您的作业映像。要检查您的环境，请确保上一个代码提示不会返回 `mamba`。

以下执行前命令示例显示了如何在 SageMaker 训练作业中将 conda 配置为指向 Amazon S3 上的私人频道。执行前命令会删除默认频道并将自定义通道添加到 `.condarc` conda 配置文件中。

```
# specify your dependencies inside a conda yaml file
@remote(
    instance_type="ml.m5.large"
    image_uri = "my_base_python:latest", 
    dependencies = "./environment.yml",
    pre_execution_commands=[
        "conda config --remove channels 'defaults'"
        "conda config --add channels 's3://my_bucket/my-conda-repository/conda-forge/'",
        "conda config --add channels 's3://my_bucket/my-conda-repository/main/'"
    ]
)
def matrix_multiply(a, b):
    return np.matmul(a, b)
```