如何以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
相关产品推荐
相关产品推荐

