没有BatchGetImage权限-在sagemaker中部署模型时



我能够使用Sagemaker TensorFlow容器训练我的模型

以下是代码:

model_dir = '/opt/ml/model'
train_instance_type = 'ml.c4.xlarge'
hyperparameters = {'epochs': 10, 'batch_size': 256, 'learning_rate': 0.001}
script_mode_estimator = TensorFlow(
entry_point='model.py',
train_instance_type=train_instance_type,
train_instance_count=1,
model_dir=model_dir,
hyperparameters=hyperparameters,
role=sagemaker.get_execution_role(),
base_job_name='tf-fashion-mnist',
framework_version='1.12.0',
py_version='py3',
output_path='s3://my_bucket/testing',
script_mode=True
)

模型拟合:

script_mode_estimator.fit(inputs)

但当我试图部署模型时,我会得到以下错误:

部署代码为:

script_mode_d=script_mode_estimator.deploy(initial_instance_count=1,
instance_type="ml.m4.xlarge")

错误为:

意外的StatusException:托管终结点tf-fashion-mnist--2020-09-23-09-05-25-791时出错:失败。原因:角色"xyz"没有图像的BatchGetImage权限:"520713654638.dkr.ecr.us-east-1.amazonaws.com/sagemaker-tensorflow serving:1.12-cpu".

请帮助我解决此问题

原因:角色"xyz"没有图像的BatchGetImage权限:'520713654638.dkr.ecr.us-east-1.amazonaws.com/sagemaker-tensorflow serve:1.12-cpu'.

此错误意味着IAM角色";xyz";(可以在IAM控制台中找到(没有权限在ECR(弹性容器注册表,可以在ECS控制台中找到此服务(中进行BatchGetImageAPI调用。

您可以找到许多IAM策略的示例;xyz";角色,授予其执行API调用的权限:https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html

要添加策略,请转到IAM控制台,查找";xyz";角色,然后添加(内联(策略,或编辑其现有策略之一(如果它已经有一个授予类似权限的策略,则在该策略中添加此权限是有意义的(。

您可以使用AWS管理的AmazonSageMakerFullAccess权限策略,而不是通过制定权限策略来管理权限,该策略允许您在SageMaker中执行任何操作(包括BatchGetImage(。

为此:

  1. 登录控制台->IAM->角色->创建角色
  2. 使用sagemaker.amazonaws.com创建服务链接角色
  3. 赋予角色AmazonSageMakerFullAccess
  4. 赋予角色AmazonS3FullAccess

即使IAM角色包括BatchGetImage,当IAM角色刚刚创建时,也会出现此错误。如果您使用CDK或类似产品,这一点尤其明显。引入一分钟的延迟,通话将起作用。

最新更新