Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memulai dengan AWS SDK for Java 2.x
AWS SDK for Java 2.x Menyediakan Java APIs untuk Amazon Web Services (AWS). Dengan menggunakanSDK, Anda dapat membangun aplikasi Java yang bekerja dengan Amazon S3, Amazon EC2, DynamoDB, dan banyak lagi.
Tutorial ini menunjukkan kepada Anda bagaimana menggunakan Apache Maven
Ikuti langkah-langkah berikut untuk menyelesaikan tutorial ini:
Langkah 1: Siapkan tutorial ini
Sebelum Anda memulai tutorial ini, Anda memerlukan yang berikut:
-
Izin untuk mengakses Amazon S3
-
Lingkungan pengembangan Java yang dikonfigurasi untuk mengakses Layanan AWS menggunakan sistem masuk tunggal ke AWS IAM Identity Center
Gunakan instruksi Gambaran umum pengaturan untuk mengatur tutorial ini. Setelah Anda mengkonfigurasi lingkungan pengembangan Anda dengan akses masuk tunggal untuk Java SDK dan Anda memiliki sesi portal AWS akses aktif, lanjutkan dengan Langkah 2 dari tutorial ini.
Langkah 2: Buat proyek
Untuk membuat proyek untuk tutorial ini, Anda menjalankan perintah Maven yang meminta Anda untuk masukan tentang cara mengkonfigurasi proyek. Setelah semua input dimasukkan dan dikonfirmasi, Maven selesai membangun proyek dengan membuat pom.xml
dan membuat file Java rintisan.
-
Buka terminal atau jendela prompt perintah dan arahkan ke direktori pilihan Anda, misalnya,
Home
folder AndaDesktop
atau. -
Masukkan perintah berikut di terminal dan tekan
Enter
.mvn archetype:generate \ -DarchetypeGroupId=software.amazon.awssdk \ -DarchetypeArtifactId=archetype-app-quickstart \ -DarchetypeVersion=2.27.21
-
Masukkan nilai yang tercantum di kolom kedua untuk setiap prompt.
Prompt Nilai untuk masuk Define value for property 'service':
s3
Define value for property 'httpClient'
:apache-client
Define value for property 'nativeImage'
:false
Define value for property 'credentialProvider'
identity-center
Define value for property 'groupId':
org.example
Define value for property 'artifactId':
getstarted
Define value for property 'version' 1.0-SNAPSHOT:
<Enter>
Define value for property 'package' org.example:
<Enter>
-
Setelah nilai terakhir dimasukkan, Maven mencantumkan pilihan yang Anda buat. Konfirmasikan dengan memasukkan
Y
atau memasukkan kembali nilai dengan memasukkanN
.
Maven membuat folder proyek bernama getstarted
berdasarkan artifactId
nilai yang Anda masukkan. Di dalam getstarted
folder, temukan README.md
file yang dapat Anda tinjau, pom.xml
file, dan src
direktori.
Maven membangun pohon direktori berikut.
getstarted ├── README.md ├── pom.xml └── src ├── main │ ├── java │ │ └── org │ │ └── example │ │ ├── App.java │ │ ├── DependencyFactory.java │ │ └── Handler.java │ └── resources │ └── simplelogger.properties └── test └── java └── org └── example └── HandlerTest.java 10 directories, 7 files
Berikut ini menunjukkan isi dari file pom.xml
proyek.
dependencyManagement
Bagian ini berisi ketergantungan ke AWS SDK for Java 2.x dan dependencies
bagian tersebut memiliki ketergantungan untuk Amazon S3. Proyek ini menggunakan Java 1.8 karena 1.8
nilai dalam maven.compiler.source
dan maven.compiler.target
properti.
<?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>org.example</groupId> <artifactId>getstarted</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.shade.plugin.version>3.2.1</maven.shade.plugin.version> <maven.compiler.plugin.version>3.6.1</maven.compiler.plugin.version> <exec-maven-plugin.version>1.6.0</exec-maven-plugin.version> <aws.java.sdk.version>2.27.21</aws.java.sdk.version>
<-------- SDK version picked up from archetype version
. <slf4j.version>1.7.28</slf4j.version> <junit5.version>5.8.1</junit5.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>${aws.java.sdk.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId><-------- S3 dependency
<exclusions> <exclusion> <groupId>software.amazon.awssdk</groupId> <artifactId>netty-nio-client</artifactId> </exclusion> <exclusion> <groupId>software.amazon.awssdk</groupId> <artifactId>apache-client</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>sso</artifactId><-------- Required for identity center authentication.
</dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>ssooidc</artifactId><-------- Required for identity center authentication.
</dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>apache-client</artifactId><-------- HTTP client specified.
<exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>${slf4j.version}</version> </dependency> <!-- Needed to adapt Apache Commons Logging used by Apache HTTP Client to Slf4j to avoid ClassNotFoundException: org.apache.commons.logging.impl.LogFactoryImpl during runtime --> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${slf4j.version}</version> </dependency> <!-- Test Dependencies --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>${junit5.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven.compiler.plugin.version}</version> </plugin> </plugins> </build> </project>
Langkah 3: Tulis kodenya
Kode berikut menunjukkan App
kelas yang dibuat oleh Maven. main
Metode ini adalah titik masuk ke dalam aplikasi, yang menciptakan sebuah instance dari Handler
kelas dan kemudian memanggil sendRequest
metodenya.
package org.example; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class App { private static final Logger logger = LoggerFactory.getLogger(App.class); public static void main(String... args) { logger.info("Application starts"); Handler handler = new Handler(); handler.sendRequest(); logger.info("Application ends"); } }
DependencyFactory
Kelas yang dibuat oleh Maven berisi metode s3Client
pabrik yang membangun dan mengembalikan sebuah instance. S3Client
S3Client
Instance menggunakan instance dari klien berbasis ApacheHTTP. Ini karena Anda menentukan apache-client
kapan Maven meminta Anda untuk HTTP klien mana yang akan digunakan.
DependencyFactory
Hal ini ditunjukkan dalam kode berikut.
package org.example; import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.s3.S3Client; /** * The module containing all dependencies required by the {@link Handler}. */ public class DependencyFactory { private DependencyFactory() {} /** * @return an instance of S3Client */ public static S3Client s3Client() { return S3Client.builder() .httpClientBuilder(ApacheHttpClient.builder()) .build(); } }
Handler
Kelas berisi logika utama program Anda. Ketika sebuah instance Handler
dibuat di App
kelas, DependencyFactory
melengkapi klien S3Client
layanan. Kode Anda menggunakan S3Client
instance untuk memanggil layanan Amazon S3.
Maven menghasilkan Handler
kelas berikut dengan komentar. TODO
Langkah selanjutnya dalam tutorial menggantikan kode TODO
dengan.
package org.example; import software.amazon.awssdk.services.s3.S3Client; public class Handler { private final S3Client s3Client; public Handler() { s3Client = DependencyFactory.s3Client(); } public void sendRequest() { // TODO: invoking the api calls using s3Client. } }
Untuk mengisi logika, ganti seluruh isi Handler
kelas dengan kode berikut. sendRequest
Metode diisi dan impor yang diperlukan ditambahkan.
Kode pertama membuat bucket S3 baru dengan bagian terakhir dari nama yang dihasilkan System.currentTimeMillis()
untuk membuat nama bucket unik.
Setelah membuat bucket dalam createBucket()
metode, program mengunggah objek menggunakan putObject
S3Client
Isi objek adalah string sederhana yang dibuat dengan RequestBody.fromString
metode ini.
Akhirnya, program menghapus objek diikuti oleh bucket dalam cleanUp
metode.
package org.example; import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.CreateBucketRequest; import software.amazon.awssdk.services.s3.model.DeleteBucketRequest; import software.amazon.awssdk.services.s3.model.DeleteObjectRequest; import software.amazon.awssdk.services.s3.model.HeadBucketRequest; import software.amazon.awssdk.services.s3.model.PutObjectRequest; import software.amazon.awssdk.services.s3.model.S3Exception; public class Handler { private final S3Client s3Client; public Handler() { s3Client = DependencyFactory.s3Client(); } public void sendRequest() { String bucket = "bucket" + System.currentTimeMillis(); String key = "key"; createBucket(s3Client, bucket); System.out.println("Uploading object..."); s3Client.putObject(PutObjectRequest.builder().bucket(bucket).key(key) .build(), RequestBody.fromString("Testing with the {sdk-java}")); System.out.println("Upload complete"); System.out.printf("%n"); cleanUp(s3Client, bucket, key); System.out.println("Closing the connection to {S3}"); s3Client.close(); System.out.println("Connection closed"); System.out.println("Exiting..."); } public static void createBucket(S3Client s3Client, String bucketName) { try { s3Client.createBucket(CreateBucketRequest .builder() .bucket(bucketName) .build()); System.out.println("Creating bucket: " + bucketName); s3Client.waiter().waitUntilBucketExists(HeadBucketRequest.builder() .bucket(bucketName) .build()); System.out.println(bucketName + " is ready."); System.out.printf("%n"); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } public static void cleanUp(S3Client s3Client, String bucketName, String keyName) { System.out.println("Cleaning up..."); try { System.out.println("Deleting object: " + keyName); DeleteObjectRequest deleteObjectRequest = DeleteObjectRequest.builder().bucket(bucketName).key(keyName).build(); s3Client.deleteObject(deleteObjectRequest); System.out.println(keyName + " has been deleted."); System.out.println("Deleting bucket: " + bucketName); DeleteBucketRequest deleteBucketRequest = DeleteBucketRequest.builder().bucket(bucketName).build(); s3Client.deleteBucket(deleteBucketRequest); System.out.println(bucketName + " has been deleted."); System.out.printf("%n"); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } System.out.println("Cleanup complete"); System.out.printf("%n"); } }
Langkah 4: Bangun dan jalankan aplikasi
Setelah proyek dibuat dan berisi Handler
kelas lengkap, bangun dan jalankan aplikasi.
-
Pastikan Anda memiliki sesi Pusat IAM Identitas yang aktif. Untuk melakukannya, jalankan AWS Command Line Interface perintah
aws sts get-caller-identity
dan periksa responsnya. Jika Anda tidak memiliki sesi aktif, lihat bagian ini untuk petunjuk. -
Buka terminal atau jendela prompt perintah dan arahkan ke direktori proyek Anda
getstarted
. -
Gunakan perintah berikut untuk membangun proyek Anda:
mvn clean package
-
Gunakan perintah berikut untuk menjalankan aplikasi.
mvn exec:java -Dexec.mainClass="org.example.App"
Untuk melihat bucket dan objek baru yang dibuat program, lakukan langkah-langkah berikut.
-
Masuk
Handler.java
, komentari bariscleanUp(s3Client, bucket, key)
dalamsendRequest
metode dan simpan file. -
Membangun kembali proyek dengan menjalankan
mvn clean package
. -
Jalankan kembali
mvn exec:java -Dexec.mainClass="org.example.App"
untuk mengunggah objek teks sekali lagi. -
Masuk ke konsol S3
untuk melihat objek baru di bucket yang baru dibuat.
Setelah Anda melihat file, hapus objek, lalu hapus ember.
Berhasil
Jika proyek Maven Anda dibangun dan berjalan tanpa kesalahan, maka selamat! Anda telah berhasil membangun aplikasi Java pertama Anda menggunakan SDK untuk Java 2.x.
Pembersihan
Untuk membersihkan sumber daya yang Anda buat selama tutorial ini, lakukan hal berikut:
-
Jika Anda belum melakukannya, di konsol S3
, hapus objek apa pun dan ember apa pun yang dibuat saat Anda menjalankan aplikasi. -
Hapus folder proyek (
getstarted
).
Langkah selanjutnya
Sekarang setelah Anda memiliki dasar-dasarnya, Anda dapat mempelajari hal-hal berikut: