

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# MLflow アプリを作成する
<a name="mlflow-app-setup-create-app"></a>

# を使用してアプリを作成する 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。
+ **開発環境へのアクセス権**。ローカルの IDE や、Studio または Studio Classic 内の Jupyter Notebook 環境が該当します。
+ **設定済みの AWS CLI インストール**。詳細については、「[AWS CLIの設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)」を参照してください。
+ **適切なアクセス許可を持つ IAM ロール**。以下の手順を実行するには、ご利用の環境に `iam:CreateRole`、`iam:CreatePolicy`、`iam:AttachRolePolicy`、および `iam:ListPolicies` のアクセス許可が必要です。これらのアクセス許可は、このユーザーガイドの手順を実行するために使用されるロールに必要です。このガイドの手順では、MLflow アプリケーションの実行ロールとして使用される IAM ロールを作成し、Amazon S3 バケット内のデータにアクセスできるようにします。さらに、MLflow SDK を介してアプリを操作しているユーザーの IAM ロールに MLflow APIs を呼び出すアクセス許可を付与するポリシーが作成されます。詳細については、「[ロールのアクセス許可ポリシーの変更 (コンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-modify_permissions-policy)」を参照してください。

  SageMaker Studio ノートブックを使用している場合は、Studio ユーザープロファイルのサービスロールを更新し、これらの IAM アクセス許可を付与してください。サービスロールを更新するには、SageMaker AI コンソールに移動し、使用しているドメインを選択します。次に、そのドメインで、使用しているユーザープロファイルを選択します。サービスロールがリストに表示されます。IAM コンソールに移動し、**[ロール]** でそのサービスロールを検索し、`iam:CreateRole`、`iam:CreatePolicy`、`iam:AttachRolePolicy`、および `iam:ListPolicies` アクションを許可するポリシーでロールを更新してください。

## AWS CLI モデルのセットアップ
<a name="mlflow-app-create-app-cli-setup"></a>

ターミナル内の以下のコマンドラインステップに従って、MLflow で Amazon SageMaker AI AWS CLI の を設定します。

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 バケットが MLflow アプリ AWS リージョン と同じ にあることを確認します。**クロスリージョンアーティファクトストレージはサポートされていません**。

```
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 Model Registry にアクセスできる必要があります。
**注記**  
既存のロールを更新する場合は、代わりに次のコマンドを使用します。`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>

ターミナル内で API を使用して`create-mlflow-app`、 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` も必要です。