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

如何以Cognito用户身份通过aws-cli向S3上传文件?

使用AWS CLI以Cognito用户身份上传文件到S3排查403错误

1. 获取Cognito用户临时AWS凭证

  • 先验证Cognito用户并获取身份令牌:

    aws cognito-idp initiate-auth \
      --client-id <你的Cognito应用客户端ID> \
      --auth-flow USER_PASSWORD_AUTH \
      --auth-parameters USERNAME=<你的Cognito用户名>,PASSWORD=<你的Cognito用户密码>
    

    执行后会返回包含IdToken、AccessToken、RefreshToken的JSON结果,把这三个值保存好。

  • 用拿到的IdToken获取身份ID:

    aws cognito-identity get-id \
      --identity-pool-id <你的Cognito身份池ID> \
      --logins cognito-idp.<你的AWS区域>.amazonaws.com/<你的Cognito用户池ID>=<刚才得到的IdToken>
    

    记下返回的IdentityId。

  • 最后获取临时访问凭证:

    aws cognito-identity get-credentials-for-identity \
      --identity-id <上面拿到的IdentityId> \
      --logins cognito-idp.<你的AWS区域>.amazonaws.com/<你的Cognito用户池ID>=<刚才得到的IdToken>
    

    这一步会得到AccessKeyId、SecretKey、SessionToken三个核心凭证。

2. 配置AWS CLI使用临时凭证

直接在终端设置环境变量即可(仅当前会话有效):

export AWS_ACCESS_KEY_ID=<拿到的AccessKeyId>
export AWS_SECRET_ACCESS_KEY=<拿到的SecretKey>
export AWS_SESSION_TOKEN=<拿到的SessionToken>
export AWS_DEFAULT_REGION=<你的S3桶所在区域>

3. 执行上传测试

用以下命令上传本地文件到S3:

aws s3 cp /本地/文件/路径/test.txt s3://你的S3桶名/test/test.txt

排查结论

  • 如果上传仍报403:问题出在Cognito身份池的权限策略、S3桶的桶策略或ACL配置上,和Amplify代码无关;
  • 如果上传成功:问题大概率在Amplify.js的配置或代码逻辑里,比如凭证获取流程错误、上传路径超出权限范围等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:01:39