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

Amazon Sagemaker. AccessDeniedException when calling the InvokeEndpoint operation

我已经在 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: An error occurred (AccessDeniedException) when calling the InvokeEndpoint operation: User: arn:aws:iam::249707424405:user/yury.logachev is not authorized to perform: sagemaker:InvokeEndpoint on resource: arn:aws:sagemaker:us-east-1:249707424405:endpoint/demo-xgboostendpoint-2018-12-12-22-07-28 with an explicit deny

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

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

问题出在 MFA 授权上。 当我从模型内部调用模型时,MFA 通过了。 但是当我试图从我的机器上调用模型时,MFA 没有通过,所以访问被拒绝了。

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