

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

# Konfigurasikan SDK
<a name="configure-gosdk"></a>

 Di AWS SDK untuk Go V2, Anda dapat mengonfigurasi pengaturan umum untuk klien layanan, seperti logger, level log, dan konfigurasi coba lagi. Sebagian besar pengaturan bersifat opsional. Namun, untuk setiap klien layanan, Anda harus menentukan AWS Wilayah dan kredensyal Anda. SDK menggunakan nilai ini untuk mengirim permintaan ke Wilayah yang benar dan menandatangani permintaan dengan kredensyal yang benar. Anda dapat menentukan nilai-nilai ini secara terprogram dalam kode atau melalui lingkungan eksekusi. 

## Memuat File Konfigurasi AWS Bersama
<a name="loading-aws-shared-configuration"></a>

 Ada sejumlah cara untuk menginisialisasi klien API layanan, tetapi berikut ini adalah pola paling umum yang direkomendasikan kepada pengguna. 

 Untuk mengonfigurasi SDK agar menggunakan file konfigurasi AWS bersama, gunakan kode berikut: 

```
import (
  "context"
  "log"
  "github.com/aws/aws-sdk-go-v2/config"
)

// ...

cfg, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
  log.Fatalf("failed to load configuration, %v", err)
}
```

 `config.LoadDefaultConfig(context.TODO())`akan membangun [AWS.config](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#Config) menggunakan sumber konfigurasi bersama. AWS Ini termasuk mengonfigurasi penyedia kredensi, mengonfigurasi AWS Wilayah, dan memuat konfigurasi khusus layanan. Klien layanan dapat dibangun menggunakan beban`aws.Config`, memberikan pola yang konsisten untuk membangun klien. 

 Untuk informasi selengkapnya tentang file konfigurasi AWS bersama, lihat [Konfigurasi](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html) di Panduan Referensi Alat AWS SDKs dan Konfigurasi. 

## Menentukan Wilayah AWS
<a name="specifying-the-aws-region"></a>

 Ketika Anda menentukan Wilayah, Anda menentukan tempat untuk mengirim permintaan, seperti `us-west-2` atau`us-east-2`. Untuk daftar Wilayah untuk setiap layanan, lihat [Titik akhir layanan dan kuota](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) di. Referensi Umum Amazon Web Services

 SDK tidak memiliki Region default. Untuk menentukan Wilayah: 
+  Atur variabel `AWS_REGION` lingkungan ke Region default. 
+  [Setel wilayah secara eksplisit menggunakan konfigurasi. WithRegion](https://github.com/aws/aws-sdk-go-v2/blob/config/v0.2.2/config/provider.go#L127)sebagai argumen `config.LoadDefaultConfig` saat memuat konfigurasi. 

 TINJAUAN: Jika Anda menyetel Wilayah menggunakan semua teknik ini, SDK akan menggunakan Wilayah yang Anda tentukan secara eksplisit. 

### Konfigurasikan Wilayah dengan Variabel Lingkungan
<a name="configure-region-with-environment-variable"></a>

#### Linux, macOS, atau Unix
<a name="linux-macos-or-unix"></a>

```
export AWS_REGION=us-west-2
```

#### Windows
<a name="windows"></a>

```
set AWS_REGION=us-west-2
```

### Tentukan Wilayah Secara Terprogram
<a name="specify-region-programmatically"></a>

```
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithRegion("us-west-2"))
```

## Menentukan Kredensial
<a name="specifying-credentials"></a>

 AWS SDK untuk Go Memerlukan kredensyal (kunci akses dan kunci akses rahasia) untuk menandatangani permintaan. AWS Anda dapat menentukan kredensyal Anda di beberapa lokasi, tergantung pada kasus penggunaan khusus Anda. Untuk informasi tentang mendapatkan kredensional, lihat. [Memulai dengan AWS SDK untuk Go](getting-started.md) 

 Saat Anda menginisialisasi `aws.Config` instance menggunakan`config.LoadDefaultConfig`, SDK menggunakan rantai kredensyal defaultnya untuk menemukan kredensyal. AWS Rantai kredensi default ini mencari kredensi dalam urutan sebagai berikut: 

1.  Variabel lingkungan. 

   1.  Kredensial Statis (`AWS_ACCESS_KEY_ID`,,`AWS_SECRET_ACCESS_KEY`) `AWS_SESSION_TOKEN` 

   1.  Token Identitas Web (`AWS_WEB_IDENTITY_TOKEN_FILE`) 

1.  File konfigurasi bersama. 

   1.  SDK default ke `credentials` file di bawah `.aws` folder yang ditempatkan di folder rumah di komputer Anda. 

   1.  SDK default ke `config` file di bawah `.aws` folder yang ditempatkan di folder rumah di komputer Anda. 

1.  Jika aplikasi Anda menggunakan definisi tugas Amazon ECS atau operasi RunTask API, peran IAM untuk tugas. 

1.  Jika aplikasi Anda berjalan pada instans Amazon EC2, peran IAM untuk Amazon EC2. 

 SDK mendeteksi dan menggunakan penyedia bawaan secara otomatis, tanpa memerlukan konfigurasi manual. Misalnya, jika Anda menggunakan peran IAM untuk instans Amazon EC2, aplikasi Anda secara otomatis menggunakan kredensyal instans. Anda tidak perlu mengonfigurasi kredensi secara manual di aplikasi Anda. 

 Sebagai praktik terbaik, AWS merekomendasikan agar Anda menentukan kredensyal dalam urutan berikut: 

1.  Gunakan peran IAM untuk tugas jika aplikasi Anda menggunakan definisi tugas Amazon ECS atau operasi RunTask API. 

1.  Gunakan peran IAM untuk Amazon EC2 (jika aplikasi Anda berjalan pada instans Amazon EC2). 

    Peran IAM menyediakan aplikasi pada kredensyal keamanan sementara instance untuk melakukan panggilan. AWS Peran IAM menyediakan cara mudah untuk mendistribusikan dan mengelola kredensyal di beberapa instans Amazon EC2. 

1.  Gunakan kredensi bersama atau file konfigurasi. 

    Kredensyal dan file konfigurasi dibagikan di file lain dan file. AWS SDKs AWS CLI Sebagai praktik keamanan terbaik, sebaiknya gunakan file kredensyal untuk menyetel nilai sensitif seperti kunci akses IDs dan kunci rahasia. Berikut adalah [persyaratan pemformatan](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) untuk masing-masing file ini. 

1.  Gunakan variabel lingkungan. 

    Menyetel variabel lingkungan berguna jika Anda melakukan pekerjaan pengembangan pada mesin selain instans Amazon EC2. 

### Peran IAM untuk Tugas
<a name="iam-roles-for-tasks"></a>

 Jika aplikasi Anda menggunakan definisi atau `RunTask` operasi tugas Amazon ECS, gunakan Peran [IAM untuk Tugas untuk menentukan peran](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) IAM yang dapat digunakan oleh kontainer dalam tugas. 

### Peran IAM untuk Instans Amazon EC2
<a name="iam-roles-for-ec2-instances"></a>

 Jika Anda menjalankan aplikasi di instans Amazon EC2, gunakan [peran IAM](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) instans untuk mendapatkan kredenal keamanan sementara untuk melakukan panggilan. AWS

 Jika Anda telah mengonfigurasi instans Anda untuk menggunakan peran IAM, SDK akan menggunakan kredensyal ini untuk aplikasi Anda secara otomatis. Anda tidak perlu menentukan kredensi ini secara manual. 

### Kredensi dan Konfigurasi Bersama
<a name="shared-credentials-and-configuration"></a>

 Kredensyal bersama dan file konfigurasi dapat digunakan untuk berbagi konfigurasi umum di antara AWS SDKs dan alat lainnya. Jika Anda menggunakan kredensi yang berbeda untuk alat atau aplikasi yang berbeda, Anda dapat menggunakan *profil* untuk mengonfigurasi beberapa kunci akses dalam file konfigurasi yang sama. 

 Anda dapat menyediakan beberapa lokasi file kredensyal atau konfigurasi menggunakan`config.LoadOptions`, secara default SDK memuat file yang disimpan di lokasi default yang disebutkan dalam file. [Menentukan Kredensial](#specifying-credentials) 

```
import (
    "context"
    "github.com/aws/aws-sdk-go-v2/config"    
)

// ...

cfg , err := config.LoadDefaultConfig(context.TODO(), 
    config.WithSharedCredentialsFiles(
    []string{"test/credentials", "data/credentials"},
    ), 
    config.WithSharedConfigFiles(
        []string{"test/config", "data/config"},
    )   
)
```

 Saat bekerja dengan kredensyal bersama dan file konfigurasi, jika profil duplikat ditentukan, profil tersebut digabungkan untuk menyelesaikan profil. Dalam kasus konflik penggabungan, 

1.  Jika profil duplikat ditentukan dalam credentials/config file yang sama, properti profil yang ditentukan dalam profil terakhir diutamakan. 

1.  Jika profil duplikat ditentukan di beberapa file kredensional atau di beberapa file konfigurasi, properti profil diselesaikan sesuai urutan input file ke file. `config.LoadOptions` Properti profil dalam file terakhir diutamakan. 

1.  Jika profil ada di file kredensyal dan file konfigurasi, properti file kredensyal diutamakan. 

 Jika perlu, Anda dapat `LogConfigurationWarnings` mengaktifkan `config.LoadOptions` dan mencatat langkah-langkah resolusi profil. 

#### Membuat File Kredensial
<a name="creating-the-credentials-file"></a>

 Jika Anda tidak memiliki file kredensyal bersama (`.aws/credentials`), Anda dapat menggunakan editor teks apa pun untuk membuatnya di direktori home Anda. Tambahkan konten berikut ke file kredensyal Anda, ganti {{<YOUR\_ACCESS\_KEY\_ID>}} dan {{<YOUR\_SECRET\_ACCESS\_KEY>}} dengan kredensyal Anda. 

```
[default]
aws_access_key_id = {{<YOUR_ACCESS_KEY_ID>}}
aws_secret_access_key = {{<YOUR_SECRET_ACCESS_KEY>}}
```

 `[default]`Judul mendefinisikan kredensyal untuk profil default, yang akan digunakan SDK kecuali Anda mengonfigurasinya untuk menggunakan profil lain. 

 Anda juga dapat menggunakan kredensyal keamanan sementara dengan menambahkan token sesi ke profil Anda, seperti yang ditunjukkan pada contoh berikut: 

```
[temp]
aws_access_key_id = {{<YOUR_TEMP_ACCESS_KEY_ID>}}
aws_secret_access_key = {{<YOUR_TEMP_SECRET_ACCESS_KEY>}}
aws_session_token = {{<YOUR_SESSION_TOKEN>}}
```

 Nama bagian untuk profil non-default dalam file kredensyal tidak boleh dimulai dengan kata. `profile` Anda dapat membaca lebih lanjut di [AWS SDKs dan Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-creds). 

#### Membuat File Config
<a name="creating-the-config-file"></a>

 Jika Anda tidak memiliki file kredensyal bersama (`.aws/config`), Anda dapat menggunakan editor teks apa pun untuk membuatnya di direktori home Anda. Tambahkan konten berikut ke file konfigurasi Anda, ganti {{<REGION>}} dengan wilayah yang diinginkan. 

```
[default]
region = {{<REGION>}}
```

 `[default]`Judul mendefinisikan konfigurasi untuk profil default, yang akan digunakan SDK kecuali Anda mengonfigurasinya untuk menggunakan profil lain. 

 Anda dapat menggunakan profil bernama seperti yang ditunjukkan pada contoh berikut: 

```
[profile named-profile]
region = {{<REGION>}}
```

 Nama bagian untuk profil non-default dalam file konfigurasi harus selalu dimulai dengan kata`profile`, diikuti dengan nama profil yang dimaksud. Anda dapat membaca lebih lanjut di [Panduan Referensi AWS SDKs dan Alat](https://docs.aws.amazon.com/credref/latest/refdocs/file-format.html#file-format-config). 

#### Menentukan Profil
<a name="specifying-profiles"></a>

 Anda dapat menyertakan beberapa kunci akses dalam file konfigurasi yang sama dengan mengaitkan setiap set kunci akses dengan profil. Misalnya, dalam file kredensial Anda, Anda dapat mendeklarasikan beberapa profil, sebagai berikut. 

```
[default]
aws_access_key_id = <YOUR_DEFAULT_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_DEFAULT_SECRET_ACCESS_KEY>

[test-account]
aws_access_key_id = <YOUR_TEST_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_TEST_SECRET_ACCESS_KEY>

[prod-account]
; work profile
aws_access_key_id = <YOUR_PROD_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_PROD_SECRET_ACCESS_KEY>
```

 Secara default, SDK memeriksa variabel `AWS_PROFILE` lingkungan untuk menentukan profil mana yang akan digunakan. Jika tidak ada `AWS_PROFILE` variabel yang disetel, SDK menggunakan `default` profil. 

 Terkadang, Anda mungkin ingin menggunakan profil yang berbeda dengan aplikasi Anda. Misalnya, Anda ingin menggunakan `test-account` kredensyal dengan aplikasi Anda`myapp`. Anda dapat menggunakan profil ini dengan menggunakan perintah berikut: 

```
$ AWS_PROFILE=test-account myapp
```

 Anda juga dapat menggunakan instruksikan SDK untuk memilih profil dengan menelepon `os.Setenv("AWS_PROFILE", "test-account")` sebelum memanggil`config.LoadDefaultConfig`, atau dengan meneruskan profil eksplisit sebagai argumen seperti yang ditunjukkan pada contoh berikut: 

```
cfg, err := config.LoadDefaultConfig(context.TODO(), 
    config.WithSharedConfigProfile("test-account"))
```

**catatan**  
Jika Anda menentukan kredensyal dalam variabel lingkungan, SDK akan selalu menggunakan kredensyal tersebut, apa pun profil yang Anda tentukan.

### Variabel lingkungan
<a name="environment-variables"></a>

 Secara default, SDK mendeteksi AWS kredensyal yang disetel di lingkungan Anda dan menggunakannya untuk menandatangani permintaan. AWS Dengan begitu Anda tidak perlu mengelola kredensi di aplikasi Anda. 

 SDK mencari kredensional dalam variabel lingkungan berikut: 
+  `AWS_ACCESS_KEY_ID` 
+  `AWS_SECRET_ACCESS_KEY` 
+  `AWS_SESSION_TOKEN` (opsional) 

 Contoh berikut menunjukkan bagaimana Anda mengkonfigurasi variabel lingkungan. 

#### Linux, OS X, atau Unix
<a name="linux-os-x-or-unix"></a>

```
$ export AWS_ACCESS_KEY_ID=YOUR_AKID
$ export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
$ export AWS_SESSION_TOKEN=TOKEN
```

#### Windows
<a name="windows-1"></a>

```
> set AWS_ACCESS_KEY_ID=YOUR_AKID
> set AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
> set AWS_SESSION_TOKEN=TOKEN
```

### Tentukan Kredensial Secara Terprogram
<a name="specify-credentials-programmatically"></a>

 `config.LoadDefaultConfig`memungkinkan Anda memberikan [aws eksplisit. CredentialProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#CredentialsProvider)saat memuat sumber konfigurasi bersama. [Untuk meneruskan penyedia kredensyal eksplisit saat memuat konfigurasi bersama gunakan konfigurasi. WithCredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/config#WithCredentialsProvider). Misalnya, jika `customProvider` mereferensikan instance `aws.CredentialProvider` implementasi, itu dapat diteruskan selama pemuatan konfigurasi seperti: 

```
cfg, err := config.LoadDefaultConfig(context.TODO(), 
    config.WithCredentialsProvider(customProvider))
```

 Jika Anda secara eksplisit memberikan kredensyal, seperti dalam contoh ini, SDK hanya menggunakan kredensyal tersebut. 

**catatan**  
Semua penyedia kredensi yang diteruskan atau dikembalikan oleh `LoadDefaultConfig` dibungkus secara [CredentialsCache](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#CredentialsCache)otomatis. Ini memungkinkan rotasi caching dan kredenal yang aman secara konkurensi. Jika Anda secara eksplisit mengonfigurasi penyedia secara `aws.Config` langsung, Anda juga harus secara eksplisit membungkus penyedia dengan tipe ini menggunakan. [NewCredentialsCache](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#NewCredentialsCache) 

#### Kredensial Statis
<a name="static-credentials"></a>

 [Anda dapat membuat kode keras kredensional dalam aplikasi Anda dengan menggunakan kredensialnya. NewStaticCredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials#NewStaticCredentialsProvider)penyedia kredensi untuk secara eksplisit mengatur kunci akses yang akan digunakan. Contoh: 

```
cfg, err := config.LoadDefaultConfig(context.TODO(), 
    config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider("AKID", "SECRET_KEY", "TOKEN")),
)
```

**Awas**  
 Jangan menanamkan kredensi di dalam aplikasi. Gunakan metode ini hanya untuk tujuan pengujian. 

#### Kredensial Masuk Tunggal
<a name="single-sign-on-credentials"></a>

 SDK menyediakan penyedia kredensyal untuk mengambil kredensyal sementara AWS menggunakan. AWS IAM Identity Center Dengan menggunakan AWS CLI, Anda mengautentikasi dengan portal AWS akses dan mengotorisasi akses ke kredensyal sementara AWS . Anda kemudian mengonfigurasi aplikasi Anda untuk memuat profil single sign-on (SSO), dan SDK menggunakan kredenal SSO Anda untuk mengambil kredenal sementara AWS yang akan diperpanjang secara otomatis jika kedaluwarsa. Jika kredensyal SSO Anda kedaluwarsa, Anda harus memperbaruinya secara eksplisit dengan masuk ke akun Pusat Identitas IAM Anda lagi menggunakan. AWS CLI

 Misalnya, Anda dapat membuat profil,`dev-profile`, mengautentikasi dan mengotorisasi profil tersebut menggunakan AWS CLI, dan mengkonfigurasi aplikasi Anda seperti yang ditunjukkan di bawah ini. 

1.  Pertama buat `profile` dan `sso-session` 

```
[profile dev-profile]
sso_session = dev-session
sso_account_id = 012345678901
sso_role_name = Developer
region = us-east-1

[sso-session dev-session]
sso_region = us-west-2
sso_start_url = https://company-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
```

1.  Login menggunakan AWS CLI untuk mengautentikasi dan mengotorisasi profil SSO. 

```
$ aws --profile dev-profile sso login 
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:

https://device.sso.us-west-2.amazonaws.com/

Then enter the code:

ABCD-EFGH
Successully logged into Start URL: https://company-sso-portal.awsapps.com/start
```

1.  Selanjutnya konfigurasikan aplikasi Anda untuk menggunakan profil SSO. 

```
import "github.com/aws/aws-sdk-go-v2/config"

// ...

cfg, err := config.LoadDefaultConfig(
    context.Background(),
    config.WithSharedConfigProfile("dev-profile"),
)
if err != nil {
    return err
}
```

 Untuk informasi selengkapnya tentang mengonfigurasi profil SSO dan mengautentikasi menggunakan AWS CLI lihat [Mengonfigurasi yang AWS CLI akan digunakan AWS IAM Identity Center dalam Panduan Pengguna](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html). AWS CLI [Untuk informasi selengkapnya tentang pembuatan penyedia kredensi SSO secara terprogram, lihat dokumentasi referensi API ssocreds.](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials/ssocreds) 

#### Kredensi login
<a name="login-credentials"></a>

Anda dapat menggunakan kredenal masuk Konsol AWS Manajemen yang sudah ada untuk akses terprogram ke layanan. AWS Setelah alur otentikasi berbasis browser, buat AWS kredenal sementara yang berfungsi di seluruh alat pengembangan lokal seperti CLI, dan. AWS Alat AWS untuk PowerShell AWS SDKs Fitur ini menyederhanakan proses konfigurasi dan pengelolaan kredensional AWS CLI, terutama jika Anda lebih memilih otentikasi interaktif daripada mengelola kunci akses jangka panjang.

1. Memulai alur login menggunakan AWS CLI, dan ikuti petunjuk browser. Dalam contoh ini, kami menyimpan sesi login ke profil baru**dev-profile**, tetapi ini opsional.

   ```
   $ aws --profile dev-profile login
   ```

1. (Opsional) Periksa file konfigurasi AWS bersama Anda untuk memverifikasi bahwa sesi telah dibuat.

   ```
   [profile dev-profile]
   login_session = arn:aws:sts::{{account id>}}:{{role}}
   ```

1. Selanjutnya konfigurasikan aplikasi Anda untuk menggunakan profil login.

   ```
   import "github.com/aws/aws-sdk-go-v2/config"
   
   // ...
   
   cfg, err := config.LoadDefaultConfig(
       context.Background(),
       // only necessary if login session is saved to a non-default profile
       config.WithSharedConfigProfile("dev-profile"),
   )
   if err != nil {
       return err
   }
   ```

Untuk informasi selengkapnya tentang mengonfigurasi profil login dan mengautentikasi menggunakan AWS CLI, lihat [Login untuk pengembangan AWS lokal](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sign-in.html) menggunakan kredenal konsol.

#### Penyedia Kredensial Lainnya
<a name="other-credentials-providers"></a>

 [SDK menyediakan metode lain untuk mengambil kredensyal dalam modul kredensyal.](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials) Misalnya, Anda dapat mengambil kredensyal keamanan sementara dari AWS Security Token Service atau kredensyal dari penyimpanan terenkripsi. 

 **Penyedia Kredensi yang Tersedia**: 
+  [ec2rolecreds - Ambil Kredensyal](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials/ec2rolecreds) dari Peran Instans Amazon EC2 melalui Amazon EC2 IMDS. 
+  [endpointcreds - Ambil Kredensial](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials/endpointcreds) dari titik akhir HTTP arbitrer. 
+  [processcreds](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials/processcreds) — Ambil Credentials dari proses eksternal yang akan dipanggil oleh shell lingkungan host. 
+  [stscreds](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/credentials/stscreds) - Ambil Kredensial dari AWS STS 