

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

# 在不使用快速入门模板的情况下设置 Neptune ML Amazon CloudFormation
<a name="machine-learning-manual-setup"></a>

 本指南提供了在不使用 Amazon Amazon CloudFormation 快速入门模板的情况下设置 Amazon Neptune 机器学习的 step-by-step说明。本指南假设您已经有一个正在运行的 Neptune 数据库集群，其中涵盖了启用 Neptune ML 所必需的设置，包括安装 Neptune-Export 服务、创建自定义 IAM 角色以及配置数据库集群。该指南还介绍了如何在您的 Neptune VPC 中创建两个 SageMaker AI 终端节点，以便让 Neptune 引擎访问必要的 AI 管理。 SageMaker APIs按照这些说明进行操作，您无需依赖模板即可在现有的 Neptune 基础架构上设置 Neptune ML。 Amazon CloudFormation 

## 从正常运行的 Neptune 数据库集群开始
<a name="ml-manual-setup-prereq"></a>

如果您不使用 Amazon CloudFormation 快速入门模板来设置 Neptune ML，则需要使用现有的 Neptune 数据库集群。如果您愿意，您可以使用已经拥有的一个集群，或者克隆一个您已经在使用的集群，也可以创建一个新集群（请参阅[创建 Neptune 集群](get-started-create-cluster.md)）。

## 安装 Neptune-Export 服务
<a name="ml-manual-setup-export-svc"></a>

如果您还没有这样做，请安装 Neptune-Export 服务，如[使用 Neptune-Export 服务导出 Neptune 数据](export-service.md)中所述。

使用以下设置向安装过程创建的 `NeptuneExportSecurityGroup` 安全组添加入站规则：
+ *类型*：`Custom TCP`
+ *协议：*`TCP`
+ *端口范围*：`80 - 443`
+ *源*：{{(Neptune DB cluster security group ID)}}

## 创建自定义 NeptuneLoadFrom S3 IAM 角色
<a name="ml-manual-setup-s3-role"></a>

如果您尚未这样做，请创建自定义 `NeptuneLoadFromS3` IAM 角色，如[创建 IAM 角色以访问 Amazon S3](bulk-load-tutorial-IAM-CreateRole.md)中所述。

## 创建自定义 NeptuneSageMakerIAMRole 角色
<a name="ml-manual-setup-sm-role"></a>

使用 [IAM 控制台](https://console.amazonaws.cn/iam/)通过以下策略创建自定义 `NeptuneSageMakerIAMRole`：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:CreateNetworkInterfacePermission",
        "ec2:CreateVpcEndpoint",
        "ec2:DeleteNetworkInterface",
        "ec2:DeleteNetworkInterfacePermission",
        "ec2:DescribeDhcpOptions",
        "ec2:DescribeNetworkInterfaces",
        "ec2:DescribeRouteTables",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcEndpoints",
        "ec2:DescribeVpcs"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "ecr:GetAuthorizationToken",
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage",
        "ecr:BatchCheckLayerAvailability"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/*"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": [
            "sagemaker.amazonaws.com"
          ]
        }
      },
      "Effect": "Allow"
    },
    {
      "Action": [
        "kms:CreateGrant",
        "kms:Decrypt",
        "kms:GenerateDataKey*"
      ],
      "Resource": "arn:aws:kms:*:*:key/*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams",
        "logs:GetLogEvents"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/sagemaker/*"
      ],
      "Effect": "Allow"
    },
    {
      "Action": [
        "sagemaker:AddTags",
        "sagemaker:CreateEndpoint",
        "sagemaker:CreateEndpointConfig",
        "sagemaker:CreateHyperParameterTuningJob",
        "sagemaker:CreateModel",
        "sagemaker:CreateProcessingJob",
        "sagemaker:CreateTrainingJob",
        "sagemaker:CreateTransformJob",
        "sagemaker:DeleteEndpoint",
        "sagemaker:DeleteEndpointConfig",
        "sagemaker:DeleteModel",
        "sagemaker:DescribeEndpoint",
        "sagemaker:DescribeEndpointConfig",
        "sagemaker:DescribeHyperParameterTuningJob",
        "sagemaker:DescribeModel",
        "sagemaker:DescribeProcessingJob",
        "sagemaker:DescribeTrainingJob",
        "sagemaker:DescribeTransformJob",
        "sagemaker:InvokeEndpoint",
        "sagemaker:ListTags",
        "sagemaker:ListTrainingJobsForHyperParameterTuningJob",
        "sagemaker:StopHyperParameterTuningJob",
        "sagemaker:StopProcessingJob",
        "sagemaker:StopTrainingJob",
        "sagemaker:StopTransformJob",
        "sagemaker:UpdateEndpoint",
        "sagemaker:UpdateEndpointWeightsAndCapacities"
      ],
      "Resource": [
        "arn:aws:sagemaker:*:*:*"
      ],
      "Effect": "Allow"
    },
    {
      "Action": [
        "sagemaker:ListEndpointConfigs",
        "sagemaker:ListEndpoints",
        "sagemaker:ListHyperParameterTuningJobs",
        "sagemaker:ListModels",
        "sagemaker:ListProcessingJobs",
        "sagemaker:ListTrainingJobs",
        "sagemaker:ListTransformJobs"
      ],
      "Resource": "*",
      "Effect": "Allow"
    },
    {
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:AbortMultipartUpload",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::*"
      ],
      "Effect": "Allow"
    }
  ]
}
```

------

创建此角色时，请编辑信任关系，使其内容如下所示：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "ec2.amazonaws.com",
          "rds.amazonaws.com",
          "sagemaker.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

最后，复制分配给这个新 `NeptuneSageMakerIAMRole` 角色的 ARN。

**重要**  
请确保 `NeptuneSageMakerIAMRole` 中的 Amazon S3 权限与上述权限一致。
通用 ARN `arn:aws:s3:::*` 用于上述策略中的 Amazon S3 资源。如果由于某种原因无法使用通用 ARN，则必须将 `arn:aws:s3:::graphlytics*` 和 Neptune ML 命令将使用的任何其他客户 Amazon S3 资源的 ARN 添加到资源部分。

## 配置数据库集群以启用 Neptune ML
<a name="ml-manual-setup-cluster-config"></a>

**要为 Neptune ML 设置数据库集群**

1. 在 [Neptune 控制台](https://console.amazonaws.cn/neptune)中，导航到**参数组**，然后导航到与要使用的数据库集群关联的数据库集群参数组。将 `neptune_ml_iam_role` 参数设置为分配给您刚刚创建的 `NeptuneSageMakerIAMRole` 角色的 ARN。

1. 导航到数据库，然后选择要用于 Neptune ML 的数据库集群。选择**操作**，然后选择**管理 IAM 角色**。

1. 在**管理 IAM 角色**页面上，选择**添加角色**并添加 `NeptuneSageMakerIAMRole`。然后添加 `NeptuneLoadFromS3` 角色。

1. 重启数据库集群的写入器实例。

## 在你的 Neptune VPC 中创建两个 SageMaker AI 终端节点
<a name="ml-manual-setup-endpoints"></a>

最后，要向 Neptune 引擎提供必要的 SageMaker AI 管理权限 APIs，您需要在 Neptune VPC 中创建两个 SageMaker AI 终端节点，如中所述。[在你的 Neptune VP SageMaker C 中为人工智能创建两个终端节点](machine-learning-cluster-setup.md#machine-learning-sm-endpoints)