zoukankan      html  css  js  c++  java
  • AmazonS3 使用AWS SDK for Java实现跨源资源共享 (CORS)

    CORS 配置

    • 创建 CORS 配置并对存储桶设置该配置
    • 通过添加规则来检索并修改配置
    • 向存储桶添加修改过的配置
    • 删除配置
    import com.amazonaws.AmazonServiceException;
    import com.amazonaws.SdkClientException;
    import com.amazonaws.auth.profile.ProfileCredentialsProvider;
    import com.amazonaws.regions.Regions;
    import com.amazonaws.services.s3.AmazonS3;
    import com.amazonaws.services.s3.AmazonS3ClientBuilder;
    import com.amazonaws.services.s3.model.BucketCrossOriginConfiguration;
    import com.amazonaws.services.s3.model.CORSRule;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class CORS {
    
        public static void main(String[] args) throws IOException {
            Regions clientRegion = Regions.DEFAULT_REGION;
            String bucketName = "*** Bucket name ***";
    
            // Create two CORS rules.
            List<CORSRule.AllowedMethods> rule1AM = new ArrayList<CORSRule.AllowedMethods>();
            rule1AM.add(CORSRule.AllowedMethods.PUT);
            rule1AM.add(CORSRule.AllowedMethods.POST);
            rule1AM.add(CORSRule.AllowedMethods.DELETE);
            CORSRule rule1 = new CORSRule().withId("CORSRule1").withAllowedMethods(rule1AM)
                    .withAllowedOrigins(Arrays.asList("http://*.example.com"));
    
            List<CORSRule.AllowedMethods> rule2AM = new ArrayList<CORSRule.AllowedMethods>();
            rule2AM.add(CORSRule.AllowedMethods.GET);
            CORSRule rule2 = new CORSRule().withId("CORSRule2").withAllowedMethods(rule2AM)
                    .withAllowedOrigins(Arrays.asList("*")).withMaxAgeSeconds(3000)
                    .withExposedHeaders(Arrays.asList("x-amz-server-side-encryption"));
    
            List<CORSRule> rules = new ArrayList<CORSRule>();
            rules.add(rule1);
            rules.add(rule2);
    
            // Add the rules to a new CORS configuration.
            BucketCrossOriginConfiguration configuration = new BucketCrossOriginConfiguration();
            configuration.setRules(rules);
    
            try {
                AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                        .withCredentials(new ProfileCredentialsProvider())
                        .withRegion(clientRegion)
                        .build();
    
                // Add the configuration to the bucket.
                s3Client.setBucketCrossOriginConfiguration(bucketName, configuration);
    
                // Retrieve and display the configuration.
                configuration = s3Client.getBucketCrossOriginConfiguration(bucketName);
                printCORSConfiguration(configuration);
    
                // Add another new rule.
                List<CORSRule.AllowedMethods> rule3AM = new ArrayList<CORSRule.AllowedMethods>();
                rule3AM.add(CORSRule.AllowedMethods.HEAD);
                CORSRule rule3 = new CORSRule().withId("CORSRule3").withAllowedMethods(rule3AM)
                        .withAllowedOrigins(Arrays.asList("http://www.example.com"));
    
                rules = configuration.getRules();
                rules.add(rule3);
                configuration.setRules(rules);
                s3Client.setBucketCrossOriginConfiguration(bucketName, configuration);
    
                // Verify that the new rule was added by checking the number of rules in the configuration.
                configuration = s3Client.getBucketCrossOriginConfiguration(bucketName);
                System.out.println("Expected # of rules = 3, found " + configuration.getRules().size());
    
                // Delete the configuration.
                s3Client.deleteBucketCrossOriginConfiguration(bucketName);
                System.out.println("Removed CORS configuration.");
    
                // Retrieve and display the configuration to verify that it was
                // successfully deleted.
                configuration = s3Client.getBucketCrossOriginConfiguration(bucketName);
                printCORSConfiguration(configuration);
            } catch (AmazonServiceException e) {
                // The call was transmitted successfully, but Amazon S3 couldn't process 
                // it, so it returned an error response.
                e.printStackTrace();
            } catch (SdkClientException e) {
                // Amazon S3 couldn't be contacted for a response, or the client
                // couldn't parse the response from Amazon S3.
                e.printStackTrace();
            }
        }
    
        private static void printCORSConfiguration(BucketCrossOriginConfiguration configuration) {
            if (configuration == null) {
                System.out.println("Configuration is null.");
            } else {
                System.out.println("Configuration has " + configuration.getRules().size() + " rules
    ");
    
                for (CORSRule rule : configuration.getRules()) {
                    System.out.println("Rule ID: " + rule.getId());
                    System.out.println("MaxAgeSeconds: " + rule.getMaxAgeSeconds());
                    System.out.println("AllowedMethod: " + rule.getAllowedMethods());
                    System.out.println("AllowedOrigins: " + rule.getAllowedOrigins());
                    System.out.println("AllowedHeaders: " + rule.getAllowedHeaders());
                    System.out.println("ExposeHeader: " + rule.getExposedHeaders());
                    System.out.println();
                }
            }
        }
    }
    
    
    
  • 相关阅读:
    jvm调优核心思路
    G1 垃圾回收器
    类加载和内存区域划分
    jvm优化案例
    垃圾回收
    buffer pool详解
    InnoDb存储引擎执行流程
    mysql总体架构
    (转载)C#串口介绍以及简单串口通信程序设计实现
    C++文本操作(读写文本文件/二进制文件)
  • 原文地址:https://www.cnblogs.com/liyao0312/p/13214144.html
Copyright © 2011-2022 走看看