| | |
| | | import com.ard.sample.config.DockConfiguration; |
| | | import com.ard.sample.storage.service.IStorageService; |
| | | import com.ard.oss.service.impl.OssServiceContext; |
| | | import com.ard.sample.utils.MinioStsUtils; |
| | | import io.minio.MinioClient; |
| | | import io.minio.PutObjectArgs; |
| | | import io.minio.credentials.StaticProvider; |
| | |
| | | |
| | | @Autowired |
| | | private OssServiceContext ossService; |
| | | @Autowired |
| | | private MinioStsUtils minioStsUtils; |
| | | |
| | | @Override |
| | | public StsCredentialsDTO getSTSCredentials() { |
| | | CredentialsDTO credentials = ossService.getCredentials(); |
| | | // CredentialsDTO credentials = ossService.getCredentials(); |
| | | CredentialsDTO credentials = minioStsUtils.getCredentials(); |
| | | |
| | | //验证一下minio的临时凭证是否可用 |
| | | log.info("验证临时凭证是否有效:{}", credentials); |
| | | log.info("验证http临时凭证是否有效:{}", credentials); |
| | | execMinio(DockConfiguration.endpoint, |
| | | credentials.getAccessKeyId(), |
| | | credentials.getAccessKeySecret(), |
| | | credentials.getSecurityToken(), |
| | | OssConfiguration.region, |
| | | DockConfiguration.bucket, |
| | | "test_object"); |
| | | "test_object_http"); |
| | | |
| | | // log.info("验证https临时凭证是否有效:{}", credentials); |
| | | // execMinio(OssConfiguration.endpoint, |
| | | // credentials.getAccessKeyId(), |
| | | // credentials.getAccessKeySecret(), |
| | | // credentials.getSecurityToken(), |
| | | // OssConfiguration.region, |
| | | // DockConfiguration.bucket, |
| | | // "test_object_https"); |
| | | |
| | | return StsCredentialsDTO.builder() |
| | | //机场媒体库minio配置信息用代理地址,桶用机场的桶。 |
| | | //.endpoint(OssConfiguration.endpoint) |
| | | .endpoint(DockConfiguration.endpoint) |
| | | // .bucket(OssConfiguration.bucket) |
| | | .bucket(DockConfiguration.bucket) |
| | | // .credentials(ossService.getCredentials()) |
| | | .credentials(credentials) |
| | | .provider(OssConfiguration.provider) |
| | | .objectKeyPrefix(OssConfiguration.objectDirPrefix) |
| | | .region(OssConfiguration.region) |
| | | .provider(DockConfiguration.provider) |
| | | .objectKeyPrefix(DockConfiguration.objectDirPrefix) |
| | | .region(DockConfiguration.region) |
| | | .build(); |
| | | |
| | | // return StsCredentialsDTO.builder() |
| | | // //机场媒体库minio配置信息用代理地址,桶用机场的桶。 |
| | | // .endpoint(OssConfiguration.endpoint) |
| | | // .bucket(OssConfiguration.bucket) |
| | | //// .credentials(ossService.getCredentials()) |
| | | // .credentials(credentials) |
| | | // .provider(OssConfiguration.provider) |
| | | // .objectKeyPrefix(OssConfiguration.objectDirPrefix) |
| | | // .region(OssConfiguration.region) |
| | | // .build(); |
| | | } |
| | | |
| | | @Override |
| | |
| | | String accessKeyId, |
| | | String accessKeySecret, |
| | | String securityToken, |
| | | String region, |
| | | String bucketName, |
| | | String testObjectName) { |
| | | // 1. 替换为你要验证的临时凭证参数(从 getCredentials() 返回的结果中复制) |
| | | try { |
| | | log.info("🔑 正在验证{}临时凭证有效性...", endpoint); |
| | | // 2. 用临时凭证(含 securityToken)初始化 MinIO 客户端 |
| | | MinioClient minioClient = MinioClient.builder() |
| | | .endpoint(endpoint) |
| | | // .credentials(accessKeyId, accessKeySecret) // 核心:传入 securityToken |
| | | .credentialsProvider(new StaticProvider(accessKeyId, accessKeySecret, securityToken)) |
| | | .region("us-east-1") // 和你配置的 region 一致 |
| | | .region(region) // 和你配置的 region 一致 us-east-1 |
| | | .build(); |
| | | |
| | | // 3. 执行验证操作:上传一个测试文件(模拟机场上传媒体文件) |