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

如何为Amplify v2 Android应用添加REST API?遇权限及构建错误求助

Amplify REST API推送失败与构建错误解决方案

一、IAM权限错误处理

执行amplify add api后运行amplify push,CLI卡在「Creating API models...」阶段并抛出如下错误:

User: arn:aws:iam::xxxxxxxxxxxx:user/tb2-amplify is not authorized to perform: apigateway:GET on resource: arn:aws:apigateway:us-east-1::/restapis/xxxxxxxxxx/stages/dev/sdks/android because no identity-based policy allows the apigateway:GET action

原因

Amplify CLI在推送过程中需要调用API Gateway的apigateway:GET接口,获取生成客户端SDK的相关资源信息,你的IAM用户缺少针对该特定资源路径的权限策略——哪怕你以为用户已有授权,也可能是策略未覆盖API Gateway的SDK路径。

解决办法

  • 快速验证:给IAM用户附加AdministratorAccess权限(你已尝试并成功推送),适合快速确认流程正确性。
  • 最小权限配置:创建自定义IAM策略,允许用户对目标API Gateway的SDK路径执行apigateway:GET操作,示例策略如下:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "apigateway:GET",
            "Resource": "arn:aws:apigateway:us-east-1::/restapis/xxxxxxxxxx/stages/dev/sdks/*"
        }
    ]
}

记得替换策略中的API Gateway ID、区域为你的实际信息,再将策略附加到对应的IAM用户。

二、流程合理性验证

你设计的android -> Amplify.API.get() -> Lambda Function -> DynamoDB流程完全没问题,这是Amplify REST API的标准使用模式:客户端通过Amplify调用API Gateway触发Lambda,再由Lambda操作DynamoDB。amplify push前不需要额外特殊配置,之前的问题是CLI执行时的用户权限缺失,和运行时的客户端权限无关。

三、构建错误修复

推送成功后出现package com.amazonaws.mobileconnectors.apigateway.annotation does not exist等编译错误,是因为生成的tb2api.TbapiClient.java依赖AWS API Gateway的Android核心库,只需在Module级别的build.gradle中添加以下依赖:

implementation 'com.amazonaws:aws-android-sdk-apigateway-core:2.74.0'

注意替换版本号为与你项目中AWS SDK兼容的最新版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:30:37