View a markdown version of this page

使用创建应用程序 AWS CLI - 亚马逊 SageMaker AI

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

使用创建应用程序 AWS CLI

您可以使用创建应用程序, AWS CLI 以实现更精细的安全自定义。

先决条件

要使用创建应用程序 AWS CLI,您必须具备以下条件:

  • 可以访问终端。这可能包括本地 IDE、Amazon EC2 实例或 AWS CloudShell。

  • 可以进入开发环境。这可以包括本地集成开发环境或 Studio 或 Studio Classic 中的 Jupyter Notebook 环境。

  • 已配置的 AWS CLI 安装。有关更多信息,请参阅配置 AWS CLI

  • 具有适当权限的 IAM 角色。以下步骤要求环境具有 iam:CreateRoleiam:CreatePolicyiam:AttachRolePolicyiam:ListPolicies 权限。运行本用户指南中的步骤所使用的角色需要这些权限。本指南中的说明创建了一个用作 mlFlow 应用程序执行角色的 IAM 角色,以便它可以访问您的 Amazon S3 存储桶中的数据。此外,还会创建一项策略,为通过 mlFlow SDK 与应用程序进行交互的用户的 IAM 角色授予调用 mlFlow API 的权限。有关更多信息,请参阅修改角色权限策略(管理控制台)

    如果使用 SageMaker Studio 笔记本,请使用这些 IAM 权限更新您的 Studio 用户个人资料的服务角色。要更新服务角色,请导航到 SageMaker AI 控制台并选择您正在使用的域。然后,在域下选择正在使用的用户配置文件。您将看到服务角色在此列出。导航至 IAM 管理控制台,在角色下搜索服务角色,然后使用允许 iam:CreateRoleiam:CreatePolicyiam:AttachRolePolicyiam:ListPolicies 操作的策略更新角色。

设置 AWS CLI 模型

在终端中按照以下命令行步骤为带有 mlFlow AWS CLI 的 Amazon SageMaker AI 进行设置。

  1. 安装更新版本的 AWS CLI。有关更多信息,请参阅《AWS CLI User Guide》中的 Install or update to the latest version of the AWS CLI

  2. 使用以下命令验证 AWS CLI 是否已安装:

    aws sagemaker help

    q 键退出提示。

    有关问题排查帮助,请参阅排除常见设置问题

建立 MLflow 基础设施

以下部分向您展示如何设置 mlFlow 应用程序以及该应用程序所需的 Amazon S3 存储桶和 IAM 角色。

创建 S3 存储桶

在终端中,使用以下命令创建一个通用的 Amazon S3 存储桶:

重要

当您为工件存储提供亚马逊 S3 URI 时,请确保亚马逊 S3 存储桶与您的 mlFlow 应用程序 AWS 区域 相同。 Cross-region不支持对象存储

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 信任策略

使用以下步骤创建 IAM 信任策略。有关角色和信任策略的更多信息,请参阅《AWS Identity and Access Management 用户指南》中的角色术语和概念

  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
  2. 在终端中,使用以下命令创建名为 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
  3. 使用信任策略文件创建角色。然后,附上允许 mlFlow 在您的账户中访问亚马逊 S3 和 SageMaker 模型注册表的 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 应用程序

在您的终端中,使用 create-mlflow-app API 创建您选择 AWS 区域 的应用程序。此步骤通常需要大约 2-3 分钟。

以下命令创建一个启用了自动模型注册功能的新应用程序。要停用自动模型注册,请指定 --no-automatic-model-registration

创建应用程序后,您可以启动 mlFlow 用户界面。有关更多信息,请参阅 使用预先指定的 URL 启动 MLflow 用户界面

注意

最多可能需要 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 来完成清理步骤。