无法使用AWS Amplify列出S3 Bucket中的对象(Flutter)

khbbv19g  于 2023-10-22  发布在  Flutter
关注(0)|答案(1)|浏览(124)

我正在尝试列出S3存储桶中的所有项目。我已经公开了我的存储桶,我的存储类型也设置为访客,但当我运行Amplify.Storage.list()方法时,它仍然抛出访问拒绝错误(403)
代码如下:

Future<void> listItems() async {
try {
 final ListResult result = await Amplify.Storage.list();
 final List<StorageItem> items = result.items;
 print('Got items: $items');
 } on StorageException catch (e) {
print('Error listing items: $e');
 }
}

我错过了什么?

uyto3xhc

uyto3xhc1#

对我来说,解决方法是将s3:ListBucket操作添加到策略中。下面是我的CDK实现(主要来自教程)。

// grant only read and list access to the bucket for unauthenticated users
const giveReadAccessS3 = new PolicyDocument({
  statements: [
    new PolicyStatement({
      resources: [
        props.storageBucketARN,
        `${props.storageBucketARN}/public/*`,
      ],
      actions: ['s3:GetObject', 's3:ListBucket'],
      effect: Effect.ALLOW,
    }),
  ],
});

相关问题