AWS IAMロールのマネージドポリシーの上限拡張(20個)を確認してみた
はじめに
2026年8月19日、AWSはIAMロールにアタッチできるマネージドポリシーのデフォルトクォータを10個から20個へ引き上げたと発表しました。
この変更は既存のロールにも自動で反映されます。
本記事では、AWS CLIでクォータ値と、実際にアタッチできる個数を確認します。
検証内容
クォータ値
IAMのアカウントサマリーを取得しました。
aws iam get-account-summary
レスポンスから、今回の対象となる行だけを抜き出しました。
{
"SummaryMap": {
...
"AttachedPoliciesPerRoleQuota": 20,
...
}
}
ロールあたりにアタッチできるマネージドポリシー数は20でした。
同じ値はバージニアのService Quotasからも確認できます。
aws service-quotas list-service-quotas --service-code iam --region us-east-1
取得した一覧には、次のクォータが含まれていました。
{
"ServiceCode": "iam",
"ServiceName": "AWS Identity and Access Management (IAM)",
"QuotaArn": "arn:aws:servicequotas::123456789012:iam/L-0DA4ABF3",
"QuotaCode": "L-0DA4ABF3",
"QuotaName": "Managed policies per role",
"Value": 20.0,
"Unit": "None",
"Adjustable": true,
"GlobalQuota": true,
"UsageMetric": {
"MetricNamespace": "AWS/Usage",
"MetricName": "ResourceCount",
"MetricDimensions": {
"Class": "None",
"Resource": "ManagedPoliciesPerRole",
"Service": "IAM",
"Type": "Resource"
},
"MetricStatisticRecommendation": "Maximum"
},
"Period": {
"PeriodValue": 5,
"PeriodUnit": "MINUTE"
},
"QuotaAppliedAtLevel": "ACCOUNT",
"QuotaContext": {
"ContextScope": "RESOURCE",
"ContextScopeType": "AWS::IAM::Role",
"ContextId": "*"
},
"Description": "The maximum number of IAM managed policies that you can attach to an IAM role."
},
Managed policies per role の値も20でした。アカウントサマリーの AttachedPoliciesPerRoleQuota と、Service Quotas の Managed policies per role は同じクォータを指します。次の節のエラーに現れる PoliciesPerRole も同じです。
アタッチ数
検証用に新規作成したロールへ、21個のAWS管理ポリシーを1個ずつ順にアタッチします。上限の1個超で止まるかを確かめるため、21個用意しました。
aws iam attach-role-policy --role-name example-role --policy-arn <ポリシーARN>
20個目の AmazonRoute53ReadOnlyAccess までは成功し、その時点でロールには次のポリシーがアタッチされていました。
一覧の並びはAPIの返却順で、アタッチした順序とは一致しません。
アタッチされた20個のAWS管理ポリシー
{
"AttachedPolicies": [
{
"PolicyName": "AWSCloudFormationReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AWSCloudFormationReadOnlyAccess"
},
{
"PolicyName": "AmazonKinesisReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonKinesisReadOnlyAccess"
},
{
"PolicyName": "AmazonSNSReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonSNSReadOnlyAccess"
},
{
"PolicyName": "AmazonEC2ReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess"
},
{
"PolicyName": "AWSOrganizationsReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AWSOrganizationsReadOnlyAccess"
},
{
"PolicyName": "AmazonECSTaskExecutionRolePolicy",
"PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
},
{
"PolicyName": "AmazonSSMReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess"
},
{
"PolicyName": "CloudWatchReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/CloudWatchReadOnlyAccess"
},
{
"PolicyName": "ReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/ReadOnlyAccess"
},
{
"PolicyName": "IAMReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/IAMReadOnlyAccess"
},
{
"PolicyName": "AmazonVPCReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonVPCReadOnlyAccess"
},
{
"PolicyName": "ViewOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/job-function/ViewOnlyAccess"
},
{
"PolicyName": "AmazonRDSReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonRDSReadOnlyAccess"
},
{
"PolicyName": "SecurityAudit",
"PolicyArn": "arn:aws:iam::aws:policy/SecurityAudit"
},
{
"PolicyName": "AmazonAPIGatewayInvokeFullAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonAPIGatewayInvokeFullAccess"
},
{
"PolicyName": "AmazonDynamoDBReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess"
},
{
"PolicyName": "AmazonS3ReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
},
{
"PolicyName": "AmazonRoute53ReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonRoute53ReadOnlyAccess"
},
{
"PolicyName": "AmazonSQSReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonSQSReadOnlyAccess"
},
{
"PolicyName": "AWSLambda_ReadOnlyAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AWSLambda_ReadOnlyAccess"
}
]
}
21個目に AmazonEventBridgeReadOnlyAccess を指定すると失敗し、次のエラーが返りました。
aws: [ERROR]: An error occurred (LimitExceeded) when calling the AttachRolePolicy operation: Cannot exceed quota for PoliciesPerRole: 20
まとめ
IAMロールにアタッチできるマネージドポリシーの上限は、デフォルトで20個になりました。これまで10個に収まらず引き上げを申請していたケースでは、その手続きが不要になりそうです。
IAMのクォータの一覧は、IAMユーザーガイドにまとまっています。
Service Quotasで最大25個まで申請できますが、運用負荷を踏まえると、デフォルトの20個に収める利用をおすすめします。








