一 ,aws 的 java 开发 :

1 ,文章和教程 :

  1. 目的 : 文章和教程部分提供了深入的文档,旨在为使用 AWS 的开发人员提供实际帮助。
  2. 创建人 : 它们由 AWS 开发人员社区或 Amazon 团队的成员创建
  3. 效果 : 基于 AWS 服务的实际使用提供结构化的示例、分析、提示、技巧和指南。

2 ,emr 是什么 :

  1. 官网 : Amazon EMR是一种web服务,可以轻松高效地处理大量数据。Amazon EMR使用Hadoop处理结合几个AWS产品来完成web索引、数据挖掘、日志文件分析、机器学习、科学模拟和数据仓库等任务。
  2. 孙 : 通过点按钮的形式来处理大数据,降低操作难度。

3 ,用于 Java 示例项目的 AWS SDK

一个简单的 Java 应用程序,演示了 AWS SDK 的 Java 使用。

4 ,需要 :

maven

5 ,基本配置 : 安全凭证

aws_access_key_id = <您的访问密钥id>
aws_secret_access_key = <您的密钥>

二 ,java 访问 s3 :

1 ,pom 文件 :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache/POM/4.0.0"
         xmlns:xsi="http://www.w3/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache/POM/4.0.0 http://maven.apache/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.lifeCycle.spark</groupId>
    <artifactId>demo01</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>aws-java-sample</name>
    <url>http://aws.amazon/sdkforjava</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk</artifactId>
            <version>1.11.636</version>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>${env.HOME}/.aws/</directory>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.amazonaws.samples.S3Sample</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

2 ,创建桶 :

// 创建桶
public static void main(String[] args) {
    //  创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    //  桶的名字
    String bucketName = "sflfirst" + UUID.randomUUID();
    //  设置 k
    String key = "sflfirst";
    s3.createBucket(bucketName);
    System.out.println("创建成功");
}

3 ,桶列表 :

//  桶列表
public static void main(String[] args) {
    //  创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    for (Bucket bucket : s3.listBuckets()) {
        System.out.println(" - " + bucket.getName());
    }
}

4 ,上传文件到桶中 :

//  上传文件到桶中
public static void main(String[] args) {
    //创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    //  上传文件到桶中
    File file = new File("C:\\Users\\86182\\Desktop\\问题.txt");
    //  桶名,文件夹名,本地问价路径
    s3.putObject("demo02", "wenti", file);
    System.out.println("上传成功...");
}

5 ,桶中文件列表 : 文件夹中的文件也列出来

//  列出桶中所有对象,并且看到文件夹中的文件
public static void main(String[] args) {
    //  创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    //  文件夹名字 :
    ObjectListing objects = s3.listObjects("demo02");
    do
    {
        for (S3ObjectSummary objectSummary : objects.getObjectSummaries())
        {
            System.out.println("Object: " + objectSummary.getKey());
        }
        objects = s3.listNextBatchOfObjects(objects);
    } while (objects.isTruncated());
}

6 ,文件上传 : 到文件夹中 ( img/wenti )

  1. img 是文件夹名
  2. wenti 是文件名
//  上传文件到文件夹中
public static void main(String[] args) {
    //  创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    //  上传文件到桶中
    File file = new File("C:\\Users\\86182\\Desktop\\问题.txt");
    //  桶名,文件夹名,本地问价路径
    s3.putObject("demo02", "img/wenti", file);
    System.out.println("上传成功...");
}

7 ,文件下载 :

//  文件下载
publicstatic void main(String[] args) throws IOException {
    //  创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    //  下载文件 ( 桶名,文件夹名+文件名 )
    S3Object object = s3.getObject(new GetObjectRequest("demo02", "img/wenti"));
    //  得到输入流
    S3ObjectInputStream input = object.getObjectContent();
    //  转换成字符流
    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
    //  自定义输出流
    PrintWriter pw = new PrintWriter("C:\\Users\\86182\\Desktop\\s3inputfile\\myfile.txt");
    //  读这个流
    while (true) {
        String line = reader.readLine();
        if (line == null) break;
        pw.println(line);
    }
    System.out.println("写入成功...");
    reader.close();
    pw.close();
}

8 ,文件列表 : 指定前缀

ObjectListing objectListing = s3.listObjects(new ListObjectsRequest()
                    .withBucketName(bucketName)
                    .withPrefix("My"));
            for (S3ObjectSummary objectSummary : objectListing.getObjectSummaries()) {
                System.out.println(" - " + objectSummary.getKey() + "  " +
                        "(size = " + objectSummary.getSize() + ")");
            }

9 ,删除文件对象 : ( 桶名字,文件夹名+文件名 )

//  删除文件 :
public static void main(String[] args) {
    //  创建 s3 对象
    AmazonS3 s3 = new AmazonS3Client();
    //  设置区域 ( 我们使用的是宁夏区域 )
    s3.setRegion(Region.getRegion(Regions.CN_NORTHWEST_1));
    //  删除文件
    s3.deleteObject("demo02", "img/wenti");
}

10 ,心得 :

  1. s3 的文件管理系统 : 每个文件夹和问价,都是一个存储单元,彼此独立
  2. img : 是一个文件单元。
  3. img/11.jpg :也是一个文件单元。

更多推荐

14 ,java 操作 s3 ( 详细教程 )