我正在尝试将文件从一个帐户(源帐户)中的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
是否有我想念的东西,我在做什么错。请帮忙。我没有任何用户,这只是角色
谢谢!
该错误消息表明您缺少sts:AssumeRole
权限。您的评论表明是这种情况,因为您目前仅具有S3权限。
要解决此问题,可以将内联策略添加到AmazonSageMaker-ExecutionRole
角色,形式为:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "*"
}
]
}
您可以进一步将限制Resource
为arn:aws:iam::destinationrole
。但是对于测试,您可以尝试使用*
as Resource
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句