

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

# 適用執行期相依性的私有儲存庫
<a name="train-remote-decorator-private"></a>

您可以使用預先執行命令或指令碼在工作環境設定像 pip 或 conda 這樣的相依性管理器。若要達成網路隔離，請使用以下任一選項重新導向相依性管理器來存取私有儲存庫並在 VPC 執行遠端函式。在遠端函式執行之前，將先執行預先執行命令或指令碼。您可以使用 @remote 裝飾項目、`RemoteExecutor` API 或組態檔案來加以定義。

下列各節說明如何存取使用 管理的私有 Python 套件索引 (PyPI) 儲存庫 AWS CodeArtifact。這些區段還顯示如何存取 Amazon Simple Storage Service (Amazon S3) 託管的自訂 conda 頻道。

## 如何使用透過 AWS CodeArtifact 管理的自訂 PyPI 儲存庫
<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 儲存庫，您必須執行以下操作：
  + [為 CodeArtifact 建立 VPC 端點](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 儲存庫。如需更多資訊，請參閱[使用 CodeArtifact 設定及使用 pip](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)。
+ 應已安裝 `boto3` 至工作映像的基本 conda 環境。若要檢查您的環境，請在 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)
```