You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过AWS CLI访问S3存储桶的问题求助(MFA账户场景)

排查AWS CLI访问S3(MFA启用账户)的AccessDenied问题

结合你启用MFA的AWS账户场景,我整理了几个最可能导致权限拒绝的原因和对应的排查步骤:

1. 临时会话凭证过期或生成错误

因为你的账户启用了MFA,直接使用长期Access Key/Secret Key无法访问受MFA保护的资源,必须生成临时会话凭证才能正常使用。你提到已保存access token,需要确认:

  • 凭证是否通过正确的命令生成?标准生成命令如下:
    aws sts get-session-token --serial-number arn:aws:iam::你的AWS账户ID:mfa/你的IAM用户名 --token-code 你的MFA动态验证码
    
  • 临时凭证最长有效期为12小时,如果是较早生成的,大概率已经过期,需要重新生成并更新mfa_0729配置里的密钥和会话令牌。

2. IAM用户权限配置缺失或MFA条件未满足

检查你的IAM用户权限策略,确保:

  • 包含必要的S3权限:执行aws s3 ls需要s3:ListAllMyBuckets权限;执行aws s3 ls s3://my-bucket/需要对应存储桶的s3:ListObjectsV2权限。
  • 如果IAM策略中配置了强制MFA的条件(例如"Condition": {"Bool": {"aws:MultiFactorAuthPresent": "true"}}),则必须使用带会话令牌的临时凭证,使用长期密钥会直接被拒绝。

3. AWS CLI配置文件格式错误

确认~/.aws/credentials文件中mfa_0729的配置格式正确,必须包含三个核心字段:

[mfa_0729]
aws_access_key_id = 临时凭证的AccessKeyId
aws_secret_access_key = 临时凭证的SecretAccessKey
aws_session_token = 临时凭证的SessionToken
region = 你的AWS区域(例如us-east-1)

注意:会话令牌(aws_session_token)必须放在credentials文件中,而非config文件,否则CLI无法识别。

4. 存储桶策略的额外限制

如果目标存储桶配置了桶策略,可能存在拒绝你IAM用户访问的规则。比如桶策略明确拒绝该用户的List操作,或要求访问来源IP、MFA等额外条件,此时即使IAM用户拥有权限,也会被桶策略优先拦截。

快速排查步骤

  1. 重新生成临时会话凭证,替换到mfa_0729配置中,再次执行命令测试;
  2. 查看IAM用户的权限策略,确认所需权限已授予且MFA条件配置正确;
  3. 检查credentials文件格式,确保三个密钥字段填写无误;
  4. 查看目标存储桶的桶策略,排除拒绝访问的规则。

内容的提问来源于stack exchange,提问作者RB17

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 23:02:40