AWS 3クラウドサービスストレージの紹介とアップロードとダウンロード


私たちのプロジェクトで海外プロジェクトに関わると、AWS 3ファイルの使用は避けられません.Amazon Simple Storage Service(Amazon S 3)は、インターネット向けのストレージサービスです.AWS 3の主な概念を紹介します.
リザーバ:リザーバはAmazon S 3においてオブジェクトを格納するための容器である.各オブジェクトは1つのバケツに格納されます.例えばphoto/testという名前であれば.jpgのオブジェクトはバケツに格納され、endPointは次のように申請されます.https://johnsmith.s3.amazonaws.comURLを使用することができますhttps://johnsmith.s3.amazonaws.com/photo/test.jpgこのオブジェクトをアドレッシングする、メモリバケツに無限量のデータを格納し、各オブジェクトに最大5 TBのデータを含めることができる.
キー:キーは、バケツ内のオブジェクトの一意の識別子です.バケツ内の各オブジェクトには鍵が1つしかありません.URLhttp://doc.s3.amazonaws.com/2019-12-27/test.xmlでは、「doc」はバケツの名前であり、「2019-12-27/test.xml」は鍵であり、鍵はファイルの一意のラベルである.
AWS 3のアップロード、ダウンロード、削除などの機能を1つのdemoで示します.
1、maven依存を先に導入する.
 
        
            com.amazonaws
            aws-java-sdk-s3
            1.11.688
        

2、以下は具体例です.
public class AmazonCloudStorageService  {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());

   
    private static String accessKey=" ak ";

  
    private static String secretKey=" ";

    
    private static String bucketName=" ";

  

    private static final String SUFFIX = "/";

    private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");

    public static void main(String[] args) {
        upload(new File("C:\\Users\\Administrator\\Desktop\\test.xml"));
    }
    public static void upload(File file) {

        long begin = System.currentTimeMillis();

        AmazonS3Client connection = null;
        TransferManager tm = null;

        try {
            //  
          
           String effectKey = "effect" + SUFFIX + "test.xml";


            /*
             * Constructs a client instance
             */
            AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
            ClientConfiguration clientConfiguration = new ClientConfiguration();
            clientConfiguration.setMaxConnections(100);
            clientConfiguration.setSocketTimeout(7200000);
            clientConfiguration.setProtocol(Protocol.HTTPS);
            connection = new AmazonS3Client(credentials, clientConfiguration);

            /*
             * Determine whether the bucket exists
             */
            if (!connection.doesBucketExist(bucketName)) {
                connection.createBucket(bucketName);
            }

            /*
             * Upload an object to your bucket
             */
            tm = new TransferManager(connection);
            // TransferManager processes all transfers asynchronously,
            // so this call returns immediately.



            // , , 
            if(connection.doesObjectExist(bucketName,effectKey)){
                String fileName = file.getName();
                String suffixName= fileName.substring(fileName.lastIndexOf(".")+1);
                String unSuffix  = fileName.substring(0, fileName.lastIndexOf("."));
                String slaveFileName=unSuffix+formatter.format(LocalDateTime.now())+"."+suffixName;
                File slaveFile = new File(slaveFileName);
                Download download = tm.download(bucketName, effectKey,slaveFile);
                download.waitForCompletion();

                // 
                String archiveContentsKey = "archive" + SUFFIX + slaveFileName;
                System.out.println(" id---------------------------------------:{}"+archiveContentsKey);
                Upload upload = tm.upload(bucketName, archiveContentsKey, slaveFile);
                upload.waitForCompletion();

            }


            // 
            Upload upload = tm.upload(bucketName, effectKey, file);
            // Optionally, wait for the upload to finish before continuing
            upload.waitForCompletion();

            /**
             * set acl 
             */
            connection.setObjectAcl(bucketName, effectKey, CannedAccessControlList.PublicRead);

            long duration = (System.currentTimeMillis() - begin) / 1000;
         

        } catch (InterruptedException e) {
          
            throw new RuntimeException("upload to s3 failed.");
        } finally {
            if (tm != null) {
                tm.shutdownNow();
            }
            if (connection != null) {
                connection.shutdown();
            }
            
        }
    }
}

アップロードに成功したら、endPointに渡すことができます.たとえば、endPointは:https://johnsmith.s3.amazonaws.comでは、endPointは次のようになります.https://johnsmith.s3.amazonaws.com/effect/test.xmlはファイルにアクセスします.https://johnsmith.s3.amazonaws.com/archive/test20191228001023.xmlバックアップファイルへのアクセス