使用STS服务Assume为一个Role角色时候提示超过最大session时间的限制

使用sts服务assume为一个角色的时候,提示超过Session时间限制:

An error occurred (ValidationError) when calling the AssumeRole operation: The requested DurationSeconds exceeds the MaxSessionDuration set for this role

为了排查这个问题,我们可以在具有IAM用户管理权限的用户AWSCLI命令行下,使用如下命令查询角色的Session时长。

aws iam list-roles

这里会返回多个角色,例如其中一个如下:

        {
            "Path": "/",
            "RoleName": "AmazonSSMRoleForAutomationAssumeQuickSetup",
            "RoleId": "AROFWDS54SIWMXL5XR5BZ",
            "Arn": "arn:aws-cn:iam::420029990748:role/AmazonSSMRoleForAutomationAssumeQuickSetup",
            "CreateDate": "2020-08-18T07:51:49+00:00",
            "AssumeRolePolicyDocument": {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Principal": {
                            "Service": "ssm.amazonaws.com"
                        },
                        "Action": "sts:AssumeRole"
                    }
                ]
            },
            "Description": "IAM role for SSM for Quick-Setup to run automation",
            "MaxSessionDuration": 3600
        },

以上的信息是举例,返回清单会包含本账户上所有的role。实际case中,要找下代码中要assume为哪一个role,由此去查看那个role的信息。最后一行可以看到MaxSessionDuration就是Session最大时间。

然后在IAM角色下找到要修改的对应角色,修改之即可。如下截图。