一 ,aws 的 java 开发 :
1 ,文章和教程 :
- 目的 : 文章和教程部分提供了深入的文档,旨在为使用 AWS 的开发人员提供实际帮助。
- 创建人 : 它们由 AWS 开发人员社区或 Amazon 团队的成员创建
- 效果 : 基于 AWS 服务的实际使用提供结构化的示例、分析、提示、技巧和指南。
2 ,emr 是什么 :
- 官网 : Amazon EMR是一种web服务,可以轻松高效地处理大量数据。Amazon EMR使用Hadoop处理结合几个AWS产品来完成web索引、数据挖掘、日志文件分析、机器学习、科学模拟和数据仓库等任务。
- 孙 : 通过点按钮的形式来处理大数据,降低操作难度。
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.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/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.com/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 )
- img 是文件夹名
- 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 ,心得 :
- s3 的文件管理系统 : 每个文件夹和问价,都是一个存储单元,彼此独立
- img : 是一个文件单元。
- img/11.jpg :也是一个文件单元。