我用的 ServiceAccount 关联的 IAM Role 做的 k8s 应用内的授权。使用的 aws-java-sdk v1 的版本客户端。 这样 Presign 一个 S3 文件:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Date;
import com.amazonaws.SDKGlobalConfiguration;
import com.amazonaws.auth.WebIdentityTokenCredentialsProvider;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
public class S3Signer{
static{
System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY, "true");
}
public static String generateUrl(AmazonS3 amazonS3, String bucketName, String key) {
GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(bucketName,key);
// 1 hour expiration time

本文介绍如何使用Kubernetes ServiceAccount与IAM Role结合AWS Java SDK生成S3预签名URL,并解决常见错误如AuthorizationQueryParametersError及UnauthorizedAccess等问题。
最低0.47元/天 解锁文章
1109

被折叠的 条评论
为什么被折叠?



