如何添加REST API来放大v2 Android应用程序?

uz75evzq  于 2023-02-02  发布在  Android
关注(0)|答案(1)|浏览(101)

在对REST API执行amplify add api后,我无法推送Amplify后端。在"创建API模型..."阶段,我在CLI中收到以下IAM错误:
用户:arn:aws:iam::xxxxxxxxxx:用户/tb2-未授权放大器执行:资源上的apigateway:GET:arn:aws:apigateway:us-east-1::/restapis/xxxxxxxxxx/stages/dev/sdks/android,因为没有基于身份的策略允许apigateway:GET操作
我只需要一个公共GET方法从DynamoDB表中读取一个项目。我想要的管道是android -> Amplify.API.get() -> Lambda Function -> DynamoDB。我已经遵循了Amplify Docs (Libraries/Guides)指南,在项目中重新初始化了Amplify,API是唯一的资源,尝试手动将API添加到amplifyconfiguration.json文件中。我被难倒了。

    • 问题出在我想要的管道上吗?在amplify push之前,我是否需要执行配置?有人知道为什么我配置的IAM没有被授权执行此操作吗?**
    • 更新**

授予我的IAM用户完全管理员访问权限允许我对后端进行amplify push操作。我现在遇到如下构建错误:
包com. amazonaws. mobileconnectors. apigateway.注解不存在
你访问的页面不存在
这些错误在生成的名为tb2api.TbapiClient.Java的包中出现6次
现在正在研究这个问题。(看,只需要添加implementation 'com.amazonaws:aws-android-sdk-apigateway-core:<version>'到gradle。

xqnpmsa8

xqnpmsa81#

Amplify内部版本正在使用的用户似乎没有apigateway:GET的权限。
转到IAM中的tb 2-amplify用户并查看“Permissions policies”。您应该有一个类型为AWS managed的策略名称AdministratorAccess-Amplify。该策略是Amplify项目所需的大多数权限。
如果用户没有该策略,请添加该策略,或者在遇到所需权限时添加这些权限。
这个策略应该会让您遇到下一个错误:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": 
            [
              "apigateway:DELETE",
              "apigateway:GET",
              "apigateway:PATCH",
              "apigateway:POST",
              "apigateway:PUT"
            ],
            "Resource": "*"
        }
    ]
}

编辑另一个Amplify用户reported an issue看起来与你所遇到的相同或极其相似。尝试为你的tb2-amplify用户授予完全权限,看看这是否能解决问题。如果能解决问题,说明你已经缩小了问题的范围。部署后删除“完全权限”,并添加到错误描述中。
EDIT 2如果授予用户完全访问权限起作用,那么可以将其缩小到我在上面设置的权限或托管策略AmazonAPIGatewayAdministrator。这些权限没有“条件”语句,这可能会产生影响。

我也强烈推荐去参观Amplify Discord channel,它非常活跃。

相关问题