

 AWS SDK untuk JavaScript V2 telah mencapai end-of-support. Kami menyarankan Anda bermigrasi ke [AWS SDK untuk JavaScript v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/). Untuk detail dan informasi tambahan tentang cara bermigrasi, silakan lihat [pengumuman](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/) ini.

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

# Pertimbangan Skrip Browser
<a name="browser-js-considerations"></a>

Topik berikut menjelaskan pertimbangan khusus untuk menggunakan skrip AWS SDK untuk JavaScript di browser.

**Topics**
+ [Membangun SDK untuk Browser](building-sdk-for-browsers.md)
+ [Berbagi Sumber Daya Lintas Orisinil (CORS)](cors.md)

# Membangun SDK untuk Browser
<a name="building-sdk-for-browsers"></a>

SDK untuk JavaScript disediakan sebagai JavaScript file dengan dukungan yang disertakan untuk set layanan default. File ini biasanya dimuat ke skrip browser menggunakan ` <script>` tag yang mereferensikan paket SDK yang dihosting. Namun, Anda mungkin memerlukan dukungan untuk layanan selain set default atau perlu menyesuaikan SDK.

Jika Anda bekerja dengan SDK di luar lingkungan yang memberlakukan CORS di browser Anda dan jika Anda ingin akses ke semua layanan yang disediakan oleh SDK for JavaScript, Anda dapat membuat salinan khusus SDK secara lokal dengan mengkloning repositori dan menjalankan alat build yang sama yang membangun versi default SDK yang dihosting. Bagian berikut menjelaskan langkah-langkah untuk membangun SDK dengan layanan tambahan dan versi API.

