使用Android Amplify时无法列出AWS S3公用文件夹项目?

pod7payv  于 2023-03-27  发布在  Android
关注(0)|答案(2)|浏览(120)

我在我的应用程序中使用AWS的Amplify Android库,并且我正在尝试从S3桶中列出项目,正如Storage Amplify docs中提到的那样:

Amplify.Storage.list("/",
    { result ->
        Log.i("MyAmplifyApp", "Total Items : " + result.items.size)
        result.getItems().forEach { item ->
            Log.i("MyAmplifyApp", "Item: " + item.getKey())
        }
    },
    { error ->
        Log.e("MyAmplifyApp", "List failure", error)
        Toast.makeText(this, "Something went wrong. Please try again.", Toast.LENGTH_SHORT)
            .show()
    }
)

无论我提供什么路径,都返回0个项目。有什么想法吗?logcat没有打印错误。
注:

1.用户角色/策略具有S3的访问权限

  1. Cognito身份验证流可以很好地使用未经身份验证的用户,甚至是经过身份验证的用户
    1.路径存在
  2. Bucket存在且具有对象。
    提前致谢!
lf5gs5x2

lf5gs5x21#

我来晚了一点,但今天遇到了同样的问题。
事实证明,在您的S3存储桶中,如果您想要列出公共文件**,则必须提供名为'public'的文件夹**。
我今天浪费了大约5个小时修改ACL,并尝试其他选项,并在这里找到了答案Github for Amplify-js。我希望这将保存其他人一些时间。

qojgxg4l

qojgxg4l2#

我正在我的存储桶文件夹中获取图像列表。

Amplify.Storage.list("/folderName",
    { result ->
        Log.i("MyAmplifyApp", "Total Items : " + result.items.size)
        result.getItems().forEach { item ->
            Log.i("MyAmplifyApp", "Item: " + item.getKey())
        }
    },
    { error ->
        Log.e("MyAmplifyApp", "List failure", error)
        Toast.makeText(this, "Something went wrong. Please try again.", Toast.LENGTH_SHORT)
            .show()
    }
)

相关问题