

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

# 使用 建立應用程式 AWS CLI
<a name="mlflow-app-create-app-cli"></a>

您可以使用 建立應用程式 AWS CLI ，以獲得更精細的安全性自訂。

## 先決條件
<a name="mlflow-app-create-app-cli-prereqs"></a>

若要使用 建立應用程式 AWS CLI，您必須具有下列項目：
+ **存取終端機。**這可能包括本機 IDEs、Amazon EC2 執行個體或 AWS CloudShell。
+ **存取開發環境。**這可能包括 Studio 或 Studio Classic 內的本機 IDE 或 Jupyter 筆記本環境。
+ **設定的 AWS CLI 安裝**。如需詳細資訊，請參閱[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。
+ **具有適當許可的 IAM 角色**。下列步驟需要您的環境具有 `iam:CreateRole`、`iam:AttachRolePolicy`、`iam:CreatePolicy` 和 `iam:ListPolicies`許可。用於執行本使用者指南中步驟的角色需要這些許可。本指南中的指示會建立 IAM 角色，做為 MLflow 應用程式的執行角色，以便其存取 Amazon S3 儲存貯體中的資料。此外，建立政策是為了提供使用者透過 MLflow SDK 許可與應用程式互動以呼叫 MLflow APIs的 IAM 角色。如需詳細資訊，請參閱[修改許可政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy)。

  如果使用 SageMaker Studio 筆記本，請使用這些 IAM 許可更新您 Studio 使用者設定檔的服務角色。若要更新服務角色，請導覽至 SageMaker AI 主控台，然後選取您正在使用的網域。然後在網域下，選取您正在使用的使用者設定檔。您會在那裡看到列出的服務角色。導覽至 IAM 主控台，在**角色**下搜尋服務角色，並使用允許 `iam:CreateRole`、`iam:CreatePolicy`、`iam:AttachRolePolicy` 和 `iam:ListPolicies` 動作的政策更新您的角色。

## 設定 AWS CLI 模型
<a name="mlflow-app-create-app-cli-setup"></a>

請遵循終端機中的這些命令列步驟，設定 AWS CLI 適用於 Amazon SageMaker AI with MLflow 的 。

1. 安裝更新版本的 AWS CLI。如需詳細資訊，請參閱《AWS CLI 使用者指南》**中的[安裝或更新最新版 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

1. 使用以下命令確認 AWS CLI 已安裝 ：

   ```
   aws sagemaker help
   ```

   按 `q` 退出提示。

   如需故障診斷協助，請參閱[疑難排解常見的設定問題](mlflow-troubleshooting.md)。

## 設定 MLflow 基礎設施
<a name="mlflow-create-app-cli-infra-setup"></a>

下一節說明如何設定 MLflow 應用程式，以及應用程式所需的 Amazon S3 儲存貯體和 IAM 角色。

### 建立 S3 儲存貯體
<a name="mlflow-infra-setup-s3-bucket"></a>

在終端機中，使用下列命令來建立一般用途的 Amazon S3 儲存貯體：

**重要**  
當您提供成品存放區的 Amazon S3 URI 時，請確定 Amazon S3 儲存貯體與 AWS 區域 MLflow 應用程式位於相同的 中。**不支援跨區域成品儲存**。

```
bucket_name=bucket-name
  region=valid-region
  
  aws s3api create-bucket \
    --bucket $bucket_name \
    --region $region \
    --create-bucket-configuration LocationConstraint=$region
```

輸出格式應類似以下內容：

```
{
      "Location": "/bucket-name"
  }
```

### 設定 IAM 信任政策
<a name="mlflow-app-create-app-cli-trust-policy"></a>

使用下列步驟來建立 IAM 信任政策。如需有關角色和信任政策的詳細資訊，請參閱《AWS Identity and Access Management 使用者指南》**中的[角色術語和概念](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html)。

1. 在您的終端機中，使用下列命令來建立名為 `mlflow-trust-policy.json` 的檔案。

   ```
   cat <<EOF > /tmp/mlflow-trust-policy.json
     {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [                     
                           "sagemaker.amazonaws.com"
                      ]
                  },
                  "Action": "sts:AssumeRole"
              }
          ]
      }
     EOF
   ```

1. 在您的終端機中，使用下列命令來建立名為 `custom-policy.json` 的檔案。

   ```
   cat <<EOF > /tmp/custom-policy.json
     {
         "Version": "2012-10-17",		 	 	 
         "Statement": [
             {
                 "Effect": "Allow",
                 "Action": [
                     "s3:Get*",
                     "s3:Put*",
                     "sagemaker:AddTags",
                     "sagemaker:CreateModelPackageGroup",
                     "sagemaker:CreateModelPackage",
                     "sagemaker:DescribeModelPackageGroup",
                     "sagemaker:UpdateModelPackage",
                     "s3:List*"
                 ],
                 "Resource": "*"
             }
         ]
     }
     EOF
   ```

1. 使用信任政策檔案建立角色。然後，連接允許 MLflow 存取您帳戶中 Amazon S3 和 SageMaker Model Registry 的 IAM 角色政策。MLflow 必須能夠存取應用程式成品存放區的 Amazon S3 和自動模型註冊的 SageMaker 模型登錄檔。
**注意**  
如果您正在更新現有角色，請改用下列命令：`aws iam update-assume-role-policy --role-name $role_name --policy-document file:///tmp/mlflow-trust-policy.json`。

   ```
   role_name=role-name
     
     aws iam  create-role \
       --role-name $role_name \
       --assume-role-policy-document file:///tmp/mlflow-trust-policy.json
     
     aws iam put-role-policy \
       --role-name $role_name \
       --policy-name custom-policy \
       --policy-document file:///tmp/custom-policy.json
     
     role_arn=$(aws iam get-role --role-name  $role_name --query 'Role.Arn' --output text)
   ```

## 建立 MLflow 應用程式
<a name="mlflow-app-create-app-cli-create"></a>

在終端機中，使用 `create-mlflow-app` API AWS 區域 在您選擇的 中建立應用程式。此步驟通常需要大約 2-3 分鐘。

下列命令會建立新的應用程式，並啟用自動模型註冊。若要停用自動模型註冊，請指定 `--no-automatic-model-registration`。

建立應用程式後，您可以啟動 MLflow UI。如需詳細資訊，請參閱[使用預先簽章的 URL 啟動 MLflow UI](mlflow-launch-ui.md)。

**注意**  
最多可能需要 2-3 分鐘才能完成應用程式建立。如果應用程式需要超過 3 分鐘才能建立，請檢查您是否具有必要的 IAM 許可。當您成功建立應用程式時，它會自動啟動。

根據預設，建立的應用程式是最新版本，且會自動更新。

```
app_name=app-name
  region=valid-region
  version=valid-version        
  
  
  aws sagemaker create-mlflow-app \
   --name $app_name \
   --artifact-store-uri s3://$bucket_name \
   --role-arn $role_arn \
   --automatic-model-registration \
   --region $region
```

輸出格式應類似以下內容：

```
{
      "AppArn": "arn:aws:sagemaker:region:123456789012:mlflow-app/app-name"
  }
```

**重要**  
**請記下應用程式 ARN 以供日後使用。**您也需要 `$bucket_name` 進行清除步驟。