**Topics**
+ [Menggunakan SDK Builder untuk Membangun SDK JavaScript](#using-the-sdk-builder)
+ [Menggunakan CLI untuk Membangun SDK untuk JavaScript](#using-command-line-tools)
+ [Membangun Layanan Tertentu dan Versi API](#building-specific-services-versions)
+ [Membangun SDK sebagai Dependensi dengan Browserify](#building-using-browserify)

## Menggunakan SDK Builder untuk Membangun SDK JavaScript
<a name="using-the-sdk-builder"></a>

Cara termudah untuk membuat build Anda sendiri AWS SDK untuk JavaScript adalah dengan menggunakan aplikasi web pembuat SDK di [ https://sdk.amazonaws.com/builder/js](https://sdk.amazonaws.com/builder/js). Gunakan pembuat SDK untuk menentukan layanan, dan versi API-nya, untuk disertakan dalam build Anda. 

Pilih **Pilih semua layanan** atau pilih **Pilih layanan default** sebagai titik awal dari mana Anda dapat menambah atau menghapus layanan. Pilih **Pengembangan** untuk kode yang lebih mudah dibaca atau pilih **Diperkecil** untuk membuat build yang diperkecil untuk diterapkan. Setelah memilih layanan dan versi yang akan disertakan, pilih **Build to build** dan download SDK kustom Anda.

## Menggunakan CLI untuk Membangun SDK untuk JavaScript
<a name="using-command-line-tools"></a>

Untuk membangun SDK untuk JavaScript menggunakan AWS CLI, Anda harus terlebih dahulu mengkloning repositori Git yang berisi sumber SDK. Anda harus menginstal Git dan Node.js di komputer Anda.

Pertama, kloning repositori dari GitHub dan ubah direktori ke direktori:

```
git clone https://github.com/aws/aws-sdk-js.git
cd aws-sdk-js
```

Setelah Anda mengkloning repositori, unduh modul dependensi untuk SDK dan alat build:

```
npm install
```

Anda sekarang dapat membuat versi paket SDK.

### Membangun dari Command Line
<a name="building-from-command-line"></a>

Alat pembangun ada di`dist-tools/browser-builder.js`. Jalankan skrip ini dengan mengetik:

```
node dist-tools/browser-builder.js > aws-sdk.js
```

Perintah ini membangun file aws-sdk.js. File ini tidak terkompresi. Secara default paket ini hanya mencakup serangkaian layanan standar. 

### Meminimalkan Output Build
<a name="minifying-build-output"></a>

Untuk mengurangi jumlah data pada jaringan, JavaScript file dapat dikompresi melalui proses yang disebut *minifikasi*. Minifikasi menghapus komentar, spasi yang tidak perlu, dan karakter lain yang membantu keterbacaan manusia tetapi itu tidak memengaruhi eksekusi kode. Alat pembangun dapat menghasilkan output yang tidak terkompresi atau diperkecil. Untuk memperkecil keluaran build Anda, setel variabel `MINIFY` lingkungan:

```
MINIFY=1 node dist-tools/browser-builder.js > aws-sdk.js
```

## Membangun Layanan Tertentu dan Versi API
<a name="building-specific-services-versions"></a>

Anda dapat memilih layanan mana yang akan dibangun ke dalam SDK. Untuk memilih layanan, tentukan nama layanan, dibatasi oleh koma, sebagai parameter. Misalnya, untuk membangun hanya Amazon S3 dan Amazon EC2, gunakan perintah berikut:

```
node dist-tools/browser-builder.js s3,ec2 > aws-sdk-s3-ec2.js
```

Anda juga dapat memilih versi API tertentu dari build layanan dengan menambahkan nama versi setelah nama layanan. Misalnya, untuk membangun kedua versi API Amazon DynamoDB, gunakan perintah berikut:

```
node dist-tools/browser-builder.js dynamodb-2011-12-05,dynamodb-2012-08-10
```

[Pengidentifikasi layanan dan versi API tersedia dalam file konfigurasi khusus layanan di/. https://github.com/aws/ aws-sdk-js tree/master/apis](https://github.com/aws/aws-sdk-js/tree/master/apis)

### Membangun Semua Layanan
<a name="building-all-services"></a>

Anda dapat membangun semua layanan dan versi API dengan menyertakan `all` parameter:

```
node dist-tools/browser-builder.js all > aws-sdk-full.js
```

### Membangun Layanan Khusus
<a name="building-specific-services"></a>

Untuk menyesuaikan kumpulan layanan yang dipilih yang disertakan dalam build, teruskan variabel ` AWS_SERVICES` lingkungan ke perintah Browserify yang berisi daftar layanan yang Anda inginkan. Contoh berikut membangun layanan Amazon EC2, Amazon S3, dan DynamoDB.

```
$ AWS_SERVICES=ec2,s3,dynamodb browserify index.js > browser-app.js
```

## Membangun SDK sebagai Dependensi dengan Browserify
<a name="building-using-browserify"></a>

Node.js memiliki mekanisme berbasis modul untuk memasukkan kode dan fungsionalitas dari pengembang pihak ketiga. Pendekatan modular ini tidak didukung secara native dengan JavaScript berjalan di browser web. Namun, dengan alat yang disebut Browserify, Anda dapat menggunakan pendekatan modul Node.js dan menggunakan modul yang ditulis untuk Node.js di browser. Browserify membangun dependensi modul untuk skrip browser menjadi satu JavaScript file mandiri yang dapat Anda gunakan di browser.

Anda dapat membangun SDK sebagai dependensi pustaka untuk skrip browser apa pun dengan menggunakan Browserify. Misalnya, kode Node.js berikut memerlukan SDK:

```
var AWS = require('aws-sdk');
var s3 = new AWS.S3();
s3.listBuckets(function(err, data) { console.log(err, data); });
```

Contoh kode ini dapat dikompilasi ke dalam versi yang kompatibel dengan browser menggunakan Browserify:

```
$ browserify index.js > browser-app.js
```

Aplikasi, termasuk dependensi SDK-nya, kemudian tersedia di browser melalui. `browser-app.js`

Untuk informasi selengkapnya tentang Browserify, lihat situs web [Browserify](http://browserify.org/).

# Berbagi Sumber Daya Lintas Orisinil (CORS)
<a name="cors"></a>

Berbagi sumber daya lintas asal, atau CORS, adalah fitur keamanan browser web modern. Ini memungkinkan browser web untuk menegosiasikan domain mana yang dapat membuat permintaan situs web atau layanan eksternal. CORS adalah pertimbangan penting ketika mengembangkan aplikasi browser dengan AWS SDK untuk JavaScript karena sebagian besar permintaan ke sumber daya dikirim ke domain eksternal, seperti titik akhir untuk layanan web. Jika JavaScript lingkungan Anda memberlakukan keamanan CORS, Anda harus mengonfigurasi CORS dengan layanan.

CORS menentukan apakah akan mengizinkan pembagian sumber daya dalam permintaan lintas asal berdasarkan:
+ Domain spesifik yang membuat permintaan 
+ Jenis permintaan HTTP yang dibuat (GET, PUT, POST, DELETE dan sebagainya)

## Bagaimana CORS Bekerja
<a name="how-cors-works"></a>

Dalam kasus yang paling sederhana, skrip browser Anda membuat permintaan GET untuk sumber daya dari server di domain lain. Bergantung pada konfigurasi CORS server tersebut, jika permintaan berasal dari domain yang berwenang untuk mengirimkan permintaan GET, server lintas asal merespons dengan mengembalikan sumber daya yang diminta.

Jika domain yang meminta atau jenis permintaan HTTP tidak diotorisasi, permintaan ditolak. Namun, CORS memungkinkan untuk melakukan pra-penerbangan permintaan sebelum benar-benar mengirimkannya. Dalam hal ini, permintaan preflight dibuat di mana operasi permintaan `OPTIONS` akses dikirim. Jika konfigurasi CORS server lintas asal memberikan akses ke domain yang meminta, server mengirimkan kembali respons preflight yang mencantumkan semua jenis permintaan HTTP yang dapat dibuat oleh domain permintaan pada sumber daya yang diminta.

![\[Alur proses untuk permintaan CORS\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v2/developer-guide/images/cors-overview.png)


## Apakah Konfigurasi CORS Diperlukan
<a name="the-need-for-cors-configuration"></a>

Bucket Amazon S3 memerlukan konfigurasi CORS sebelum Anda dapat melakukan operasi pada mereka. Di beberapa JavaScript lingkungan CORS mungkin tidak diberlakukan dan oleh karena itu mengonfigurasi CORS tidak diperlukan. Misalnya, jika Anda meng-host aplikasi dari bucket Amazon S3 dan mengakses sumber daya dari `*.s3.amazonaws.com` atau titik akhir tertentu lainnya, permintaan Anda tidak akan mengakses domain eksternal. Oleh karena itu, konfigurasi ini tidak memerlukan CORS. Dalam hal ini, CORS masih digunakan untuk layanan selain Amazon S3.

## Mengonfigurasi CORS untuk Bucket Amazon S3
<a name="configuring-cors-s3-bucket"></a>

Anda dapat mengonfigurasi bucket Amazon S3 untuk menggunakan CORS di konsol Amazon S3.

1. Di konsol Amazon S3, pilih bucket yang ingin Anda edit.

1. Pilih tab **Izin**, dan tekan ke panel **Cross-Origin Resource Sharing (**CORS).  
![\[Editor Konfigurasi CORS di Amazon S3 untuk menyetel konfigurasi CORS bucket\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v2/developer-guide/images/cors_panel.png)

1. **Pilih **Edit**, dan ketik konfigurasi CORS Anda di **CORS Configuration Editor**, lalu pilih Simpan.**

Konfigurasi CORS adalah file XMLyang berisi serangkaian aturan dalam file. `<CORSRule>` Konfigurasi dapat memiliki hingga 100 aturan. Aturan didefinisikan oleh salah satu tag berikut:
+ `<AllowedOrigin>`, yang menentukan asal domain yang Anda izinkan untuk membuat permintaan lintas domain.
+ `<AllowedMethod>`, yang menentukan jenis permintaan yang Anda izinkan (GET, PUT, POST, DELETE, HEAD) dalam permintaan lintas domain.
+ `<AllowedHeader>`, yang menentukan header yang diizinkan dalam permintaan preflight.

Untuk contoh konfigurasi, lihat [Bagaimana Cara Mengonfigurasi CORS di Bucket Saya?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html#how-do-i-enable-cors) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*.

## Contoh Konfigurasi CORS
<a name="cors-configuration-example"></a>

Contoh konfigurasi CORS berikut memungkinkan pengguna untuk melihat, menambah, menghapus, atau memperbarui objek di dalam bucket dari domain`example.org`, meskipun Anda disarankan untuk memasukkan `<AllowedOrigin>` ke domain situs web Anda. Anda dapat menentukan `"*"` untuk mengizinkan asal apa pun.

**penting**  
Pada konsol S3 baru, konfigurasi CORS harus JSON.

------
#### [ XML ]

```
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <CORSRule>
    <AllowedOrigin>https://example.org</AllowedOrigin>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
    <ExposeHeader>ETag</ExposeHeader>
    <ExposeHeader>x-amz-meta-custom-header</ExposeHeader>
  </CORSRule>
</CORSConfiguration>
```

------
#### [ JSON ]

```
[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "HEAD",
            "GET",
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "https://www.example.org"
        ],
        "ExposeHeaders": [
             "ETag",
             "x-amz-meta-custom-header"]
    }
]
```

------

Konfigurasi ini tidak mengizinkan pengguna untuk melakukan tindakan pada bucket. Ini memungkinkan model keamanan browser untuk memungkinkan permintaan ke Amazon S3. Izin harus dikonfigurasi melalui izin bucket atau izin peran IAM.

Anda dapat menggunakan `ExposeHeader` untuk membiarkan SDK membaca header respons yang dikembalikan dari Amazon S3. Misalnya, jika Anda ingin membaca `ETag` header dari unggahan `PUT` atau multipart, Anda perlu menyertakan `ExposeHeader` tag dalam konfigurasi Anda, seperti yang ditunjukkan pada contoh sebelumnya. SDK hanya dapat mengakses header yang diekspos melalui konfigurasi CORS. Jika Anda mengatur metadata pada objek, nilai dikembalikan sebagai header dengan awalan`x-amz-meta-`, seperti`x-amz-meta-my-custom-header`, dan juga harus diekspos dengan cara yang sama.