python boto3错误:无权对资源执行假定的角色

时间:2020-10-29 23:42:15

标签: python amazon-web-services amazon-s3 boto3 amazon-sagemaker

我正在尝试将文件从一个帐户(源帐户)中的S3存储桶移动到另一帐户(目标帐户)中的S3存储桶 我正在使用sagemaker笔记本,所以我有一个sagemaker角色。 我在具有完全s3访问权限和fullsagemaker访问权限的团队帐户中也有角色,并且在信任关系中,我给了目标帐户角色arn和sagemaker角色arn。 目标帐户在其信任策略中还具有我的团队角色arn和sagemaker角色arn。

我试图承担我的团队角色,然后承担复制文件的目标角色。

    import boto3
    sts_client = boto3.client('sts')
assumed_teamrole_object = sts_client.assume_role(DurationSeconds=1800,
                                                 RoleArn='myteamrole',
                                                 RoleSessionName='test1')
    assumed_destrole_object = sts_client.assume_role(DurationSeconds=1800,
                                                 ExternalId='externalid provided by destination account',
                                                 RoleArn='destination account role',
                                                 RoleSessionName='test2')

前三行执行正常。当我尝试承担目标角色时遇到错误

调用AssumeRole操作时发生错误(AccessDenied):用户:arn:aws:sts :: role / AmazonSageMaker-ExecutionRole- / SageMaker无权执行:资源上的sts:AssumeRole:arn:aws :iam :: destinationrole

我是否缺少某些东西,我在做什么错。请帮忙。 我没有任何用户,仅是角色

谢谢!

1 个答案:

答案 0 :(得分:1)

该错误消息表明您缺少sts:AssumeRole权限。您的评论表明确实是这种情况,因为您目前只有S3权限。

要解决此问题,您可以将inline policy添加到AmazonSageMaker-ExecutionRole角色,形式为:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "*"
        }
    ]
}

您可以进一步将Resource限制为arn:aws:iam::destinationrole。但是对于测试,您可以尝试将*用作Resource

相关问题