本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在不使用快速入门 AWS CloudFormation 模板的情况下设置 Neptune ML
1. 从正常运行的 Neptune 数据库集群开始
如果您不使用 AWS CloudFormation 快速入门模板来设置 Neptune ML,则需要使用现有的 Neptune 数据库集群。如果您愿意,您可以使用已经拥有的一个集群,或者克隆一个您已经在使用的集群,也可以创建一个新集群(请参阅创建数据库集群)。
2. 安装 Neptune-Export 服务
如果您还没有这样做,请安装 Neptune-Export 服务,如使用 Neptune-Export 服务导出 Neptune 数据中所述。
使用以下设置向安装过程创建的 NeptuneExportSecurityGroup
安全组添加入站规则:
类型:
Custom TCP
协议:
TCP
端口范围:
80 - 443
来源:
(Neptune 数据库集群安全组 ID
)
3. 创建自定义 NeptuneLoadFromS3
IAM 角色
如果您尚未这样做,请创建自定义 NeptuneLoadFromS3
IAM 角色,如创建访问亚马逊 S3 的IAM角色中所述。
创建自定义 NeptuneSageMakerIAMRole
角色
使用 IAM 控制台NeptuneSageMakerIAMRole
:
{ "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" } ] }
创建此角色时,请编辑信任关系,使其内容如下所示:
{ "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
要为 Neptune ML 设置数据库集群
-
在 Neptune 控制台
中,导航到参数组,然后导航到与要使用的数据库集群关联的数据库集群参数组。将 neptune_ml_iam_role
参数设置为分配给您刚刚创建的NeptuneSageMakerIAMRole
角色的 ARN。 -
导航到数据库,然后选择要用于 Neptune ML 的数据库集群。选择操作,然后选择管理 IAM 角色。
在管理 IAM 角色页面上,选择添加角色并添加
NeptuneSageMakerIAMRole
。然后添加NeptuneLoadFromS3
角色。重启数据库集群的写入器实例。
在您的 Neptune VPC 中创建两个 SageMaker 端点
最后,要让 Neptune 引擎访问必要的 SageMaker 管理 API,您需要在 Neptune VPC 中创建两个 SageMaker 端点,如在 Neptune VPC 中为 SageMaker 创建两个端点中所述。
手动为 Neptune ML 配置 Neptune 笔记本
Neptune SageMaker 笔记本预装了各种适用于 Neptune ML 的示例笔记本。您可以在开源图形笔记本 GitHub 存储库
您可以使用现有的 Neptune 笔记本之一,或者如果您愿意,也可以按照使用 Neptune Workbench 托管 Neptune 笔记本中的说明创建自己的笔记本。
您也可以按照以下步骤配置默认 Neptune 笔记本以与 Neptune ML 结合使用:
修改 Neptune ML 的笔记本
通过 https://console.aws.amazon.com/sagemaker/
打开 Amazon SageMaker 控制台。 在左侧的导航窗格上,选择笔记本,然后选择笔记本实例。查找要用于 Neptune ML 的 Neptune 笔记本的名称,然后将其选中以进入其详细信息页面。
如果笔记本实例正在运行,请选择笔记本详细信息页面右上角的停止按钮。
在笔记本实例设置中,在生命周期配置下,选择指向打开笔记本生命周期的页面的链接。
选择右上角的编辑,然后选择继续。
-
在启动笔记本选项卡中,修改脚本以包含其它导出命令,并填写 Neptune ML IAM 角色和导出服务 URI 的字段,具体取决于您的 Shell:
echo "export NEPTUNE_ML_ROLE_ARN=
(your Neptune ML IAM role ARN)
" >> ~/.bashrc echo "export NEPTUNE_EXPORT_API_URI=(your export service URI)
" >> ~/.bashrc 选择更新。
返回笔记本实例页面。在权限和加密下,有一个对应于 IAM 角色 ARN 的字段。选择此字段中的链接可转到运行此笔记本实例的 IAM 角色。
-
创建一个新的内联策略,如下所示:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:PutMetricData" ], "Resource": "arn:aws:cloudwatch:[AWS_REGION]:[AWS_ACCOUNT_ID]:*", "Effect": "Allow" }, { "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:GetLogEvents" ], "Resource": "arn:aws:logs:[AWS_REGION]:[AWS_ACCOUNT_ID]:*", "Effect": "Allow" }, { "Action": [ "s3:Put*", "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::*", "Effect": "Allow" }, { "Action": "execute-api:Invoke", "Resource": "arn:aws:execute-api:[AWS_REGION]:[AWS_ACCOUNT_ID]:*/*", "Effect": "Allow" }, { "Action": [ "sagemaker:CreateModel", "sagemaker:CreateEndpointConfig", "sagemaker:CreateEndpoint", "sagemaker:DescribeModel", "sagemaker:DescribeEndpointConfig", "sagemaker:DescribeEndpoint", "sagemaker:DeleteModel", "sagemaker:DeleteEndpointConfig", "sagemaker:DeleteEndpoint" ], "Resource": "arn:aws:sagemaker:[AWS_REGION]:[AWS_ACCOUNT_ID]:*/*", "Effect": "Allow" }, { "Action": [ "iam:PassRole" ], "Resource": "[YOUR_NEPTUNE_ML_IAM_ROLE_ARN]"", "Effect": "Allow" } ] }
保存此新策略,并将其附加到步骤 8 中的 IAM 角色。
选择 SageMaker 笔记本实例详细信息页面右上角的启动以启动笔记本实例。