我正在尝试将文件从一个帐户(源帐户)中的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
我是否缺少某些东西,我在做什么错。请帮忙。 我没有任何用户,仅是角色
谢谢!
答案 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
。