

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

# Menggunakan platform Go Elastic Beanstalk
<a name="go-environment"></a>

Topik ini menjelaskan cara mengonfigurasi, membangun, dan menjalankan aplikasi Go Anda di Elastic Beanstalk.

AWS Elastic Beanstalk mendukung sejumlah cabang platform untuk berbagai versi bahasa pemrograman Go. Lihat [Buka](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.go) di dokumen *AWS Elastic Beanstalk Platform* untuk daftar lengkapnya.

Untuk aplikasi Go sederhana, ada dua cara untuk men-deploy aplikasi Anda:
+ Sediakan paket sumber dengan file sumber di akar bernama `application.go` yang berisi paket utama untuk aplikasi Anda. Elastic Beanstalk membangun biner menggunakan perintah berikut:

  ```
  go build -o bin/application application.go
  ```

  Setelah aplikasi dibangun, Elastic Beanstalk memulainya di port 5000.
+ Sediakan paket sumber dengan file biner bernama `application`. File biner dapat ditemukan baik di akar paket sumber atau di direktori `bin/` dari paket sumber. Jika Anda menempatkan file biner `application` di kedua lokasi, Elastic Beanstalk menggunakan file di direktori `bin/`.

  Elastic Beanstalk meluncurkan aplikasi ini di port 5000.

