Memulai dengan AWS SDK for Java 2.x - AWS SDK for Java 2.x

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 untuk menentukan dependensi SDK untuk Java 2.x dan kemudian menulis kode yang terhubung ke untuk mengunggah file. Amazon S3

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.

  1. Buka terminal atau jendela prompt perintah dan arahkan ke direktori pilihan Anda, misalnya, Home folder Anda Desktop atau.

  2. Masukkan perintah berikut di terminal dan tekanEnter.

    mvn archetype:generate \ -DarchetypeGroupId=software.amazon.awssdk \ -DarchetypeArtifactId=archetype-app-quickstart \ -DarchetypeVersion=2.27.21
  3. 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>
  4. Setelah nilai terakhir dimasukkan, Maven mencantumkan pilihan yang Anda buat. Konfirmasikan dengan memasukkan Yatau memasukkan kembali nilai dengan memasukkan N.

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.

dependencyManagementBagian 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. mainMetode 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"); } }

DependencyFactoryKelas yang dibuat oleh Maven berisi metode s3Client pabrik yang membangun dan mengembalikan sebuah instance. S3Client S3ClientInstance menggunakan instance dari klien berbasis ApacheHTTP. Ini karena Anda menentukan apache-client kapan Maven meminta Anda untuk HTTP klien mana yang akan digunakan.

DependencyFactoryHal 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(); } }

HandlerKelas 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 TODOdengan.

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. sendRequestMetode 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 putObjectmetode. 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.

  1. 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.

  2. Buka terminal atau jendela prompt perintah dan arahkan ke direktori proyek Andagetstarted.

  3. Gunakan perintah berikut untuk membangun proyek Anda:

    mvn clean package
  4. 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.

  1. MasukHandler.java, komentari baris cleanUp(s3Client, bucket, key) dalam sendRequest metode dan simpan file.

  2. Membangun kembali proyek dengan menjalankanmvn clean package.

  3. Jalankan kembali mvn exec:java -Dexec.mainClass="org.example.App" untuk mengunggah objek teks sekali lagi.

  4. 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: