我已经在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上运行后一段代码(带有作为客户端参数的附加凭据),我也会遇到相同的错误。
我了解该解决方案应该与角色,策略等相关联,但找不到答案。
答案 0 :(得分:0)
问题出在MFA认证上。 当我从模型内部调用模型时,MFA被传递。 但是,当我尝试从计算机上调用模型时,MFA没有通过,因此访问被拒绝。
我创建了没有MFA的特殊用户来调试模型,这解决了我的问题。