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

Android中Amplify Storage获取身份ID失败,无法操作S3桶求解决

解决Amplify S3上传/下载时"获取身份ID失败"的问题

错误日志(翻译后)

StorageException{message=获取身份ID失败, cause=null, recoverySuggestion=AuthException{message=获取身份ID失败。请检查您是否已登录,以及身份池配置是否正确。, cause=null, recoverySuggestion=抱歉,目前我们没有针对此错误的建议修复方案。}}
                                        at com.amplifyframework.storage.s3.configuration.StorageAccessLevelAwarePrefixResolver.resolvePrefix(AWSS3PluginPrefixResolver.kt:70)
                                        at com.amplifyframework.storage.s3.operation.AWSS3StorageUploadFileOperation.start$lambda-1(AWSS3StorageUploadFileOperation.kt:89)
                                        at com.amplifyframework.storage.s3.operation.AWSS3StorageUploadFileOperation.$r8$lambda$_oyIiFAO5jakjMzA-FOjDISO9dI(Unknown Source:0)
                                        at com.amplifyframework.storage.s3.operation.AWSS3StorageUploadFileOperation$$ExternalSyntheticLambda2.run(Unknown Source:4)

排查与修复步骤

  • 启用身份池的未认证访问权限
    即便Storage配置了访客全权限,Cognito身份池本身可能未开启未认证访问:

    1. 登录AWS控制台,进入Cognito身份池页面,找到对应项目的身份池
    2. 进入「编辑身份池」,勾选「启用对未认证身份的访问」选项
    3. 保存后执行amplify pull同步最新配置到本地项目
  • 确保Auth会话初始化完成
    调用Storage操作前,必须完成Amplify初始化,且未认证用户需显式获取临时会话:

    // 初始化Amplify
    Amplify.configure(applicationContext)
    // 获取未认证用户会话,确保身份ID已生成
    Amplify.Auth.fetchAuthSession(
        { result ->
            if (!result.isSignedIn) {
                // 会话就绪,可执行Storage上传/下载操作
            }
        },
        { error -> Log.e("Auth", "会话获取失败", error) }
    )
    
  • 验证S3桶策略权限
    检查AWS控制台中S3桶的权限策略,确认身份池的未认证/认证角色拥有完整的存储操作权限,策略需包含类似语句:

    {
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::[你的AWS账号ID]:role/[身份池对应的未认证角色ARN]"
        },
        "Action": [
            "s3:GetObject",
            "s3:PutObject",
            "s3:DeleteObject"
        ],
        "Resource": "arn:aws:s3:::[你的存储桶名称]/*"
    }
    
  • 核对本地Amplify配置文件
    检查项目中的amplifyconfiguration.json:

    • Auth模块的IdentityPoolId、Region需与AWS控制台一致
    • Storage模块的Bucket、Region需匹配目标S3桶信息
      若配置有误,执行amplify push重新同步云端配置到本地

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:37:26