亚马逊 AWS-S3 文件服务器使用

亚马逊 AWS-S3 文件服务器使用

一、亚马逊 AWS-S3 服务器介绍
亚马逊 AWS-S3 文件服务器使用_第1张图片IAM用户介绍:
亚马逊 AWS-S3 文件服务器使用_第2张图片用户:
权限:用户有不同的权限,不同的权限对应不同的策略,可以利用策略配置不同权限的权利。
组:用来对角色进行分组,不同的组,可以绑定不同的用户,赋予用户不同的权限。
角色:不同的角色,可以将角色进行分组,对应不同的权限,用户可以绑定不同的角色。

二、用户与桶之间的关系
桶oracle数据库类似,用户带有权限,该权限规定的他对桶具有什么样的读写能力,比如说:可读可写、只可读不可写…
而桶本身也有权限,他可以根据策略来规定,那些资源可以被访问,哪些资源不能被访问。策略配置还能对单个用户访问单个桶进行权限的管理;

三、讲完桶与用户的关系后,直接上简单的demo

 //创建aws实例
    BasicAWSCredentials awsCreds = new BasicAWSCredentials(AwsAccessKey, AwsAccessKeySecret);  //创建aws凭证(AwsAccessKey用户秘钥,AwsAccessKeySecret用户私有秘钥)
    ClientConfiguration clientConfig = new ClientConfiguration(); //创建客户端配置对象
    clientConfig.setSignerOverride("S3SignerType");//凭证验证方式
    clientConfig.setProtocol(Protocol.HTTP);//访问协议
    // 流式构建客户端对象
    AmazonS3 s3 = AmazonS3ClientBuilder
            .standard()
            .withClientConfiguration(clientConfig)
            .withCredentials(new AWSStaticCredentialsProvider(awsCreds))//构建凭证
            .withRegion(Regions.AP_NORTHEAST_1)//构建桶地址(选择对应的桶的地址)
            .build();

    if(s3 == null){
      throw new NullPointerException("创建aws实例异常");
    }
    try {
      if (s3.doesBucketExistV2(AwsBucketName)) {
        System.out.println("您已经创建Bucket:" + AwsBucketName + "。");
      } else {
        System.out.println("您的Bucket不存在,创建Bucket:" + AwsBucketName + "。");
        s3.createBucket(AwsBucketName);
      }
      // 判断Bucket是否存在,存在则上传文件
      AccessControlList bucketAcl = s3.getBucketAcl(AwsBucketName);
      if(bucketAcl != null){
        // 上传文件
        ObjectMetadata om = new ObjectMetadata();//元数据信息
        om.setContentLength(multipartFile.getSize());
        s3.putObject(AwsBucketName, path,new ByteArrayInputStream(multipartFile.getBytes()),om);// s3客户端,上传对象的方法,这里要指定桶的名字、文件路径、文件的流、描述文件的元数据信息
      }
    } catch (AWSACMPCAException oe) {
      oe.printStackTrace();
    } catch (ClientException ce) {
      ce.printStackTrace();
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      s3.shutdown(); //关闭文件上传连接
    }

温馨提示:
如果服务器上传文件速度过慢,可以花钱开通加速上传服务,打开endPoint服务。
加速服务开通后,需要在本地构建客户端对象的时候,构建endPoint配置。(个人体会,开通加速上传服务后,并没有提速多少,和以前差不多慢)

你可能感兴趣的:(javaWeb技术积累)