亚马逊Sagemaker。调用InvokeEndpoint操作时出现AccessDeniedException

时间:2019-01-13 20:25:52

标签: amazon-web-services web amazon-sagemaker

我已经在Amazon SageMaker上部署了一个端点。 现在,我正在尝试调用它。

如果我在Sagemaker的Jupyter Notebook中运行以下代码:

client = boto3.client('sagemaker-runtime')
endpoint_name = 'DEMO-XGBoostEndpoint'
body = ','.join(['1.0'] * 6)
response = client.invoke_endpoint(EndpointName=endpoint_name,
                               ContentType='text/csv',
                               Body=body)
response['Body'].read()

它正常工作。

但是,如果我从我的机器上运行相同的代码,并添加了boto3客户端的凭据,则:

client = boto3.client('sagemaker-runtime', 
                       aws_access_key_id=ACCESS_ID,
                       aws_secret_access_key= ACCESS_KEY)
endpoint_name = 'DEMO-XGBoostEndpoint'
body = ','.join(['1.0'] * 6)
response = client.invoke_endpoint(EndpointName=endpoint_name,
                               ContentType='text/csv',
                               Body=body)
response['Body'].read()

我收到此错误:

  

ClientError:调用InvokeEndpoint操作时发生错误(AccessDeniedException):用户:arn:aws:iam :: 249707424405:user / yury.logachev无权执行:资源上的sagemaker:InvokeEndpoint:arn:aws:sagemaker :us-east-1:249707424405:endpoint / demo-xgboostendpoint-2018-12-12-22-07-28明确拒绝

如果我在Sagemaker的Jupyter Notebook上运行后一段代码(带有作为客户端参数的附加凭据),我也会遇到相同的错误。

我了解该解决方案应该与角色,策略等相关联,但找不到答案。

1 个答案:

答案 0 :(得分:0)

问题出在MFA认证上。 当我从模型内部调用模型时,MFA被传递。 但是,当我尝试从计算机上调用模型时,MFA没有通过,因此访问被拒绝。

我创建了没有MFA的特殊用户来调试模型,这解决了我的问题。