Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyesuaikan perangkat lunak pada server Linux
Bagian ini menjelaskan jenis informasi yang dapat Anda sertakan dalam file konfigurasi untuk menyesuaikan perangkat lunak pada EC2 instance Anda yang menjalankan Linux. Untuk informasi umum tentang menyesuaikan dan mengonfigurasi lingkungan Elastic Beanstalk Anda, lihat Mengonfigurasi lingkungan Elastic Beanstalk. Untuk informasi tentang menyesuaikan perangkat lunak pada EC2 instans yang menjalankan Windows, lihat. Menyesuaikan perangkat lunak pada server Windows
Anda mungkin ingin menyesuaikan dan mengonfigurasi perangkat lunak yang diandalkan oleh aplikasi Anda. Anda dapat menambahkan perintah yang akan dieksekusi selama penyediaan instans; menentukan pengguna dan grup Linux; dan mengunduh atau langsung membuat file pada instans lingkungan Anda. File ini mungkin berupa dependensi yang diperlukan oleh aplikasi—misalnya, paket tambahan dari repositori yum—atau mungkin file konfigurasi seperti pengganti file konfigurasi proksi untuk menimpa pengaturan tertentu yang ditetapkan oleh Elastic Beanstalk.
Catatan
-
Pada platform Amazon Linux 2, alih-alih menyediakan file dan perintah dalam file konfigurasi.ebextensions, kami sangat menyarankan agar Anda menggunakan Buildfile. Procfile, dan hook platform bila memungkinkan untuk mengonfigurasi dan menjalankan kode khusus pada instans lingkungan Anda selama penyediaan instans. Untuk detail tentang mekanisme ini, lihat Memperluas platform Linux Elastic Beanstalk.
-
YAMLbergantung pada lekukan yang konsisten. Cocokkan tingkat indentasi saat mengganti konten dalam file konfigurasi contoh dan pastikan bahwa editor teks Anda menggunakan spasi, bukan karakter tab, untuk indentasi.
File konfigurasi mendukung kunci berikut yang mempengaruhi server Linux tampat aplikasi Anda berjalan.
Kunci
Kunci diproses dalam urutan yang tercantum di sini.
Perhatikan peristiwa lingkungan Anda saat mengembangkan dan menguji file konfigurasi. Elastic Beanstalk mengabaikan file konfigurasi yang berisi kesalahan validasi, seperti kunci yang tidak valid, dan tidak memproses kunci lain dalam file yang sama. Ketika ini terjadi, Elastic Beanstalk menambahkan peristiwa peringatan log peristiwa.
Paket
Anda dapat menggunakan kunci packages
untuk mengunduh dan memasang aplikasi dan komponen yang telah dikemas sebelumnya.
Sintaks
packages:
name of package manager
:
package name
: version
...
name of package manager
:
package name
: version
...
...
Anda dapat menentukan beberapa paket di bawah kunci setiap manajer paket.
Format paket yang didukung
Elastic Beanstalk saat ini mendukung manajer paket berikut: yum, rubygems, python, dan rpm. Paket diproses dengan urutan sebagai berikut: rpm, yum, dan kemudian rubygems dan python. Tidak ada pengurutan antara rubygems dan python. Dalam setiap manajer paket, pesanan instalasi paket tidak dijamin. Gunakan manajer paket yang didukung oleh sistem operasi Anda.
catatan
Elastic Beanstalk mendukung dua manajer paket yang mendasari untuk Python, pip dan easy_install. Namun, dalam sintaks file konfigurasi, Anda harus menentukan nama manajer paket sebagai python
. Bila Anda menggunakan file konfigurasi untuk menentukan manajer paket Python, Elastic Beanstalk menggunakan Python 2.7. Jika aplikasi Anda bergantung pada versi Python yang berbeda, Anda dapat menentukan paket yang akan dipasang di file requirements.txt
. Untuk informasi selengkapnya, lihat Menentukan dependensi menggunakan file persyaratan pada Elastic Beanstalk.
Menentukan versi
Dalam setiap manajer paket, setiap paket ditetapkan sebagai nama paket dan daftar versi. Versi ini bisa berupa string, daftar versi, atau string atau daftar kosong. String atau daftar kosong menunjukkan bahwa Anda menginginkan versi terbaru. Untuk manajer rpm, versi ditentukan sebagai jalur ke file pada disk atau fileURL. Jalur relatif tidak didukung.
Jika Anda menentukan versi paket, Elastic Beanstalk mencoba untuk memasang versi tersebut meskipun versi paket yang lebih baru sudah dipasang pada instans. Jika versi yang lebih baru sudah dipasang, deployment gagal. Beberapa manajer paket mendukung beberapa versi, tetapi yang lain mungkin tidak. Periksa dokumentasi manajer paket Anda untuk informasi lebih lanjut. Jika Anda tidak menentukan versi dan versi paket sudah terinstal, Elastic Beanstalk tidak menginstal versi baru—ini mengasumsikan bahwa Anda ingin menyimpan dan menggunakan versi yang ada.
Contoh snippet
Cuplikan berikut menentukan versi URL untuk rpm, meminta versi terbaru dari yum, dan versi 0.10.2 koki dari rubygems.
packages:
yum:
libmemcached: []
ruby-devel: []
gcc: []
rpm:
epel: http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rubygems:
chef: '0.10.2'
Grup
Anda dapat menggunakan groups
kunci untuk membuat Linux/ UNIX grup dan menetapkan grup. IDs Untuk membuat grup, tambahkan pasangan nilai kunci baru yang memetakan nama grup baru untuk ID grup opsional. Kunci grup dapat berisi satu nama grup atau beberapa. Tabel berikut menjelaskan kunci yang tersedia.
Sintaksis
groups:
name of group
: {}
name of group
:
gid: "group id
"
Opsi
gid
-
Nomor ID grup.
Jika ID grup ditentukan, dan grup sudah ada berdasarkan nama, pembuatan grup akan gagal. Jika grup lain memiliki ID grup tertentu, sistem operasi dapat menolak pembuatan grup.
Contoh potongan
Cuplikan berikut menentukan grup bernama groupOne tanpa menetapkan ID grup dan grup bernama groupTwo yang menentukan nilai ID grup 45.
groups:
groupOne: {}
groupTwo:
gid: "45
"
Pengguna
Anda dapat menggunakan users
kunci untuk membuat UNIX Linux/pengguna pada instance. EC2
Sintaksis
users:
name of user
:
groups:
- name of group
uid: "id of the user
"
homeDir: "user's home directory
"
Opsi
uid
-
ID pengguna. Proses pembuatan gagal jika nama pengguna ada dengan ID pengguna yang berbeda. Jika ID pengguna sudah ditetapkan untuk pengguna yang sudah ada, sistem operasi dapat menolak permintaan pembuatan.
groups
-
Daftar nama grup. Pengguna ditambahkan ke setiap grup dalam daftar.
homeDir
-
Direktori beranda pengguna.
Pengguna dibuat sebagai pengguna sistem noninteraktif dengan shell /sbin/nologin
. Ini adalah disengaja dan tidak dapat dimodifikasi.
Contoh potongan
users:
myuser:
groups:
- group1
- group2
uid: "50
"
homeDir: "/tmp
"
Sumber
Anda dapat menggunakan sources
kunci untuk mengunduh file arsip dari publik URL dan membongkarnya di direktori target pada EC2 instance.
Sintaks
sources:
target directory
: location of archive file
Format yang didukung
Format yang didukung adalah tar, tar+gzip, tar+bz2, dan zip. Anda dapat mereferensikan lokasi eksternal seperti Amazon Simple Storage Service (Amazon S3) Simple Storage Service (misalnyahttps://amzn-s3-demo-bucket.s3.amazonaws.com/myobject
,) selama URL dapat diakses publik.
Contoh potongan
Contoh berikut mengunduh file .zip publik dari bucket Amazon S3 dan membukanya ke dalam /etc/myapp
:
sources:
/etc/myapp: https://amzn-s3-demo-bucket.s3.amazonaws.com/myobject
catatan
Beberapa ekstraksi tidak boleh menggunakan kembali jalur target yang sama. Mengekstrak sumber lain ke jalur target yang sama akan mengganti alih-alih menambah konten.
Berkas
Anda dapat menggunakan files
kunci untuk membuat file pada EC2 instance. Konten dapat berupa inline dalam file konfigurasi, atau konten dapat ditarik dari file. URL File ditulis ke disk dalam urutan leksikografis.
Anda dapat menggunakan kunci files
untuk mengunduh file pribadi dari Amazon S3 dengan menyediakan profil instans untuk otorisasi.
Jika jalur file yang Anda tentukan sudah ada di instans, file yang ada dipertahankan dengan ekstensi .bak
yang ditambahkan ke namanya.
Sintaksis
files:
"target file location on disk
":
mode: "six-digit octal value
"
owner: name of owning user for file
group: name of owning group for file
source: URL
authentication: authentication name
:
"target file location on disk
":
mode: "six-digit octal value
"
owner: name of owning user for file
group: name of owning group for file
content: |
# this is my
# file content
encoding: encoding format
authentication: authentication name
:
Opsi
content
-
Konten string untuk ditambahkan ke file. Tentukan salah satu
content
atausource
, tidak keduanya. source
-
URLdari file yang akan diunduh. Tentukan salah satu
content
atausource
, tidak keduanya. encoding
-
Format pengodean dari string yang ditentukan dengan opsi
content
.Nilai yang valid:
plain
|base64
group
-
Grup Linux yang memiliki file.
owner
-
Pengguna Linux yang memiliki file.
mode
-
Nilai oktal enam digit yang mewakili mode untuk file ini. Tidak mendukung sistem Windows. Gunakan tiga digit pertama untuk symlink dan tiga digit terakhir untuk pengaturan izin. Untuk membuat symlink, tentukan
120
, tempatxxx
xxx
mendefinisikan izin file target. Untuk menentukan izin file, gunakan tiga digit terakhir, seperti000644
. authentication
-
Nama AWS CloudFormation metode autentikasi yang akan digunakan. Anda dapat menambahkan metode autentikasi ke metadata grup Auto Scaling dengan kunci Sumber Daya. Lihat di bawah untuk contoh.
Contoh snippet
files:
"/home/ec2-user/myfile" :
mode: "000755"
owner: root
group: root
source: http://foo.bar/myfile
"/home/ec2-user/myfile2" :
mode: "000755"
owner: root
group: root
content: |
this is my
file content
Contoh penggunaan symlink. Hal ini membuat tautan /tmp/myfile2.txt
yang mengarah ke file yang ada /tmp/myfile1.txt
.
files:
"/tmp/myfile2.txt" :
mode: "120400"
content: "/tmp/myfile1.txt"
Contoh berikut menggunakan kunci Sumber daya untuk menambahkan metode autentikasi bernama S3Auth dan menggunakannya untuk mengunduh file pribadi dari bucket Amazon S3:
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth
:
type: "s3"
buckets: ["amzn-s3-demo-bucket2
"]
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:autoscaling:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "aws-elasticbeanstalk-ec2-role"
files:
"/tmp/data.json
" :
mode: "000755"
owner: root
group: root
authentication: "S3Auth
"
source: https://elasticbeanstalk-us-west-2-123456789012.s3-us-west-2.amazonaws.com/data.json
Commands
Anda dapat menggunakan commands
kunci untuk menjalankan perintah pada EC2 instance. Perintah berjalan sebelum server aplikasi dan web diatur dan file versi aplikasi diekstrak.
Perintah yang ditentukan dijalankan sebagai pengguna root, dan diproses dalam urutan abjad berdasarkan nama. Secara default, perintah berjalan di direktori root. Untuk menjalankan perintah dari direktori lain, gunakan opsi cwd
tersebut.
Untuk memecahkan masalah dengan perintah Anda, Anda dapat menemukan outputnya di log instans.
Sintaksis
commands:
command name
:
command: command to run
cwd: working directory
env:
variable name
: variable value
test: conditions for command
ignoreErrors: true
Opsi
command
-
Entah array (koleksi urutan blok
dalam YAML sintaks) atau string yang menentukan perintah untuk dijalankan. Beberapa catatan penting: -
Jika Anda menggunakan string, Anda tidak perlu menyertakan seluruh string dalam tanda kutip. Jika Anda menggunakan tanda kutip, hindari kejadian literal dari jenis kutipan yang sama.
-
Jika Anda menggunakan array, Anda tidak perlu menghindari karakter spasi atau melampirkan parameter perintah pada kutipan. Setiap elemen array adalah argumen perintah tunggal. Jangan gunakan array untuk menentukan beberapa perintah.
Contoh berikut semuanya setara:
commands: command1: command: git commit -m "This is a comment." command2: command: "git commit -m \"This is a comment.\"" command3: command: 'git commit -m "This is a comment."' command4: command: - git - commit - -m - This is a comment.
Untuk menentukan beberapa perintah, gunakan skalar blok literal
, seperti yang ditunjukkan pada contoh berikut. commands: command block: command: | git commit -m "This is a comment." git push
-
env
-
(Opsional) Atur variabel lingkungan untuk perintah. Properti ini menimpa, bukan menambahkan, lingkungan yang ada.
cwd
-
(Opsional) Direktori kerja. Jika tidak ditentukan, perintah dijalankan dari direktori root (/).
test
-
(Opsional) Perintah yang harus mengembalikan nilai
true
(kode keluar 0) agar Elastic Beanstalk memproses perintah, seperti skrip shell, yang terdapat dalam kuncicommand
. ignoreErrors
-
(Opsional) Nilai boolean yang menentukan apakah perintah lain harus dijalankan jika perintah yang terdapat dalam kunci
command
gagal (mengembalikan nilai bukan nol). Tetapkan nilai ini ketrue
jika Anda ingin terus menjalankan perintah meskipun perintah gagal. Atur nilai kefalse
jika Anda ingin berhenti menjalankan perintah jika perintah gagal. Nilai default-nya adalahfalse
.
Contoh snippet
Contoh potongan berikut menjalankan skrip Python.
commands:
python_install:
command: myscript.py
cwd: /home/ec2-user
env:
myvarname: myvarvalue
test: "[ -x /usr/bin/python ]"
Layanan
Anda dapat menggunakan kunci services
untuk menentukan layanan yang harus dimulai atau berhenti ketika instans diluncurkan. Kunci services
tersebut juga mengizinkan Anda untuk menentukan dependensi pada sumber, paket, dan file sehingga jika mulai ulang diperlukan karena file yang diinstal, Elastic Beanstalk mengurus layanan mulai ulang.
Sintaksis
services:
sysvinit:
name of service
:
enabled: "true"
ensureRunning: "true"
files:
- "file name
"
sources:
- "directory
"
packages:
name of package manager
:
"package name
[: version
]"
commands:
- "name of command
"
Opsi
ensureRunning
-
Atur ke
true
untuk memastikan layanan berjalan setelah Elastic Beanstalk selesai.Atur ke
false
untuk memastikan layanan tidak berjalan setelah Elastic Beanstalk selesai.Abaikan kunci ini untuk tidak membuat perubahan pada status layanan.
enabled
-
Atur ke
true
untuk memastikan layanan dimulai secara otomatis setelah boot.Atur ke
false
untuk memastikan layanan tidak dimulai secara otomatis setelah boot.Abaikan kunci ini untuk tidak membuat perubahan pada properti ini.
files
-
Daftar file. Jika Elastic Beanstalk mengubah file secara langsung melalui blok file, layanan dimulai ulang.
sources
-
Daftar direktori. Jika Elastic Beanstalk memperluas arsip ke salah satu direktori ini, layanan akan dimulai ulang.
packages
-
Peta manajer paket ke daftar nama paket. Jika Elastic Beanstalk menginstal atau memperbarui salah satu paket ini, layanan akan dimulai ulang.
commands
-
Daftar nama perintah. Jika Elastic Beanstalk menjalankan perintah yang ditentukan, layanan akan dimulai ulang.
Contoh snippet
Berikut ini adalah contoh snippet:
services:
sysvinit:
myservice:
enabled: true
ensureRunning: true
Perintah kontainer
Anda dapat menggunakan kunci container_commands
untuk menjalankan perintah yang mempengaruhi kode sumber aplikasi Anda. Perintah kontainer berjalan setelah aplikasi dan server web diatur dan arsip versi aplikasi telah diekstraksi, tetapi sebelum versi aplikasi di-deploy. Perintah non-kontainer dan operasi penyesuaian lainnya dilakukan sebelum kode sumber aplikasi diekstraksi.
Perintah yang ditentukan dijalankan sebagai pengguna root, dan diproses dalam urutan abjad berdasarkan nama. Perintah kontainer dijalankan dari direktori pementasan, di mana kode sumber Anda diekstrak sebelum di-deploy ke server aplikasi. Setiap perubahan yang Anda buat untuk kode sumber Anda di direktori pementasan dengan perintah kontainer akan disertakan ketika sumber di-deploy ke lokasi akhir.
catatan
Output dari perintah container Anda dicatat di log cfn-init-cmd.log
instance. Untuk informasi selengkapnya tentang mengambil dan melihat log instans, lihat Melihat log dari EC2 instans Amazon.
Anda dapat menggunakan leader_only
hanya untuk menjalankan perintah pada satu instans, atau mengonfigurasi test
hanya untuk menjalankan perintah ketika perintah pengujian dievaluasi true
. Perintah kontainer khusus pemimpin hanya dijalankan selama pembuatan dan penerapan lingkungan, sedangkan perintah dan operasi penyesuaian server lain dilakukan setiap kali sebuah instans ditetapkan atau diperbarui. Perintah kontainer khusus pemimpin tidak dijalankan karena perubahan konfigurasi peluncuran, seperti perubahan pada AMI Id atau tipe instance.
Sintaksis
container_commands:
name of container_command
:
command: "command to run
"
leader_only: true
name of container_command
:
command: "command to run
"
Opsi
command
-
Sebuah string atau array string yang akan dijalankan.
env
-
(Opsional) Atur variabel lingkungan sebelum menjalankan perintah, menimpa nilai yang ada.
cwd
-
(Opsional) Direktori kerja. Secara default, ini adalah direktori persiapan aplikasi unzip.
leader_only
-
(Opsional) Hanya jalankan perintah pada satu instans yang dipilih oleh Elastic Beanstalk. Perintah kontainer khusus pemimpin dijalankan sebelum perintah kontainer lainnya. Sebuah perintah bisa ditujukan khusus untuk pemimpin atau memiliki
test
, tetapi tidak keduanya (leader_only
diutamakan). test
-
(Opsional) Jalankan perintah pengujian yang harus mengembalikan
true
untuk menjalankan perintah kontainer. Sebuah perintah bisa ditujukan khusus untuk pemimpin atau memilikitest
, tetapi tidak keduanya (leader_only
diutamakan). ignoreErrors
-
(Opsional) Jangan gagalkan penerapan jika perintah kontainer mengembalikan nilai selain 0 (sukses). Atur ke
true
untuk mengaktifkan.
Contoh snippet
Berikut adalah contoh snippet.
container_commands:
collectstatic:
command: "django-admin.py collectstatic --noinput"
01syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
02migrate:
command: "django-admin.py migrate"
leader_only: true
99customize:
command: "scripts/customize.sh"