在APEX中调用AWS S3的签名格式是通过生成一个带有必要信息的字符串,并使用AWS的Access Key和Secret Key对其进行加密生成签名。以下是一个示例:

public class AWSS3SignatureGenerator {
    public static String generateSignature(String httpMethod, String contentMd5, String contentType, String date, String canonicalizedAmzHeaders, String canonicalizedResource, String accessKey, String secretKey) {
        String stringToSign = httpMethod + "\n" +
                              contentMd5 + "\n" +
                              contentType + "\n" +
                              date + "\n" +
                              canonicalizedAmzHeaders +
                              canonicalizedResource;

        Blob signature = Crypto.signWithCertificate('RSA-SHA1', Blob.valueOf(stringToSign), 'aws-s3-private-key');
        String encodedSignature = EncodingUtil.base64Encode(signature);

        return 'AWS ' + accessKey + ':' + encodedSignature;
    }
}

在上述示例中,httpMethod表示HTTP请求方法(如GET、PUT等),contentMd5表示请求正文的MD5哈希值,contentType表示请求正文的类型,date表示请求的日期和时间,canonicalizedAmzHeaders表示AWS S3特定的请求头(如x-amz-acl等),canonicalizedResource表示请求的资源路径。

要使用该签名生成器,可以按照以下步骤调用:

String accessKey = 'your-access-key';
String secretKey = 'your-secret-key';

String httpMethod = 'GET';
String contentMd5 = '';
String contentType = '';
String date = 'Sat, 18 Sep 2021 16:53:29 GMT';
String canonicalizedAmzHeaders = '';
String canonicalizedResource = '/bucket-name/object-key';

String signature = AWSS3SignatureGenerator.generateSignature(httpMethod, contentMd5, contentType, date, canonicalizedAmzHeaders, canonicalizedResource, accessKey, secretKey);
System.debug(signature);

这将生成一个AWS S3签名字符串,并将其打印在调试日志中。签名字符串的格式如下:

AWS your-access-key:generated-signature

请注意,示例中使用了Crypto.signWithCertificate方法来生成签名,该方法是基于Apex中的RSA-SHA1算法。确保在使用之前,你已经在Salesforce中设置了与AWS S3访问密钥匹配的证书

用APEX调用AWS S3的签名格式是什么?举出例子

原文地址: http://www.cveoy.top/t/topic/h1mX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录