同一AWS账号下EC2关联相同IAM角色无法访问S3求助
确认EC2-2的IAM角色附着状态
虽然你提到两个实例关联了同一个IAM角色,但实际可能存在附着失败的情况。通过AWS控制台查看EC2-2的实例详情,检查"IAM角色"字段是否正确显示目标角色;或者在EC2-2上执行以下命令验证:aws ec2 describe-instances --instance-ids <EC2-2的实例ID> --query 'Reservations[0].Instances[0].IamInstanceProfile'如果返回空或角色名称不符,说明角色未正确附着,需要重新关联。
验证实例元数据服务(IMDS)的可用性
EC2实例通过IMDS获取IAM角色的临时凭证,若IMDS访问异常会导致无法获取有效权限。在EC2-2上执行以下命令:# 检查是否能获取角色名称 curl http://169.254.169.254/latest/meta-data/iam/security-credentials/ # 替换为上一步返回的角色名称,获取临时凭证 curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<角色名称>如果请求失败,可能是VPC禁用了IMDS,或者实例使用IMDSv2但未正确发送请求(需要先获取会话令牌)。
检查AWS CLI的凭证优先级
AWS CLI的凭证优先级为:环境变量 > 本地配置文件 > IAM角色临时凭证。你通过aws configure设置了访问密钥,但EC2-2可能优先使用了本地配置的密钥(而非角色凭证),而该密钥没有s3:ListBuckets权限。在EC2-2上执行:aws configure list查看当前生效的
access_key是否为临时凭证(开头为ASIA),如果是固定密钥(开头为AKIA),说明本地配置覆盖了角色凭证。可以删除~/.aws/credentials文件,让CLI自动使用角色凭证。排查账号级或组织级权限限制
即使IAM角色拥有AmazonS3FullAccess,如果AWS账号存在服务控制策略(SCP)或组织级权限限制,可能会拒绝s3:ListBuckets操作。检查账号的SCP配置,确认没有包含以下类似语句:{ "Effect": "Deny", "Action": "s3:ListBuckets", "Resource": "*" }验证网络连通性
虽然两个实例使用相同安全组,但EC2-2可能存在网络连通问题。尝试执行:telnet s3.amazonaws.com 443如果无法连通,检查VPC是否配置了S3网关端点(针对私有子网),或者实例是否能正常访问公网(针对公有子网)。
内容的提问来源于stack exchange,提问作者Fisher Coder