Dalam kedua kasus tersebut, dengan cabang platform Go kami yang didukung, Anda juga dapat memberikan persyaratan modul dalam file yang disebut`go.mod`. Untuk informasi selengkapnya, lihat [Migrasi ke Modul Go](https://blog.golang.org/migrating-to-go-modules) di blog Go.

Untuk aplikasi Go yang lebih kompleks, ada dua cara untuk men-deploy aplikasi Anda:
+ Sediakan paket sumber yang mencakup file sumber aplikasi Anda, bersama dengan [Buildfile](go-buildfile.md) dan [Procfile](go-procfile.md). Buildfile mencakup perintah untuk membangun aplikasi, dan Procfile mencakup petunjuk untuk menjalankan aplikasi.
+ Sediakan paket sumber yang mencakup file biner aplikasi Anda, bersama dengan Procfile. Procfile mencakup petunjuk untuk menjalankan aplikasi.

Platform Go mencakup server proksi untuk melayani aset statis dan meneruskan lalu lintas ke aplikasi Anda. Anda dapat [memperpanjang atau mengganti konfigurasi proksi default](go-nginx.md) untuk skenario lanjutan.

Untuk detail tentang berbagai cara untuk memperluas platform berbasis Linux Elastic Beanstalk, lihat [Memperluas platform Linux Elastic Beanstalk](platforms-linux-extend.md).

## Mengonfigurasi lingkungan Go Anda
<a name="go-options"></a>

Pengaturan platform Go memungkinkan Anda menyempurnakan perilaku instans Amazon EC2 Anda. Anda dapat mengedit konfigurasi instans Amazon lingkungan Elastic Beanstalk menggunakan konsol EC2 Elastic Beanstalk.

Gunakan konsol Elastic Beanstalk untuk mengaktifkan rotasi log ke Amazon S3 dan mengonfigurasi variabel yang dapat dibaca aplikasi Anda dari lingkungan.

**Untuk mengonfigurasi lingkungan Go Anda di konsol Elastic Beanstalk**

1. **Buka konsol [Elastic Beanstalk, dan di daftar Wilayah, pilih konsol Elastic](https://console.aws.amazon.com/elasticbeanstalk) Beanstalk.** Wilayah AWS

1. Di panel navigasi, pilih **Lingkungan**, dan kemudian pilih nama lingkungan Anda dari daftar.

1. Pada panel navigasi, pilih **Konfigurasi**.

1. Dalam kategori konfigurasi **Pembaruan, pemantauan, dan pencatatan**, pilih **Edit**.

### Opsi log
<a name="go-options-logs"></a>

Bagian Opsi Log memiliki dua pengaturan:
+ **Profil instans** – Menentukan profil instans yang memiliki izin untuk mengakses bucket Amazon S3 yang terkait dengan aplikasi Anda.
+ **Aktifkan rotasi file log ke Amazon S3** — Menentukan apakah file log untuk EC2 instans Amazon aplikasi Anda disalin ke bucket Amazon S3 yang terkait dengan aplikasi Anda.

### File statis
<a name="go-options-staticfiles"></a>

Untuk meningkatkan kinerja, Anda dapat menggunakan bagian **File statis** untuk mengkonfigurasi server proxy untuk melayani file statis (misalnya, HTML atau gambar) dari satu set direktori di dalam aplikasi web Anda. Untuk setiap direktori, Anda mengatur jalur virtual ke pemetaan direktori. Saat server proksi menerima permintaan untuk file di jalur yang ditentukan, server langsung menyajikan file daripada merutekan permintaan ke aplikasi Anda.

Untuk detail tentang mengonfigurasi file statis menggunakan file konfigurasi atau konsol Elastic Beanstalk, lihat. [Menyajikan file statis](environment-cfg-staticfiles.md)

### Properti lingkungan
<a name="go-options-properties"></a>

Bagian **Properti Lingkungan** memungkinkan Anda menentukan pengaturan konfigurasi lingkungan pada EC2 instance Amazon yang menjalankan aplikasi Anda. Properti lingkungan diberikan sebagai pasangan nilai kunci ke aplikasi.

Di dalam lingkungan Go yang berjalan di Elastic Beanstalk, variabel lingkungan dapat diakses menggunakan fungsi `os.Getenv`. Sebagai contoh, Anda dapat membaca properti bernama `API_ENDPOINT` ke variabel dengan kode berikut:

```
endpoint := os.Getenv("API_ENDPOINT")
```

Lihat [Variabel lingkungan dan pengaturan perangkat lunak lainnya](environments-cfg-softwaresettings.md) untuk informasi selengkapnya.

## Namespace konfigurasi Go
<a name="go-namespaces"></a>

Anda dapat menggunakan [file konfigurasi](ebextensions.md) untuk mengatur opsi konfigurasi dan melakukan tugas-tugas konfigurasi instans lain selama deployment. Opsi konfigurasi dapat berupa [platform khusus](command-options-specific.md) atau berlaku untuk [semua platform di layanan](command-options-general.md) Elastic Beanstalk secara keseluruhan. Opsi konfigurasi diatur ke dalam *ruang nama*.

Platform Go tidak menentukan namespace khusus platform. Anda dapat mengonfigurasi proksi untuk menyajikan file statis dengan menggunakan namespace `aws:elasticbeanstalk:environment:proxy:staticfiles`. Untuk detail dan contoh, lihat [Menyajikan file statis](environment-cfg-staticfiles.md).

Elastic Beanstalk memberikan banyak opsi konfigurasi untuk menyesuaikan lingkungan Anda. Selain file konfigurasi, Anda juga dapat mengatur opsi konfigurasi menggunakan konsol tersebut, konfigurasi tersimpan, EB CLI, atau AWS CLI. Lihat [Opsi konfigurasi](command-options.md) untuk informasi selengkapnya.

## Platform Go Amazon Linux AMI (Amazon Linux 2 terdahulu)
<a name="go.alami"></a>

Jika lingkungan Go Elastic Beanstalk Anda menggunakan versi platform Amazon Linux AMI (Amazon Linux 2 terdahulu), baca informasi tambahan di bagian ini.

**Catatan**  
Informasi dalam topik ini hanya berlaku untuk cabang platform berbasis Amazon Linux AMI (AL1). AL2023/ cabang AL2 platform tidak kompatibel dengan versi platform Amazon Linux AMI (AL1) sebelumnya dan *memerlukan pengaturan konfigurasi yang berbeda*.
 **Pada [18 Juli 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) Elastic Beanstalk menetapkan status semua cabang platform berdasarkan Amazon Linux AMI AL1 () untuk pensiun.** Untuk informasi selengkapnya tentang migrasi ke cabang platform Amazon Linux 2023 saat ini dan didukung penuh, lihat. [Memigrasi aplikasi Elastic Beanstalk Linux Anda ke Amazon Linux 2023 atau Amazon Linux 2](using-features.migration-al.md)

### Ruang nama konfigurasi Go - Amazon Linux AMI () AL1
<a name="go.alami.namespaces"></a>

Anda dapat menggunakan [file konfigurasi](ebextensions.md) untuk mengatur opsi konfigurasi dan melakukan tugas-tugas konfigurasi instans lain selama deployment. Opsi konfigurasi dapat berupa [platform khusus](command-options-specific.md) atau berlaku untuk [semua platform di layanan](command-options-general.md) Elastic Beanstalk secara keseluruhan. Opsi konfigurasi diatur ke dalam *ruang nama*.

**catatan**  
Informasi dalam topik ini hanya berlaku untuk cabang platform berbasis Amazon Linux AMI (AL1). AL2023/ cabang AL2 platform tidak kompatibel dengan versi platform Amazon Linux AMI (AL1) sebelumnya dan *memerlukan pengaturan konfigurasi yang berbeda*.

Platform Go Amazon Linux AMI mendukung satu namespace konfigurasi khusus platform selain [namespace yang didukung oleh semua platform](command-options-general.md). Namespace `aws:elasticbeanstalk:container:golang:staticfiles` memungkinkan Anda menentukan opsi yang memetakan jalur di aplikasi web Anda ke folder di paket sumber aplikasi Anda yang berisi konten statis.

Sebagai contoh, [file konfigurasi](ebextensions.md) ini memberitahu server proksi untuk menyajikan file di folder `staticimages` di jalur `/images`:

**Example .ebextensions/go-settings.config**  

```
option_settings:
  aws:elasticbeanstalk:container:golang:staticfiles:
    /html: statichtml
    /images: staticimages
```

Elastic Beanstalk memberikan banyak opsi konfigurasi untuk menyesuaikan lingkungan Anda. Selain file konfigurasi, Anda juga dapat mengatur opsi konfigurasi menggunakan konsol tersebut, konfigurasi tersimpan, EB CLI, atau AWS CLI. Untuk informasi selengkapnya, lihat [Opsi konfigurasi](command-options.md).

# Mengkonfigurasi perintah start khusus dengan Procfile pada Elastic Beanstalk
<a name="go-procfile"></a>

Untuk menentukan perintah kustom untuk memulai aplikasi Go, sertakan file bernama `Procfile` di akar paket sumber Anda.

Untuk detail tentang menulis dan menggunakan a`Procfile`, lihat[Buildfile dan Procfile](platforms-linux-extend.build-proc.md).

**Example Procfile**  

```
web: bin/server
queue_process: bin/queue_processor
foo: bin/fooapp
```

Anda harus memanggil `web` aplikasi utama, dan daftarkan sebagai perintah pertama di `Procfile`. Elastic Beanstalk mengekspos aplikasi `web` utama di akar URL lingkungan; misalnya, `http://my-go-env.elasticbeanstalk.com`.

Elastic Beanstalk juga menjalankan aplikasi yang namanya tidak memiliki prefiks `web_`, tetapi aplikasi ini tidak tersedia dari luar instans Anda.

Elastic Beanstalk mengharapkan proses berjalan dari `Procfile` agar berjalan secara terus menerus. Elastic Beanstalk memantau aplikasi ini dan memulai ulang setiap proses yang berakhir. Untuk proses yang berjalan singkat, gunakan perintah [Buildfile](go-buildfile.md).

## Menggunakan Procfile di Amazon Linux AMI (Amazon Linux 2 terdahulu)
<a name="go-procfile.alami"></a>

Jika lingkungan Go Elastic Beanstalk Anda menggunakan versi platform Amazon Linux AMI (Amazon Linux 2 terdahulu), baca informasi tambahan di bagian ini.

**Catatan**  
Informasi dalam topik ini hanya berlaku untuk cabang platform berbasis Amazon Linux AMI (AL1). AL2023/ cabang AL2 platform tidak kompatibel dengan versi platform Amazon Linux AMI (AL1) sebelumnya dan *memerlukan pengaturan konfigurasi yang berbeda*.
 **Pada [18 Juli 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) Elastic Beanstalk menetapkan status semua cabang platform berdasarkan Amazon Linux AMI AL1 () untuk pensiun.** Untuk informasi selengkapnya tentang migrasi ke cabang platform Amazon Linux 2023 saat ini dan didukung penuh, lihat. [Memigrasi aplikasi Elastic Beanstalk Linux Anda ke Amazon Linux 2023 atau Amazon Linux 2](using-features.migration-al.md)

### Port lewat - Amazon Linux AMI (AL1)
<a name="go-procfile.alami.ports"></a>

**catatan**  
Informasi dalam topik ini hanya berlaku untuk cabang platform berbasis Amazon Linux AMI (AL1). AL2023/ cabang AL2 platform tidak kompatibel dengan versi platform Amazon Linux AMI (AL1) sebelumnya dan *memerlukan pengaturan konfigurasi yang berbeda*.

Elastic Beanstalk mengonfigurasi proksi nginx untuk meneruskan permintaan ke aplikasi Anda di nomor port yang ditentukan di `PORT` [properti lingkungan](go-environment.md#go-options) untuk aplikasi Anda. Aplikasi Anda harus selalu mendengarkan di port tersebut. Anda dapat mengakses variabel ini dalam aplikasi Anda dengan memanggil metode `os.Getenv("PORT")`.

Elastic Beanstalk menggunakan nomor port yang ditentukan di properti lingkungan `PORT` untuk port untuk aplikasi pertama di `Procfile`, dan kemudian menambahkan nomor port untuk setiap aplikasi berikutnya di `Procfile` sebanyak 100. Jika properti lingkungan `PORT` tidak diatur, Elastic Beanstalk menggunakan 5000 untuk port awal.

Di contoh sebelumnya, properti lingkungan `PORT` untuk aplikasi `web` adalah 5000, aplikasi `queue_process` adalah 5100, dan aplikasi `foo` adalah 5200. 

Anda dapat menentukan port awal dengan mengatur opsi `PORT` dengan namespace [aws:elasticbeanstalk:aplication:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment), seperti yang ditunjukkan di contoh berikut. 

```
option_settings:
  - namespace:  aws:elasticbeanstalk:application:environment
    option_name:  PORT
    value:  <first_port_number>
```

Untuk informasi selengkapnya tentang pengaturan properti lingkungan untuk aplikasi Anda, lihat [Pengaturan opsi](ebextensions-optionsettings.md).

# Kustom build dan konfigurasi dengan Buildfile pada Elastic Beanstalk
<a name="go-buildfile"></a>

Untuk menentukan pembangunan kustom dan perintah konfigurasi untuk aplikasi Go Anda, sertakan file bernama `Buildfile` di akar paket sumber Anda. Nama file peka terhadap huruf besar-kecil. Gunakan format berikut untuk `Buildfile`: 

```
<process_name>: <command>
```

Perintah di `Buildfile` Anda harus sesuai dengan ekspresi reguler berikut: `^[A-Za-z0-9_]+:\s*.+$`.

Elastic Beanstalk tidak memantau aplikasi yang dijalankan dengan `Buildfile`. Gunakan `Buildfile` untuk perintah yang berjalan dalam waktu singkat dan berakhir setelah menyelesaikan tugas mereka. Untuk proses aplikasi yang berjalan lama yang seharusnya tidak keluar, gunakan [Procfile](go-procfile.md) sebagai gantinya.

Di contoh berikut dari sebuah `Buildfile`, `build.sh` adalah penulisan shell yang terletak di akar paket sumber:

```
make: ./build.sh
```

Semua jalur di `Buildfile` bersifat relatif terhadap akar paket sumber. Jika Anda tahu sebelumnya tempat file berada di instans, Anda dapat menyertakan jalur absolut di `Buildfile`.

# Mengonfigurasi server proksi
<a name="go-nginx"></a>

Elastic Beanstalk menggunakan nginx sebagai proksi terbalik untuk memetakan aplikasi Anda ke penyeimbang beban Elastic Load Balancing di port 80. Elastic Beanstalk menyediakan konfigurasi nginx default yang dapat Anda perluas atau sepenuhnya diganti dengan konfigurasi Anda sendiri.

Secara default, Elastic Beanstalk mengonfigurasi proksi nginx untuk meneruskan permintaan ke aplikasi Anda di port 5000. Anda dapat mengganti port default dengan mengatur `PORT` [properti lingkungan](go-environment.md#go-options) ke port yang didengarkan aplikasi utama Anda.

**catatan**  
Port yang didengar aplikasi Anda tidak mempengaruhi port yang didengar server nginx untuk menerima permintaan dari penyeimbang beban.

**Mengkonfigurasi server proxy pada versi platform Anda**  
Semua AL2 AL2 023/platform mendukung fitur konfigurasi proxy yang seragam. Untuk informasi selengkapnya tentang mengonfigurasi server proxy pada versi platform Anda yang menjalankan AL2 023/AL2, lihat. [Konfigurasi proksi terbalik](platforms-linux-extend.proxy.md) 

## Mengonfigurasi proksi di Amazon Linux AMI (Amazon Linux 2 terdahulu)
<a name="go-nginx.alami"></a>

**Catatan**  
Informasi dalam topik ini hanya berlaku untuk cabang platform berbasis Amazon Linux AMI (AL1). AL2023/ cabang AL2 platform tidak kompatibel dengan versi platform Amazon Linux AMI (AL1) sebelumnya dan *memerlukan pengaturan konfigurasi yang berbeda*.
 **Pada [18 Juli 2022,](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-07-18-linux-al1-retire.html) Elastic Beanstalk menetapkan status semua cabang platform berdasarkan Amazon Linux AMI AL1 () untuk pensiun.** Untuk informasi selengkapnya tentang migrasi ke cabang platform Amazon Linux 2023 saat ini dan didukung penuh, lihat. [Memigrasi aplikasi Elastic Beanstalk Linux Anda ke Amazon Linux 2023 atau Amazon Linux 2](using-features.migration-al.md)

Jika lingkungan Go Elastic Beanstalk Anda menggunakan versi platform Amazon Linux AMI (Amazon Linux 2 terdahulu), baca informasi di bagian ini.

### Memperluas dan mengganti konfigurasi proxy default — Amazon Linux AMI () AL1
<a name="go-nginx.alami.extending"></a>

Elastic Beanstalk menggunakan nginx sebagai proksi terbalik untuk memetakan aplikasi Anda ke penyeimbang beban di port 80. Jika Anda ingin menyediakan konfigurasi nginx Anda sendiri, Anda dapat mengganti konfigurasi default yang disediakan oleh Elastic Beanstalk dengan menyertakan file `.ebextensions/nginx/nginx.conf` di paket sumber Anda. Jika file tersedia, Elastic Beanstalk menggunakannya sebagai ganti file konfigurasi nginx default.

Jika Anda ingin menyertakan arahan selain yang ada di blok `nginx.conf` `http`, Anda juga dapat menyediakan file konfigurasi tambahan di direktori `.ebextensions/nginx/conf.d/` paket sumber Anda. Semua file di direktori ini harus memiliki ekstensi `.conf`. 

Untuk mengambil keuntungan dari fungsionalitas yang disediakan oleh Elastic Beanstalk, seperti [Peningkatan pelaporan dan pemantauan kesehatan di Elastic Beanstalk](health-enhanced.md), pemetaan aplikasi otomatis, dan file statis, Anda harus menyertakan baris berikut di blok `server` file konfigurasi nginx Anda:

```
include conf.d/elasticbeanstalk/*.conf;
```