

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Memulai dengan AWS SDK untuk Java 2.x
<a name="get-started"></a>

Bagian dalam topik ini memandu Anda melalui langkah-langkah penting untuk mulai membangun aplikasi Java yang terhubung ke Layanan AWS. Bagian tersebut mencakup pengaturan lingkungan pengembangan Anda dengan Java dan membangun alat seperti Maven atau Gradle, mengonfigurasi otentikasi aman ke AWS, dan membuat aplikasi kerja pertama Anda melalui tutorial langsung. Topik ramah pemula ini berfungsi sebagai titik masuk Anda untuk AWS pengembangan dengan Java, memberikan fondasi yang Anda perlukan sebelum menjelajahi fitur-fitur yang lebih canggih.

**Contents**
+ [Menyiapkan AWS SDK untuk Java 2.x](setup.md)
  + [Gambaran umum pengaturan](setup.md#setup-overview)
  + [Instal Java dan alat build untuk bekerja dengan AWS SDK for Java 2.x](setup-java-buildtool.md)
  + [Siapkan proyek Apache Maven yang menggunakan AWS SDK for Java 2.x](setup-project-maven.md)
    + [Prasyarat](setup-project-maven.md#prerequisitesmaven)
    + [Buat proyek Maven](setup-project-maven.md#create-maven-project)
    + [Konfigurasikan compiler Java untuk Maven](setup-project-maven.md#configure-maven-compiler)
    + [Mendeklarasikan SDK sebagai dependensi](setup-project-maven.md#sdk-as-dependency)
    + [Tetapkan dependensi untuk modul SDK](setup-project-maven.md#modules-dependencies)
      + [Membangun seluruh SDK ke dalam proyek Anda](setup-project-maven.md#build-the-entire-sdk-into-your-project)
    + [Bangun proyek Anda](setup-project-maven.md#build-project)
  + [Siapkan proyek Gradle yang menggunakan AWS SDK for Java 2.x](setup-project-gradle.md)
  + [Siapkan proyek Gambar Asli GraalVM yang menggunakan AWS SDK for Java 2.x](setup-project-graalvm.md)
    + [Prasyarat](setup-project-graalvm.md#setup-graalvmnativeimage-prereq)
    + [Buat proyek menggunakan pola dasar](setup-project-graalvm.md#setup-graalvmnativeimage-project)
    + [Membangun gambar asli](setup-project-graalvm.md#build-graalvmnativeimage-project)
+ [Mengautentikasi dengan AWS menggunakan AWS SDK for Java 2.x](get-started-auth.md)
  + [Siapkan untuk otentikasi](get-started-auth.md#setup-auth)
    + [1. Pengembangan lokal menggunakan kredensil jangka pendek](get-started-auth.md#setup-login)
    + [2. Pengaturan untuk akses masuk tunggal untuk SDK](get-started-auth.md#setup-credentials)
    + [3. Masuk menggunakan AWS CLI](get-started-auth.md#setup-login-sso)
  + [Opsi otentikasi tambahan](get-started-auth.md#setup-additional)
+ [Membuat aplikasi sederhana menggunakan AWS SDK for Java 2.x](get-started-tutorial.md)
  + [Langkah 1: Siapkan untuk tutorial ini](get-started-tutorial.md#get-started-setup)
  + [Langkah 2: Buat proyek](get-started-tutorial.md#get-started-projectsetup)
  + [Langkah 3: Tulis kodenya](get-started-tutorial.md#get-started-code)
  + [Langkah 4: Bangun dan jalankan aplikasi](get-started-tutorial.md#get-started-run)
    + [Berhasil](get-started-tutorial.md#get-started-success)
    + [Pembersihan](get-started-tutorial.md#cleanup)
  + [Langkah selanjutnya](get-started-tutorial.md#get-started-next)

# Menyiapkan AWS SDK untuk Java 2.x
<a name="setup"></a>

Bagian ini memberikan informasi tentang cara mengatur lingkungan pengembangan dan proyek Anda untuk menggunakan AWS SDK for Java 2.x.

## Gambaran umum pengaturan
<a name="setup-overview"></a>

Untuk berhasil mengembangkan aplikasi yang mengakses Layanan AWS menggunakan AWS SDK untuk Java, kondisi berikut diperlukan:
+ Java SDK harus memiliki akses ke kredensional untuk [mengautentikasi permintaan](get-started-auth.md#setup-auth) atas nama Anda.
+ [Izin peran IAM yang](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) dikonfigurasi untuk SDK harus mengizinkan akses ke Layanan AWS yang dibutuhkan aplikasi Anda. Izin yang terkait dengan kebijakan **PowerUserAccess** AWS terkelola cukup untuk sebagian besar kebutuhan pengembangan.
+ Lingkungan pengembangan dengan elemen-elemen berikut:
  + [File konfigurasi bersama](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) yang diatur setidaknya dalam salah satu cara berikut:
    + `config`File ini berisi [pengaturan masuk tunggal Pusat Identitas IAM](get-started-auth.md#setup-credentials) sehingga SDK bisa mendapatkan kredensi. AWS 
    + `credentials`File tersebut berisi kredensial sementara.
  + [Instalasi Java 8](setup-java-buildtool.md) atau yang lebih baru.
  + [Alat otomatisasi build](setup-java-buildtool.md) [seperti [Maven](https://maven.apache.org/download.cgi) atau Gradle.](https://gradle.org/install/)
  + Editor teks untuk bekerja dengan kode.
  + (Opsional, tetapi disarankan) IDE (lingkungan pengembangan terintegrasi) seperti [IntelliJ](https://www.jetbrains.com/idea/download/#section=windows) IDEA[, Eclipse,](https://www.eclipse.org/ide/) atau. [NetBeans](https://netbeans.apache.org/front/main/download/index.html)

    Jika Anda menggunakan IntelliJ IDEA, Anda juga dapat menambahkan IDEA untuk [AWS Toolkit for IntelliJLayanan AWS diintegrasikan](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/welcome.html) langsung ke IDE untuk membantu Anda merampingkan pengembangan.
+ Sesi portal AWS akses aktif saat Anda siap menjalankan aplikasi Anda. Anda menggunakan AWS Command Line Interface untuk [memulai proses masuk ke portal akses](get-started-auth.md#setup-login-sso) IAM Identity Center. AWS 

**penting**  
Petunjuk di bagian penyiapan ini mengasumsikan bahwa Anda atau organisasi menggunakan IAM Identity Center. Jika organisasi Anda menggunakan penyedia identitas eksternal yang bekerja secara independen dari IAM Identity Center, cari tahu bagaimana Anda bisa mendapatkan kredensi sementara untuk SDK for Java untuk digunakan. Ikuti [petunjuk ini](credentials-temporary.md#credentials-temporary-from-portal) untuk menambahkan kredensi sementara ke file. `~/.aws/credentials`  
Jika penyedia identitas Anda menambahkan kredensi sementara secara otomatis ke `~/.aws/credentials` file, pastikan bahwa nama profil tersebut `[default]` sehingga Anda tidak perlu memberikan nama profil ke SDK atau. AWS CLI

# Instal Java dan alat build untuk bekerja dengan AWS SDK for Java 2.x
<a name="setup-java-buildtool"></a>

Anda memerlukan persyaratan lingkungan pengembangan Java berikut untuk bekerja dengan SDK for Java 2.x:
+ Java 8 atau yang lebih baru. [https://developers.redhat.com/products/openjdk/overview](https://developers.redhat.com/products/openjdk/overview)
+ Alat build yang kompatibel dengan Maven seperti Apache Maven, Apache Ant dengan Ivy, Gradle, atau IntelliJ.
  + [Untuk informasi tentang cara menginstal dan menggunakan Maven, lihat https://maven.apache.org/.](https://maven.apache.org/)
  + [Untuk informasi tentang cara menginstal dan menggunakan Apache Ivy, lihat https://ant.apache.org/ivy/.](https://ant.apache.org/ivy/)
  + Untuk informasi tentang cara menginstal dan menggunakan Gradle, lihat [https://gradle.org/.](https://gradle.org/)
  + Untuk informasi tentang cara menginstal dan menggunakan IntelliJ IDEA, lihat. [https://www.jetbrains.com/idea/](https://www.jetbrains.com/idea/)

# Siapkan proyek Apache Maven yang menggunakan AWS SDK for Java 2.x
<a name="setup-project-maven"></a>

Anda dapat menggunakan [Apache Maven](https://maven.apache.org/) untuk menyiapkan dan membangun AWS SDK for Java 2.x proyek, atau untuk [membangun SDK itu sendiri](https://github.com/aws/aws-sdk-java-v2/tree/master#building-from-source).

## Prasyarat
<a name="prerequisitesmaven"></a>

Untuk menggunakan SDK for Java 2.x dengan Maven, Anda memerlukan yang berikut ini:
+ Java *8.0 atau yang lebih baru*. Anda dapat mengunduh perangkat lunak Java SE Development Kit terbaru dari [http://www.oracle. com/technetwork/java/javase/downloads](https://www.oracle.com/java/technologies/downloads/)/. SDK for Java 2.x juga bekerja dengan [OpenJDK Amazon Corretto dan, distribusi Open](https://openjdk.org/) Java Development Kit (OpenJDK). Unduh versi OpenJDK terbaru dari. [https://openjdk.java.net/install/index.html](https://openjdk.org/install/index.html) Unduh versi Amazon Corretto 8 atau Amazon Corretto 11 terbaru [dari Corretto halaman](https://aws.amazon.com/corretto/).
+  *Apache Maven*. Jika Anda perlu menginstal Maven, buka [http://maven.apache.org/](https://maven.apache.org/) untuk mengunduh dan menginstalnya.

## Buat proyek Maven
<a name="create-maven-project"></a>

Untuk membuat proyek Maven dari baris perintah, jalankan perintah berikut dari terminal atau jendela prompt perintah. `` ``

```
mvn -B archetype:generate \
 -DarchetypeGroupId=software.amazon.awssdk \
 -DarchetypeArtifactId=archetype-lambda -Dservice=s3 -Dregion=US_WEST_2 \
 -DarchetypeVersion=2.X.X \
 -DgroupId=com.example.myapp \
 -DartifactId=myapp
```

**catatan**  
Ganti *com.example.myapp* dengan namespace paket lengkap aplikasi Anda. Juga ganti *myapp* dengan nama proyek Anda. Ini menjadi nama direktori untuk proyek Anda.  
Untuk menggunakan arketipe versi terbaru, ganti *2.X.X* dengan yang [terbaru dari](https://central.sonatype.com/artifact/software.amazon.awssdk/archetype-lambda) Maven central.

Perintah ini membuat proyek Maven menggunakan toolkit templating arketipe. Pola dasar menghasilkan perancah untuk proyek penangan fungsi. AWS Lambda Arketipe proyek ini telah dikonfigurasi sebelumnya untuk dikompilasi dengan Java SE 8 dan menyertakan ketergantungan ke versi SDK for Java 2.x yang ditentukan dengan. `-DarchetypeVersion`

Untuk informasi selengkapnya tentang membuat dan mengonfigurasi proyek Maven, lihat Panduan Memulai [Maven](https://maven.apache.org/guides/getting-started/).

## Konfigurasikan compiler Java untuk Maven
<a name="configure-maven-compiler"></a>

Jika Anda membuat proyek menggunakan pola dasar AWS Lambda proyek seperti yang dijelaskan sebelumnya, konfigurasi kompiler Java sudah dilakukan untuk Anda.

Untuk memverifikasi bahwa konfigurasi ini ada, mulailah dengan membuka `pom.xml` file dari folder proyek yang Anda buat (misalnya,`myapp`) ketika Anda menjalankan perintah sebelumnya. Lihat pada baris 11 dan 12 untuk melihat pengaturan versi kompiler Java untuk proyek Maven ini, dan penyertaan yang diperlukan dari plugin kompiler Maven pada baris 71-75.

```
<project>
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven.compiler.plugin.version}</version>
      </plugin>
    </plugins>
  </build>
</project>
```

**Jika Anda membuat proyek dengan pola dasar yang berbeda atau dengan menggunakan metode lain, Anda harus memastikan bahwa plugin kompiler Maven adalah bagian dari build dan properti sumber dan targetnya disetel ke 1.8 dalam file.** `pom.xml`

Lihat cuplikan sebelumnya untuk satu cara mengonfigurasi pengaturan yang diperlukan ini.

Atau, Anda dapat mengkonfigurasi konfigurasi kompiler sebaris dengan deklarasi plugin, sebagai berikut.

```
<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
```

## Mendeklarasikan SDK sebagai dependensi
<a name="sdk-as-dependency"></a>

Untuk menggunakan AWS SDK untuk Java dalam proyek Anda, Anda perlu mendeklarasikannya sebagai dependensi dalam file proyek Anda. `pom.xml`

Jika Anda membuat proyek menggunakan pola dasar proyek seperti yang dijelaskan sebelumnya, versi terbaru SDK sudah dikonfigurasi sebagai dependensi dalam proyek Anda. 

Pola dasar menghasilkan ketergantungan artefak BOM (bill of material) untuk id grup. `software.amazon.awssdk` Dengan BOM, Anda tidak perlu menentukan versi maven untuk dependensi artefak individual yang berbagi id grup yang sama.

Jika Anda membuat proyek Maven dengan cara yang berbeda, konfigurasikan versi terbaru SDK untuk proyek Anda dengan memastikan bahwa `pom.xml` file tersebut berisi yang berikut ini.

```
<project>
  <properties>
    <aws.java.sdk.version>2.X.X</aws.java.sdk.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>
</project>
```

**catatan**  
Ganti *2.X.X* dalam `pom.xml` file dengan [versi terbaru dari](https://central.sonatype.com/artifact/software.amazon.awssdk/bom) file AWS SDK for Java 2.x.

## Tetapkan dependensi untuk modul SDK
<a name="modules-dependencies"></a>

Sekarang setelah Anda mengonfigurasi SDK, Anda dapat menambahkan dependensi untuk satu atau beberapa AWS SDK untuk Java modul yang akan digunakan dalam proyek Anda.

Meskipun Anda dapat menentukan nomor versi untuk setiap komponen, Anda tidak perlu melakukannya karena Anda sudah mendeklarasikan versi SDK di `dependencyManagement` bagian menggunakan artefak tagihan bahan. Untuk memuat versi berbeda dari modul yang diberikan, tentukan nomor versi untuk ketergantungannya.

Jika Anda membuat proyek menggunakan pola dasar proyek seperti yang dijelaskan sebelumnya, proyek Anda sudah dikonfigurasi dengan beberapa dependensi. Ini termasuk dependensi untuk penangan AWS Lambda fungsi dan Amazon S3, sebagai berikut.

```
<project>
    <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>s3</artifactId>
            <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>url-connection-client</artifactId>
        </dependency>

        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-lambda-java-core</artifactId>
            <version>${aws.lambda.java.version}</version>
        </dependency>
    </dependencies>
</project>
```

**catatan**  
Pada `pom.xml` contoh di atas, dependensi berasal dari s yang berbeda`groupId`. `s3`Ketergantungan berasal dari`software.amazon.awssdk`, sedangkan `aws-lambda-java-core` dependensi berasal dari. `com.amazonaws` Konfigurasi manajemen ketergantungan BOM memengaruhi artefak untuk`software.amazon.awssdk`, sehingga diperlukan versi untuk artefak. `aws-lambda-java-core`  
Untuk pengembangan *penangan fungsi Lambda* menggunakan SDK for Java 2.x`aws-lambda-java-core`, adalah dependensi yang benar. Namun, jika aplikasi Anda perlu mengelola sumber daya Lambda, menggunakan operasi seperti`listFunctions`,,, dan `deleteFunction` `invokeFunction``createFunction`, aplikasi Anda memerlukan dependensi berikut.   

```
<groupId>software.amazon.awssdk</groupId>
<artifactId>lambda</artifactId>
```

**catatan**  
`s3`Ketergantungan mengecualikan dependensi `netty-nio-client` dan `apache-client` transitif. Sebagai pengganti salah satu klien HTTP tersebut, arketipe mencakup `url-connection-client` ketergantungan, yang membantu [mengurangi latensi startup untuk fungsi](lambda-optimize-starttime.md#lambda-quick-url). AWS Lambda 

Tambahkan modul ke proyek Anda untuk Layanan AWS dan fitur yang Anda butuhkan untuk proyek Anda. Modul (dependensi) yang dikelola oleh AWS SDK untuk Java BOM terdaftar di repositori pusat [Maven](https://central.sonatype.com/artifact/software.amazon.awssdk/bom).

**catatan**  
Anda dapat melihat `pom.xml` file dari contoh kode untuk menentukan dependensi mana yang Anda butuhkan untuk proyek Anda. [Misalnya, jika Anda tertarik dengan dependensi untuk layanan DynamoDB, lihat [contoh ini dari Repositori Contoh Kode](https://github.com/awsdocs/aws-doc-sdk-examples/blob/da520cb4436f8567a90b6f73f77232fd590a50bf/javav2/example_code/dynamodb/pom.xml) di.AWS](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2) GitHub (Cari `pom.xml` file di bawah [/javav2/example\$1code/dynamodb](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/dynamodb).)

### Membangun seluruh SDK ke dalam proyek Anda
<a name="build-the-entire-sdk-into-your-project"></a>

Untuk mengoptimalkan aplikasi Anda, kami sangat menyarankan agar Anda hanya menarik komponen yang Anda butuhkan, bukan seluruh SDK. Namun, untuk membangun keseluruhan AWS SDK untuk Java ke dalam proyek Anda, nyatakan dalam `pom.xml` file Anda, sebagai berikut.

```
<project>
  <dependencies>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>aws-sdk-java</artifactId>
      <version>2.X.X</version>
    </dependency>
  </dependencies>
</project>
```

## Bangun proyek Anda
<a name="build-project"></a>

Setelah Anda mengkonfigurasi `pom.xml` file, Anda dapat menggunakan Maven untuk membangun proyek Anda.

Untuk membangun proyek Maven Anda dari baris perintah, buka jendela terminal atau command prompt, arahkan ke direktori proyek Anda (misalnya,`myapp`), masukkan atau tempel perintah berikut, lalu tekan Enter atau Return.

```
mvn package
```

Ini menciptakan satu `.jar` file (JAR) di `target` direktori (misalnya,`myapp/target`). JAR ini berisi semua modul SDK yang Anda tentukan sebagai dependensi dalam file Anda. `pom.xml`

# Siapkan proyek Gradle yang menggunakan AWS SDK for Java 2.x
<a name="setup-project-gradle"></a>

Anda dapat menggunakan [Gradle](https://gradle.org/) untuk menyiapkan dan membangun AWS SDK for Java 2.x proyek. 

Langkah awal dalam contoh berikut berasal dari [panduan Memulai Gradle](https://docs.gradle.org/current/samples/sample_building_java_applications.html) untuk versi 8.4. Jika Anda menggunakan versi yang berbeda, hasil Anda mungkin sedikit berbeda.

**Untuk membuat aplikasi Java dengan Gradle (baris perintah)**

1. Buat direktori untuk menampung proyek Anda. Dalam contoh ini, `demo` adalah nama direktori.

1. Di dalam `demo` direktori, jalankan `gradle init` perintah dan berikan nilai yang disorot dengan warna merah seperti yang ditunjukkan pada output baris perintah berikut. Untuk berjalan-jalan, kami memilih Kotlin sebagai bahasa DSL skrip build, tetapi contoh lengkap untuk Groovy juga ditampilkan di akhir topik ini.

   ```
   > gradle init
   Starting a Gradle Daemon (subsequent builds will be faster)
   
   Select type of project to generate:
   1: basic
   2: application
   3: library
   4: Gradle plugin
   Enter selection (default: basic) [1..4] 2
   
   Select implementation language:
   1: C++
   2: Groovy
   3: Java
   4: Kotlin
   5: Scala
   6: Swift
   Enter selection (default: Java) [1..6] 3
   
   Generate multiple subprojects for application? (default: no) [yes, no] no
   Select build script DSL:
   1: Kotlin
   2: Groovy
   Enter selection (default: Kotlin) [1..2] <Enter>
   
   Select test framework:
   1: JUnit 4
   2: TestNG
   3: Spock
   4: JUnit Jupiter
   Enter selection (default: JUnit Jupiter) [1..4] 4
   
   Project name (default: demo): <Enter>
   Source package (default: demo): <Enter>
   Enter target version of Java (min. 7) (default: 11): <Enter>
   Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no] <Enter>
   
   > Task :init
   To learn more about Gradle by exploring our Samples at https://docs.gradle.org/8.4/samples/sample_building_java_applications.html
   
   BUILD SUCCESSFUL in 3m 43s
   2 actionable tasks: 2 executed
   ```

1. Setelah `init` tugas selesai, `demo` direktori berisi struktur pohon berikut. Kami melihat lebih dekat pada file build utama, `build.gradle.kts` (disorot dengan warna merah), di bagian selanjutnya.

   ```
   ├── app
   │   ├── build.gradle.kts
   │   └── src
   │       ├── main
   │       │   ├── java
   │       │   │   └── demo
   │       │   │       └── App.java
   │       │   └── resources
   │       └── test
   │           ├── java
   │           │   └── demo
   │           │       └── AppTest.java
   │           └── resources
   ├── gradle
   │   └── wrapper
   │       ├── gradle-wrapper.jar
   │       └── gradle-wrapper.properties
   ├── gradlew
   ├── gradlew.bat
   └── settings.gradle.kts
   ```

   `build.gradle.kts`File berisi konten perancah berikut.

   ```
   /*
    * This file was generated by the Gradle 'init' task.
    *
    * This generated file contains a sample Java application project to get you started.
    * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.4/userguide/building_java_projects.html in the Gradle documentation.
    */
   
   plugins {
       // Apply the application plugin to add support for building a CLI application in Java.
       application
   }
   
   repositories {
       // Use Maven Central for resolving dependencies.
       mavenCentral()
   }
   
   dependencies {
       // Use JUnit Jupiter for testing.
       testImplementation("org.junit.jupiter:junit-jupiter:5.9.3")
   
       testRuntimeOnly("org.junit.platform:junit-platform-launcher")
   
       // This dependency is used by the application.
       implementation("com.google.guava:guava:33.3.0-jre")
   }
   
   // Apply a specific Java toolchain to ease working on different environments.
   java {
       toolchain {
           languageVersion.set(JavaLanguageVersion.of(11))
       }
   }
   
   application {
       // Define the main class for the application.
       mainClass.set("demo.App")
   }
   
   tasks.named<Test>("test") {
       // Use JUnit Platform for unit tests.
       useJUnitPlatform()
   }
   ```

1. Gunakan file build Gradle scaffolded sebagai dasar untuk proyek Anda. AWS 

   1. Untuk mengelola dependensi SDK untuk project Gradle Anda, tambahkan Maven bill of materials (BOM) AWS SDK for Java 2.x untuk bagian file. `dependencies` `build.gradle.kts`

      ```
      ...
      dependencies {
          implementation(platform("software.amazon.awssdk:bom:2.27.21"))
          // With the bom declared, you specify individual SDK dependencies without a version.
       ...
      }
      ...
      ```
**catatan**  
Dalam contoh file build ini, ganti *2.27.21* dengan versi terbaru SDK for Java 2.x. Temukan versi terbaru yang tersedia di repositori [pusat Maven](https://central.sonatype.com/artifact/software.amazon.awssdk/bom/versions).

   1. Tentukan modul SDK yang dibutuhkan aplikasi Anda di `dependencies` bagian ini. Sebagai contoh, berikut ini menambahkan ketergantungan pada Amazon Simple Storage Service. 

      ```
      ...
      dependencies {    
          implementation(platform("software.amazon.awssdk:bom:2.27.21"))
          implementation("software.amazon.awssdk:s3")
       ...
      }
      ...
      ```

      Gradle secara otomatis menyelesaikan versi dependensi yang dideklarasikan dengan menggunakan informasi dari BOM.

Contoh berikut menunjukkan file build Gradle lengkap di Kotlin dan Groovy. DSLs File build berisi dependensi untuk Amazon S3, otentikasi, logging, dan pengujian. Versi sumber dan target Java adalah versi 11.

------
#### [ Kotlin DSL (build.gradle.kts) ]

```
/*
 * This file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java application project to get you started.
 * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.4/userguide/building_java_projects.html in the Gradle documentation.
 */

plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    application
}

repositories {
    // Use Maven Central for resolving dependencies.
    mavenCentral()
}

dependencies {
    implementation(platform("software.amazon.awssdk:bom:2.20.56"))
    implementation("software.amazon.awssdk:s3")
    implementation("software.amazon.awssdk:sso")
    implementation("software.amazon.awssdk:ssooidc")
    implementation(platform("org.apache.logging.log4j:log4j-bom:2.20.0"))
    implementation("org.apache.logging.log4j:log4j-slf4j2-impl")
    implementation("org.apache.logging.log4j:log4j-1.2-api")
    testImplementation(platform("org.junit:junit-bom:5.10.0"))
    testImplementation("org.junit.jupiter:junit-jupiter")
}

// Apply a specific Java toolchain to ease working on different environments.
java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(11))
    }
}

application {
    // Define the main class for the application.
    mainClass.set("demo.App")
}

tasks.named<Test>("test") {
    // Use JUnit Platform for unit tests.
    useJUnitPlatform()
}
```

------
#### [ Groovy DSL (build.gradle) ]

```
/*
 * This file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java application project to get you started.
 * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.4/userguide/building_java_projects.html in the Gradle documentation.
 */

plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    id 'application'
}

repositories {
    // Use Maven Central for resolving dependencies.
    mavenCentral()
}

dependencies {
    implementation platform('software.amazon.awssdk:bom:2.27.21')
    implementation 'software.amazon.awssdk:s3'
    implementation 'software.amazon.awssdk:sso'
    implementation 'software.amazon.awssdk:ssooidc'
    implementation platform('org.apache.logging.log4j:log4j-bom:2.20.0')
    implementation 'org.apache.logging.log4j:log4j-slf4j2-impl'
    implementation 'org.apache.logging.log4j:log4j-1.2-api'
    testImplementation platform('org.junit:junit-bom:5.10.0')
    testImplementation 'org.junit.jupiter:junit-jupiter'
}

// Apply a specific Java toolchain to ease working on different environments.
java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(11)
    }
}

application {
    // Define the main class for the application.
    mainClass = 'demo_groovy.App'
}

tasks.named('test') {
    // Use JUnit Platform for unit tests.
    useJUnitPlatform()
}
```

------

Untuk langkah selanjutnya, lihat panduan Memulai di situs web Gradle untuk petunjuk tentang cara [membuat dan menjalankan aplikasi Gradle](https://docs.gradle.org/current/samples/sample_building_java_applications.html#run_the_application).

# Siapkan proyek Gambar Asli GraalVM yang menggunakan AWS SDK for Java 2.x
<a name="setup-project-graalvm"></a>

Dengan versi 2.16.1 dan yang lebih baru, AWS SDK for Java 2.x menyediakan out-of-the-box dukungan untuk aplikasi GraalVM Native Image. Gunakan pola dasar `archetype-app-quickstart` Maven untuk menyiapkan proyek dengan dukungan gambar asli bawaan.

## Prasyarat
<a name="setup-graalvmnativeimage-prereq"></a>
+ Selesaikan langkah-langkah dalam [Menyiapkan AWS SDK untuk Java 2.x](setup.md).
+ Instal Gambar [Asli GraalVM](https://www.graalvm.org/reference-manual/native-image/#install-native-image).

## Buat proyek menggunakan pola dasar
<a name="setup-graalvmnativeimage-project"></a>

Untuk membuat proyek Maven dengan dukungan gambar asli bawaan, di jendela terminal atau command prompt, gunakan perintah berikut.

**catatan**  
Ganti `com.example.mynativeimageapp` dengan namespace paket lengkap aplikasi Anda. Ganti juga `mynativeimageapp` dengan nama proyek Anda. Ini menjadi nama direktori untuk proyek Anda.

```
mvn archetype:generate \
    -DarchetypeGroupId=software.amazon.awssdk \
    -DarchetypeArtifactId=archetype-app-quickstart \
    -DarchetypeVersion=2.27.21\
    -DnativeImage=true \
    -DhttpClient=apache-client \
    -Dservice=s3 \
    -DgroupId=com.example.mynativeimageapp \
    -DartifactId=mynativeimageapp \
    -DinteractiveMode=false
```

Perintah ini membuat proyek Maven dikonfigurasi dengan dependensi untuk AWS SDK untuk Java, Amazon S3, dan klien HTTP. `ApacheHttpClient` Ini juga mencakup ketergantungan untuk [plugin GraalVM Native Image Maven, sehingga Anda dapat membangun gambar asli](https://graalvm.github.io/native-build-tools/latest/index.html) menggunakan Maven.

Untuk menyertakan dependensi untuk yang berbeda Amazon Web Services, tetapkan nilai `-Dservice` parameter ke ID artefak layanan tersebut. Contohnya termasuk `dynamodb`, `comprehend`, dan `pinpoint`. Untuk daftar lengkap artefak IDs, lihat daftar dependensi terkelola untuk [software.amazon.awssdk](https://mvnrepository.com/artifact/software.amazon.awssdk/bom/latest) di Maven Central.

Untuk menggunakan klien HTTP asinkron, atur parameter ke. `-DhttpClient` `netty-nio-client` Untuk digunakan `UrlConnectionHttpClient` sebagai klien HTTP sinkron, bukan`apache-client`, atur `-DhttpClient` parameter ke`url-connection-client`.

## Membangun gambar asli
<a name="build-graalvmnativeimage-project"></a>

Setelah Anda membuat proyek, jalankan perintah berikut dari direktori proyek Anda, misalnya,`mynativeimageapp`:

```
mvn package -P native-image
```

Ini menciptakan aplikasi gambar asli di `target` direktori, misalnya,`target/mynativeimageapp`.

# Mengautentikasi dengan AWS menggunakan AWS SDK for Java 2.x
<a name="get-started-auth"></a>

 Anda harus menetapkan bagaimana AWS SDK for Java 2.x otentikasi dengan AWS ketika Anda mengembangkan dengan AWS layanan. SDK mengelola penemuan kredenal, pembuatan tanda tangan, dan penyegaran kredenal sepenuhnya di belakang layar, memungkinkan Anda fokus pada logika aplikasi Anda.

## Siapkan untuk otentikasi
<a name="setup-auth"></a>

Topik [otentikasi dan akses](https://docs.aws.amazon.com/sdkref/latest/guide/access.html) dalam Panduan Referensi AWS SDKs dan Alat menjelaskan pendekatan otentikasi yang berbeda.

Untuk pengembangan lokal, pendekatan yang disarankan adalah menggunakan kredensil jangka pendek dengan masuk ke AWS CLI dengan kredenal login konsol Anda. Disarankan jika Anda menggunakan root, pengguna IAM, atau federasi dengan IAM untuk akses AWS akun. Ikuti petunjuk di [Akses kredensional untuk pekerjaan pengembangan interaktif menggunakan AWS SDK for Java 2.x](credentials-temporary.md).

Setelah mengikuti petunjuk dalam AWS SDKs dan Panduan Referensi Alat, sistem Anda harus disiapkan agar SDK dapat menandatangani permintaan:

### 1. Pengembangan lokal menggunakan kredensil jangka pendek
<a name="setup-login"></a>

Untuk pengembangan lokal, pendekatan yang disarankan adalah menggunakan kredensil jangka pendek dengan masuk ke AWS CLI dengan kredenal login konsol Anda. Disarankan jika Anda menggunakan root, pengguna IAM, atau federasi dengan IAM untuk akses AWS akun. 

Untuk petunjuk, lihat [Menggunakan penyedia kredensial di](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials-temporary.html). AWS SDK for Java 2.x

### 2. Pengaturan untuk akses masuk tunggal untuk SDK
<a name="setup-credentials"></a>

Setelah Anda menyelesaikan Langkah 2 di [bagian akses terprogram](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html#idcGettingStarted) sehingga SDK dapat menggunakan autentikasi IAM Identity Center, sistem Anda harus berisi elemen-elemen berikut.
+ Itu AWS CLI, yang Anda gunakan untuk memulai [sesi portal AWS akses](#setup-login-sso) sebelum Anda menjalankan aplikasi Anda.
+ `~/.aws/config`File yang berisi [profil default](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-profile). SDK for Java menggunakan konfigurasi penyedia token SSO profil untuk memperoleh kredensil sebelum mengirim permintaan ke. AWS`sso_role_name`Nilai, yang merupakan peran IAM yang terhubung ke set izin Pusat Identitas IAM, harus memungkinkan akses ke yang Layanan AWS digunakan dalam aplikasi Anda.

  `config`File contoh berikut menunjukkan profil default yang diatur dengan konfigurasi penyedia token SSO. `sso_session`Pengaturan profil mengacu pada `sso-session` bagian bernama. `sso-session`Bagian ini berisi pengaturan untuk memulai sesi portal AWS akses.

  ```
  [default]
  sso_session = my-sso
  sso_account_id = 111122223333
  sso_role_name = SampleRole
  region = us-east-1
  output = json
  
  [sso-session my-sso]
  sso_region = us-east-1
  sso_start_url = https://provided-domain.awsapps.com/start
  sso_registration_scopes = sso:account:access
  ```

Untuk detail selengkapnya tentang pengaturan yang digunakan dalam konfigurasi penyedia token SSO, lihat [konfigurasi penyedia token SSO](https://docs.aws.amazon.com/sdkref/latest/guide/feature-sso-credentials.html#sso-token-config) di Panduan Referensi Alat AWS SDKs dan Alat.

Jika lingkungan pengembangan Anda tidak diatur untuk akses terprogram seperti yang ditunjukkan sebelumnya, ikuti [Langkah 2 di Panduan SDKs Referensi](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html#idcGettingStarted).

### 3. Masuk menggunakan AWS CLI
<a name="setup-login-sso"></a>

Sebelum menjalankan aplikasi yang mengakses Layanan AWS, Anda memerlukan sesi portal AWS akses aktif agar SDK dapat menggunakan autentikasi IAM Identity Center untuk menyelesaikan kredensil. Jalankan perintah berikut di AWS CLI untuk masuk ke portal AWS akses.

```
aws sso login
```

Karena Anda memiliki pengaturan profil default, Anda tidak perlu memanggil perintah dengan `--profile` opsi. Jika konfigurasi penyedia token SSO Anda menggunakan profil bernama, perintahnya adalah`aws sso login --profile named-profile`.

Untuk menguji apakah Anda sudah memiliki sesi aktif, jalankan AWS CLI perintah berikut.

```
aws sts get-caller-identity
```

Respons terhadap perintah ini harus melaporkan akun IAM Identity Center dan set izin yang dikonfigurasi dalam `config` file bersama.

**catatan**  
Jika Anda sudah memiliki sesi portal AWS akses aktif dan menjalankan`aws sso login`, Anda tidak akan diminta untuk memberikan kredensil.   
Namun, Anda akan melihat dialog yang meminta izin `botocore` untuk mengakses informasi Anda. `botocore`adalah fondasi untuk AWS CLI .   
Pilih **Izinkan** untuk mengotorisasi akses ke informasi Anda untuk AWS CLI dan SDK for Java.

## Opsi otentikasi tambahan
<a name="setup-additional"></a>

Untuk opsi lainnya tentang otentikasi SDK, seperti penggunaan profil dan variabel lingkungan, lihat bagian [konfigurasi](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html) di Panduan Referensi Alat AWS SDKs dan Alat.

# Membuat aplikasi sederhana menggunakan AWS SDK for Java 2.x
<a name="get-started-tutorial"></a>

Tutorial ini menunjukkan cara menggunakan [Apache Maven](https://maven.apache.org/) untuk menentukan dependensi untuk SDK for 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 untuk tutorial ini](#get-started-setup) 
+  [Langkah 2: Buat proyek](#get-started-projectsetup) 
+  [Langkah 3: Tulis kodenya](#get-started-code) 
+  [Langkah 4: Bangun dan jalankan aplikasi](#get-started-run) 

## Langkah 1: Siapkan untuk tutorial ini
<a name="get-started-setup"></a>

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](setup.md#setup-overview) untuk mengatur tutorial ini. Setelah Anda [mengkonfigurasi lingkungan pengembangan Anda dengan akses masuk tunggal](get-started-auth.md#setup-credentials) untuk Java SDK dan Anda memiliki [sesi portal AWS akses aktif](get-started-auth.md#setup-login-sso), lanjutkan dengan Langkah 2 dari tutorial ini.

## Langkah 2: Buat proyek
<a name="get-started-projectsetup"></a>

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.

1. Masukkan perintah berikut di terminal dan tekan`Enter`.

   ```
   mvn archetype:generate \
     -DarchetypeGroupId=software.amazon.awssdk \
     -DarchetypeArtifactId=archetype-app-quickstart \
     -DarchetypeVersion=2.27.21
   ```

1. Masukkan nilai yang tercantum di kolom kedua untuk setiap prompt.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/sdk-for-java/latest/developer-guide/get-started-tutorial.html)

1. Setelah nilai terakhir dimasukkan, Maven mencantumkan pilihan yang Anda buat. Konfirmasikan dengan memasukkan *`Y`*atau 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.

### `pom.xml`
<a name="projectsetup-collapse2"></a>

`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
<a name="get-started-code"></a>

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.

### `App` kelas
<a name="projectsetup-collapse2"></a>

```
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. [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3Client.html](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3Client.html) `S3Client`Instance menggunakan instance dari klien HTTP berbasis Apache. Ini karena Anda menentukan `apache-client` kapan Maven meminta Anda untuk klien HTTP mana yang akan digunakan.

`DependencyFactory`Hal ini ditunjukkan dalam kode berikut.

### `DependencyFactory` kelas
<a name="code-collapse2"></a>

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

### `Handler`kelas, yang dihasilkan oleh Maven
<a name="code-collapsible3"></a>

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

### `Handler`kelas, diimplementasikan
<a name="code-collapse4"></a>

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 [https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3Client.html#putObject(software.amazon.awssdk.services.s3.model.PutObjectRequest,software.amazon.awssdk.core.sync.RequestBody)](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/s3/S3Client.html#putObject(software.amazon.awssdk.services.s3.model.PutObjectRequest,software.amazon.awssdk.core.sync.RequestBody))metode. `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
<a name="get-started-run"></a>

Setelah proyek dibuat dan berisi `Handler` kelas lengkap, bangun dan jalankan aplikasi. 

1. Pastikan Anda memiliki sesi IAM Identity Center 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](get-started-auth.md#setup-login-sso) untuk petunjuk.

1. Buka terminal atau jendela prompt perintah dan arahkan ke direktori proyek Anda`getstarted`.

1. Gunakan perintah berikut untuk membangun proyek Anda:

   ```
   mvn clean package
   ```

1. 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. Masuk`Handler.java`, komentari baris `cleanUp(s3Client, bucket, key)` dalam `sendRequest` metode dan simpan file.

1. Membangun kembali proyek dengan menjalankan`mvn clean package`.

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

1. Masuk ke [konsol S3](https://console.aws.amazon.com/s3/) untuk melihat objek baru di bucket yang baru dibuat.

Setelah Anda melihat file, hapus objek, dan kemudian hapus ember.

### Berhasil
<a name="get-started-success"></a>

Jika proyek Maven Anda dibangun dan berjalan tanpa kesalahan, maka selamat\$1 Anda telah berhasil membangun aplikasi Java pertama Anda menggunakan SDK for Java 2.x.

### Pembersihan
<a name="cleanup"></a>

Untuk membersihkan sumber daya yang Anda buat selama tutorial ini, lakukan hal berikut:
+ Jika Anda belum melakukannya, di [konsol S3](https://console.aws.amazon.com/s3/), hapus objek apa pun dan ember apa pun yang dibuat saat Anda menjalankan aplikasi.
+ Hapus folder proyek (`getstarted`).

## Langkah selanjutnya
<a name="get-started-next"></a>

Sekarang setelah Anda memiliki dasar-dasarnya, Anda dapat mempelajari hal-hal berikut:
+  [Bekerja dengan Amazon S3](examples-s3.md) 
+  [Bekerja dengan yang lain Amazon Web Services](work-with-services.md), seperti [DynamoDB](examples-dynamodb.md), [Amazon EC2](examples-ec2.md), dan [berbagai layanan database](examples-databases.md) 
+  [Gunakan SDK](using.md) 
+  [Keamanan untuk AWS SDK untuk Java](security.md) **