|  |  |  | 
|---|
|  |  |  | import com.ruoyi.common.utils.StringUtils; | 
|---|
|  |  |  | import com.ruoyi.common.utils.uuid.IdUtils; | 
|---|
|  |  |  | import io.minio.*; | 
|---|
|  |  |  | import io.minio.errors.MinioException; | 
|---|
|  |  |  | import io.minio.http.Method; | 
|---|
|  |  |  | import io.minio.messages.*; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.io.File; | 
|---|
|  |  |  | import java.io.FileInputStream; | 
|---|
|  |  |  | import java.io.IOException; | 
|---|
|  |  |  | import java.io.InputStream; | 
|---|
|  |  |  | import java.security.InvalidKeyException; | 
|---|
|  |  |  | import java.security.NoSuchAlgorithmException; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.Collections; | 
|---|
|  |  |  | import java.util.LinkedList; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 创建桶,并设置桶策略为公共 | 
|---|
|  |  |  | * 创建桶 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static boolean createBucket(String bucket) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | if (StringUtils.isEmpty(bucket)) { | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /*创建桶*/ | 
|---|
|  |  |  | //创建桶 | 
|---|
|  |  |  | MakeBucketArgs makeBucketArgs = MakeBucketArgs.builder().bucket(bucket).build(); | 
|---|
|  |  |  | minioClient.makeBucket(makeBucketArgs); | 
|---|
|  |  |  | /*设置策略*/ | 
|---|
|  |  |  | setBucketPolicy(bucket);//设置桶策略 | 
|---|
|  |  |  | setBucketNotificationToMqtt(bucket);//设置桶通知到MQTT | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } catch (Exception ex) { | 
|---|
|  |  |  | log.error("minio创建桶异常:", ex.getMessage()); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 设置桶策略 | 
|---|
|  |  |  | * 刘苏义 | 
|---|
|  |  |  | * 2023/9/20 10:01:39 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static boolean setBucketPolicy(String bucket) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //设置策略 | 
|---|
|  |  |  | String sb = "{\"Version\":\"2012-10-17\"," + | 
|---|
|  |  |  | "\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":" + | 
|---|
|  |  |  | "{\"AWS\":[\"*\"]},\"Action\":[\"s3:ListBucket\",\"s3:ListBucketMultipartUploads\"," + | 
|---|
|  |  |  | 
|---|
|  |  |  | .bucket(bucket) | 
|---|
|  |  |  | .config(sb) | 
|---|
|  |  |  | .build(); | 
|---|
|  |  |  | /*设置通知mqtt*/ | 
|---|
|  |  |  | //设置mqtt主题 | 
|---|
|  |  |  | minioClient.setBucketPolicy(setBucketPolicyArgs); | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } catch (Exception ex) { | 
|---|
|  |  |  | log.error("设置桶策略异常:" + ex.getMessage()); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 设置桶通知到MQTT | 
|---|
|  |  |  | * 刘苏义 | 
|---|
|  |  |  | * 2023/9/20 9:59:40 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static boolean setBucketNotificationToMqtt(String bucket) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //设置通知mqtt | 
|---|
|  |  |  | NotificationConfiguration config = new NotificationConfiguration(); | 
|---|
|  |  |  | List<QueueConfiguration> queueConfigurations = new ArrayList<>(); | 
|---|
|  |  |  | QueueConfiguration queueConfiguration = new QueueConfiguration(); | 
|---|
|  |  |  | queueConfiguration.setQueue("arn:minio:sqs::_:mqtt"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //设置事件 | 
|---|
|  |  |  | List<EventType> events = new ArrayList<>(); | 
|---|
|  |  |  | events.add(EventType.OBJECT_REMOVED_ANY); | 
|---|
|  |  |  | events.add(EventType.OBJECT_CREATED_ANY); | 
|---|
|  |  |  | queueConfiguration.setEvents(events); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | queueConfigurations.add(queueConfiguration); | 
|---|
|  |  |  | config.setQueueConfigurationList(queueConfigurations); | 
|---|
|  |  |  | SetBucketNotificationArgs setBucketNotificationArgs = SetBucketNotificationArgs.builder() | 
|---|
|  |  |  | .bucket(bucket) | 
|---|
|  |  |  | .config(config).build(); | 
|---|
|  |  |  | minioClient.setBucketPolicy(setBucketPolicyArgs); | 
|---|
|  |  |  | minioClient.setBucketNotification(setBucketNotificationArgs); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } catch (Exception ex) { | 
|---|
|  |  |  | log.error("minio创建桶异常:", ex.getMessage()); | 
|---|
|  |  |  | log.error("设置桶通知异常:" + ex.getMessage()); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|