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

同一IAM角色下AWS EC2实例Powershell S3上传脚本异常排查

排查S3上传Access Denied问题的可行方向

以下是针对该问题的具体排查点:

  • 验证实例IAM角色的实际生效状态
    执行命令查看实例的IAM元数据:

    Get-EC2InstanceMetadata -Category IAM
    

    确认返回的角色是预期的绑定角色,同时检查凭证的有效期、权限范围是否正常,对比两台实例的输出结果,排查是否存在角色未正确挂载、凭证获取失败的情况。

  • 检查AWS PowerShell模块版本差异
    查看两台实例的AWSPowerShell模块版本:

    Get-Module -ListAvailable AWSPowerShell
    

    不同版本的Write-S3Object对S3访问点的处理逻辑可能存在差异,尝试将问题实例的模块版本同步到与正常实例一致后重新测试。

  • 核查S3访问点的资源策略限制
    检查该S3访问点的资源策略,确认是否设置了基于VPC、IP地址的访问规则——比如策略仅允许特定VPC或IP段的请求,而问题实例不在允许范围内。同时确认策略明确允许绑定的IAM角色执行s3:PutObject操作,且资源范围覆盖目标键路径Junk/junk1.txt。

  • 排查实例网络与S3访问路径
    虽然实例能正常浏览网页,但需确认是否通过VPC端点访问S3:若正常实例使用了VPC端点,而问题实例未配置或端点策略有限制,会导致权限验证失败。可执行以下命令测试连通性:

    Test-NetConnection -ComputerName my-s3-ap.s3-accesspoint.us-east-1.amazonaws.com -Port 443
    

    同时检查实例的安全组、NACL是否允许出站HTTPS流量到S3服务。

  • 检查本地AWS凭证干扰
    查看问题实例是否存在本地存储的AWS凭证文件:C:\Users\<管理员用户名>\.aws\credentials,PowerShell可能优先使用本地凭证而非实例IAM角色的临时凭证,导致使用了无权限的账号。执行命令查看当前生效的凭证配置:

    Get-AWSCredential -ListProfileDetail
    
  • 通过CloudTrail日志定位具体原因
    在AWS控制台的CloudTrail服务中,搜索问题实例的IP或绑定角色名称,找到对应的s3:PutObject请求日志,查看日志中的详细错误信息,明确AccessDenied的具体触发原因(如权限不足、资源策略拒绝、加密配置不匹配等)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:30:41