public static AuthenticatedFileIO newIcebergFileIo(CatalogMeta meta) {
    Map<String, String> catalogProperties = meta.getCatalogProperties();
    TableMetaStore store = CatalogUtil.buildMetaStore(meta);
    Configuration conf = store.getConfiguration();
    String warehouse = meta.getCatalogProperties().get(CatalogMetaProperties.KEY_WAREHOUSE);
    String defaultImpl = HADOOP_FILE_IO_IMPL;
    if (warehouse.toLowerCase().startsWith(S3_PROTOCOL_PREFIX)) {
      defaultImpl = S3_FILE_IO_IMPL;
    } else if (warehouse.toLowerCase().startsWith(OSS_PROTOCOL_PREFIX)) {
      defaultImpl = OSS_FILE_IO_IMPL;
    }
    String ioImpl = catalogProperties.getOrDefault(CatalogProperties.FILE_IO_IMPL, defaultImpl);
    FileIO fileIO = org.apache.iceberg.CatalogUtil.loadFileIO(ioImpl, catalogProperties, conf);
    return AuthenticatedFileIOs.buildAdaptIcebergFileIO(store, fileIO);
  }
create an iceberg file io instance

@param meta catalog meta
@return iceberg file io
amoro-ams/src/main/java/org/apache/amoro/server/utils/InternalTableUtil.java