Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AppSpec Bagian 'kait'
Konten di 'hooks'
bagian AppSpec file bervariasi, tergantung pada platform komputasi untuk penerapan Anda. 'hooks'
Bagian untuk penerapan EC2/On-premise berisi pemetaan yang menghubungkan peristiwa siklus hidup penerapan terkait ke satu atau beberapa skrip. 'hooks'
Bagian untuk Lambda atau penerapan Amazon ECS menentukan fungsi validasi Lambda untuk dijalankan selama peristiwa siklus hidup penerapan. Jika hook peristiwa tidak ada, tidak ada operasi yang dijalankan untuk acara itu. Bagian ini diperlukan hanya jika Anda menjalankan skrip atau fungsi validasi Lambda sebagai bagian dari penerapan.
Topik
AppSpec Bagian 'kait' untuk penerapan Amazon ECS
Topik
Daftar kait peristiwa siklus hidup untuk penerapan Amazon ECS
Hook AWS Lambda adalah salah satu fungsi Lambda yang ditentukan dengan string pada baris baru setelah nama peristiwa siklus hidup. Setiap hook dijalankan sekali per penerapan. Berikut ini adalah deskripsi peristiwa siklus hidup tempat Anda dapat menjalankan hook selama penerapan Amazon ECS.
-
BeforeInstall
— Gunakan untuk menjalankan tugas sebelum set tugas pengganti dibuat. Satu kelompok target dikaitkan dengan set tugas asli. Jika pendengar uji opsional ditentukan, ini terkait dengan set tugas asli. Rollback tidak dimungkinkan pada saat ini. -
AfterInstall
— Gunakan untuk menjalankan tugas setelah set tugas pengganti dibuat dan salah satu kelompok target dikaitkan dengannya. Jika pendengar uji opsional ditentukan, ini terkait dengan set tugas asli. Hasil fungsi hook pada peristiwa siklus hidup ini dapat memicu rollback. -
AfterAllowTestTraffic
— Gunakan untuk menjalankan tugas setelah pendengar pengujian menyajikan lalu lintas ke set tugas pengganti. Hasil fungsi hook pada titik ini dapat memicu rollback. -
BeforeAllowTraffic
— Gunakan untuk menjalankan tugas setelah kelompok target kedua dikaitkan dengan set tugas pengganti, tetapi sebelum lalu lintas digeser ke set tugas pengganti. Hasil fungsi hook pada peristiwa siklus hidup ini dapat memicu rollback. -
AfterAllowTraffic
— Gunakan untuk menjalankan tugas setelah kelompok target kedua melayani lalu lintas ke set tugas pengganti. Hasil fungsi hook pada peristiwa siklus hidup ini dapat memicu rollback.
Untuk informasi selengkapnya, lihat Apa yang terjadi selama penyebaran Amazon ECS dan Tutorial: Menyebarkan layanan Amazon ECS dengan uji validasi.
Jalankan urutan kait dalam penerapan Amazon ECS.
Dalam penerapan Amazon ECS, kait peristiwa berjalan dalam urutan berikut:
![Urutan kait acara dalam penyebaran Amazon ECS.](images/lifecycle-event-order-ecs.png)
catatan
Peristiwa Mulai, Instal TestTrafficAllowTraffic,,, dan Akhir dalam penerapan tidak dapat ditulis, itulah sebabnya mereka muncul dalam warna abu-abu dalam diagram ini.
Struktur bagian 'kait'
Berikut ini adalah contoh struktur 'hooks'
bagian.
Menggunakan YAMAL:
Hooks: - BeforeInstall: "
BeforeInstallHookFunctionName
" - AfterInstall: "AfterInstallHookFunctionName
" - AfterAllowTestTraffic: "AfterAllowTestTrafficHookFunctionName
" - BeforeAllowTraffic: "BeforeAllowTrafficHookFunctionName
" - AfterAllowTraffic: "AfterAllowTrafficHookFunctionName
"
Menggunakan JSON:
"Hooks": [ { "BeforeInstall": "
BeforeInstallHookFunctionName
" }, { "AfterInstall": "AfterInstallHookFunctionName
" }, { "AfterAllowTestTraffic": "AfterAllowTestTrafficHookFunctionName
" }, { "BeforeAllowTraffic": "BeforeAllowTrafficHookFunctionName
" }, { "AfterAllowTraffic": "AfterAllowTrafficHookFunctionName
" } ] }
Contoh fungsi 'kait' Lambda
Gunakan 'hooks'
bagian untuk menentukan fungsi Lambda yang CodeDeploy dapat memanggil untuk memvalidasi penerapan Amazon ECS. Anda dapat menggunakan fungsi yang sama atau yang berbeda untuk peristiwa siklus hidup BeforeInstall
AfterInstall
AfterAllowTestTraffic
,BeforeAllowTraffic
,,, dan AfterAllowTraffic
penerapan. Setelah menyelesaikan tes validasi, fungsi AfterAllowTraffic
Lambda memanggil CodeDeploy kembali dan memberikan hasil dari atau. Succeeded
Failed
penting
Penerapan dianggap gagal jika tidak diberitahukan oleh CodeDeploy fungsi validasi Lambda dalam waktu satu jam.
Sebelum menjalankan fungsi hook Lambda, server harus diberi tahu tentang ID penerapan dan ID eksekusi kait peristiwa siklus hidup menggunakan perintah. putLifecycleEventHookExecutionStatus
Berikut ini adalah contoh fungsi hook Lambda ditulis dalam Node.js.
'use strict'; const aws = require('aws-sdk'); const codedeploy = new aws.CodeDeploy({apiVersion: '2014-10-06'}); exports.handler = (event, context, callback) => { //Read the DeploymentId from the event payload. var deploymentId = event.DeploymentId; //Read the LifecycleEventHookExecutionId from the event payload var lifecycleEventHookExecutionId = event.LifecycleEventHookExecutionId; /* Enter validation tests here. */ // Prepare the validation test results with the deploymentId and // the lifecycleEventHookExecutionId for CodeDeploy. var params = { deploymentId: deploymentId, lifecycleEventHookExecutionId: lifecycleEventHookExecutionId, status: 'Succeeded' // status can be 'Succeeded' or 'Failed' }; // Pass CodeDeploy the prepared validation test results. codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) { if (err) { // Validation failed. callback('Validation test failed'); } else { // Validation succeeded. callback(null, 'Validation test succeeded'); } }); };
AppSpec Bagian 'kait' untuk penerapan AWS Lambda
Topik
Daftar kait peristiwa siklus hidup untuk penerapan Lambda AWS
Hook AWS Lambda adalah salah satu fungsi Lambda yang ditentukan dengan string pada baris baru setelah nama peristiwa siklus hidup. Setiap hook dijalankan sekali per penerapan. Berikut adalah deskripsi kait yang tersedia untuk digunakan dalam file Anda AppSpec .
-
BeforeAllowTraffic— Gunakan untuk menjalankan tugas sebelum lalu lintas dialihkan ke versi fungsi Lambda yang digunakan.
-
AfterAllowTraffic— Gunakan untuk menjalankan tugas setelah semua lalu lintas dialihkan ke versi fungsi Lambda yang digunakan.
Jalankan urutan kait dalam penerapan versi fungsi Lambda
Dalam penerapan versi fungsi Lambda tanpa server, kait peristiwa berjalan dalam urutan berikut:
![Urutan kait acara dalam penyebaran Lambda.](images/lifecycle-event-order-lambda.png)
catatan
Peristiwa Mulai AllowTraffic,, dan Akhir dalam penerapan tidak dapat ditulis, itulah sebabnya mereka muncul dalam warna abu-abu dalam diagram ini.
Struktur bagian 'kait'
Berikut ini adalah contoh struktur bagian 'kait'.
Menggunakan YAMAL:
hooks: - BeforeAllowTraffic:
BeforeAllowTrafficHookFunctionName
- AfterAllowTraffic:AfterAllowTrafficHookFunctionName
Menggunakan JSON:
"hooks": [{ "BeforeAllowTraffic": "
BeforeAllowTrafficHookFunctionName
" }, { "AfterAllowTraffic": "AfterAllowTrafficHookFunctionName
" }]
Contoh fungsi 'kait' Lambda
Gunakan bagian 'kait' untuk menentukan fungsi Lambda CodeDeploy yang dapat memanggil untuk memvalidasi penerapan Lambda. Anda dapat menggunakan fungsi yang sama atau yang berbeda untuk peristiwa siklus hidup BeforeAllowTraffic
dan AfterAllowTraffic
penerapan. Setelah menyelesaikan tes validasi, fungsi validasi Lambda memanggil CodeDeploy kembali dan memberikan hasil dari atau. Succeeded
Failed
penting
Penerapan dianggap gagal jika tidak diberitahukan oleh CodeDeploy fungsi validasi Lambda dalam waktu satu jam.
Sebelum menjalankan fungsi hook Lambda, server harus diberi tahu tentang ID penerapan dan ID eksekusi kait peristiwa siklus hidup menggunakan perintah. putLifecycleEventHookExecutionStatus
Berikut ini adalah contoh fungsi hook Lambda ditulis dalam Node.js.
'use strict'; const aws = require('aws-sdk'); const codedeploy = new aws.CodeDeploy({apiVersion: '2014-10-06'}); exports.handler = (event, context, callback) => { //Read the DeploymentId from the event payload. var deploymentId = event.DeploymentId; //Read the LifecycleEventHookExecutionId from the event payload var lifecycleEventHookExecutionId = event.LifecycleEventHookExecutionId; /* Enter validation tests here. */ // Prepare the validation test results with the deploymentId and // the lifecycleEventHookExecutionId for CodeDeploy. var params = { deploymentId: deploymentId, lifecycleEventHookExecutionId: lifecycleEventHookExecutionId, status: 'Succeeded' // status can be 'Succeeded' or 'Failed' }; // Pass CodeDeploy the prepared validation test results. codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) { if (err) { // Validation failed. callback('Validation test failed'); } else { // Validation succeeded. callback(null, 'Validation test succeeded'); } }); };
AppSpec Bagian 'kait' untuk penerapan EC2/On-premise
Topik
Daftar kait acara siklus hidup
Pengait penerapan EC2/On-premise dijalankan satu kali per penerapan ke sebuah instance. Anda dapat menentukan satu atau beberapa skrip untuk dijalankan di hook. Setiap hook untuk acara siklus hidup ditentukan dengan string pada baris terpisah. Berikut adalah deskripsi kait yang tersedia untuk digunakan dalam file Anda AppSpec .
Untuk informasi tentang kait peristiwa siklus hidup mana yang valid untuk jenis penerapan dan rollback, lihat. Ketersediaan kait acara siklus hidup
-
ApplicationStop
— Peristiwa siklus hidup penerapan ini terjadi bahkan sebelum revisi aplikasi diunduh. Anda dapat menentukan skrip untuk acara ini untuk menghentikan aplikasi dengan anggun atau menghapus paket yang saat ini diinstal sebagai persiapan untuk penerapan. AppSpec File dan skrip yang digunakan untuk peristiwa siklus hidup penerapan ini berasal dari revisi aplikasi yang berhasil diterapkan sebelumnya.catatan
AppSpec File tidak ada pada instance sebelum Anda menerapkannya. Untuk alasan ini,
ApplicationStop
hook tidak berjalan saat pertama kali Anda menerapkan ke instance. Anda dapat menggunakanApplicationStop
hook untuk kedua kalinya Anda menyebarkan ke sebuah instance.Untuk menentukan lokasi revisi aplikasi terakhir yang berhasil diterapkan, CodeDeploy agen mencari lokasi yang tercantum dalam file.
File ini terletak di:deployment-group-id
_last_successful_install/opt/codedeploy-agent/deployment-root/deployment-instructions
folder di Amazon Linux, Server Ubuntu, dan instans RHEL Amazon EC2.C:\ProgramData\Amazon\CodeDeploy\deployment-instructions
folder pada instans Windows Server Amazon EC2.Untuk memecahkan masalah penerapan yang gagal selama peristiwa siklus hidup
ApplicationStop
penerapan, lihat. Memecahkan masalah peristiwa siklus hidup yang gagal ApplicationStop BeforeBlockTraffic, atau AfterBlockTraffic penerapan -
DownloadBundle
— Selama peristiwa siklus hidup penerapan ini, CodeDeploy agen menyalin file revisi aplikasi ke lokasi sementara:/opt/codedeploy-agent/deployment-root/
folder di Amazon Linux, Server Ubuntu, dan instans RHEL Amazon EC2.deployment-group-id
/deployment-id
/deployment-archiveC:\ProgramData\Amazon\CodeDeploy\
folder pada instans Windows Server Amazon EC2.deployment-group-id
\deployment-id
\deployment-archiveAcara ini dicadangkan untuk CodeDeploy agen dan tidak dapat digunakan untuk menjalankan skrip.
Untuk memecahkan masalah penerapan yang gagal selama peristiwa siklus hidup
DownloadBundle
penerapan, lihat. Memecahkan masalah peristiwa siklus hidup DownloadBundle penerapan yang gagal dengan UnknownError: tidak dibuka untuk dibaca -
BeforeInstall
— Anda dapat menggunakan peristiwa siklus hidup penerapan ini untuk tugas prainstal, seperti mendekripsi file dan membuat cadangan versi saat ini. -
Install
— Selama peristiwa siklus hidup penerapan ini, CodeDeploy agen menyalin file revisi dari lokasi sementara ke folder tujuan akhir. Acara ini dicadangkan untuk CodeDeploy agen dan tidak dapat digunakan untuk menjalankan skrip. -
AfterInstall
— Anda dapat menggunakan peristiwa siklus hidup penerapan ini untuk tugas-tugas seperti mengonfigurasi aplikasi Anda atau mengubah izin file. -
ApplicationStart
— Anda biasanya menggunakan peristiwa siklus hidup penerapan ini untuk memulai ulang layanan yang dihentikan selama.ApplicationStop
-
ValidateService
— Ini adalah peristiwa siklus hidup penerapan terakhir. Ini digunakan untuk memverifikasi penyebaran berhasil diselesaikan. -
BeforeBlockTraffic
— Anda dapat menggunakan peristiwa siklus hidup penerapan ini untuk menjalankan tugas pada instance sebelum dideregistrasi dari penyeimbang beban.Untuk memecahkan masalah penerapan yang gagal selama peristiwa siklus hidup
BeforeBlockTraffic
penerapan, lihat. Memecahkan masalah peristiwa siklus hidup yang gagal ApplicationStop BeforeBlockTraffic, atau AfterBlockTraffic penerapan -
BlockTraffic
— Selama peristiwa siklus hidup penerapan ini, lalu lintas internet diblokir dari mengakses instance yang saat ini melayani lalu lintas. Acara ini dicadangkan untuk CodeDeploy agen dan tidak dapat digunakan untuk menjalankan skrip. -
AfterBlockTraffic
— Anda dapat menggunakan peristiwa siklus hidup penerapan ini untuk menjalankan tugas pada instance setelah dideregistrasi dari penyeimbang beban masing-masing.Untuk memecahkan masalah penerapan yang gagal selama peristiwa siklus hidup
AfterBlockTraffic
penerapan, lihat. Memecahkan masalah peristiwa siklus hidup yang gagal ApplicationStop BeforeBlockTraffic, atau AfterBlockTraffic penerapan -
BeforeAllowTraffic
— Anda dapat menggunakan peristiwa siklus hidup penerapan ini untuk menjalankan tugas pada instance sebelum terdaftar dengan penyeimbang beban. -
AllowTraffic
— Selama peristiwa siklus hidup penerapan ini, lalu lintas internet diizinkan untuk mengakses instance setelah penerapan. Acara ini dicadangkan untuk CodeDeploy agen dan tidak dapat digunakan untuk menjalankan skrip. -
AfterAllowTraffic
— Anda dapat menggunakan peristiwa siklus hidup penerapan ini untuk menjalankan tugas pada instance setelah terdaftar dengan penyeimbang beban.
Ketersediaan kait acara siklus hidup
Tabel berikut mencantumkan kait peristiwa siklus hidup yang tersedia untuk setiap skenario penerapan dan rollback.
Nama acara siklus hidup | Penerapan peluncuran Auto Scaling¹ | Penerapan penghentian Auto Scaling ¹ | Penyebaran di tempat² | Penerapan biru/hijau: Contoh asli | Penerapan biru/hijau: Instans penggantian | Rollback penerapan biru/hijau: Contoh asli | Rollback penerapan biru/hijau: Instans penggantian |
---|---|---|---|---|---|---|---|
ApplicationStop | ✓ | ✓ | ✓ | ✓ | |||
DownloadBundle³ | ✓ | ✓ | ✓ | ||||
BeforeInstall | ✓ | ✓ | ✓ | ||||
Instal ³ | ✓ | ✓ | ✓ | ||||
AfterInstall | ✓ | ✓ | ✓ | ||||
ApplicationStart | ✓ | ✓ | ✓ | ||||
ValidateService | ✓ | ✓ | ✓ | ||||
BeforeBlockTraffic | ✓ | ✓ | ✓ | ✓ | |||
BlockTraffic³ | ✓ | ✓ | ✓ | ✓ | |||
AfterBlockTraffic | ✓ | ✓ | ✓ | ✓ | |||
BeforeAllowTraffic | ✓ | ✓ | ✓ | ✓ | |||
AllowTraffic³ | ✓ | ✓ | ✓ | ✓ | |||
AfterAllowTraffic | ✓ | ✓ | ✓ | ✓ | |||
¹ Untuk informasi tentang penerapan Auto Scaling Amazon EC2, lihat. Cara Kerja Auto Scaling Amazon EC2 CodeDeploy ² Juga berlaku untuk rollback penerapan di tempat. ³ Dicadangkan untuk CodeDeploy operasi. Tidak dapat digunakan untuk menjalankan skrip. |
Jalankan urutan kait dalam penerapan
Penerapan peluncuran Auto Scaling
Selama penerapan peluncuran Auto Scaling, CodeDeploy jalankan event hook dalam urutan berikut.
Untuk informasi selengkapnya tentang penerapan peluncuran Auto Scaling, lihat. Cara Kerja Auto Scaling Amazon EC2 CodeDeploy
![Urutan kait peristiwa selama penerapan peluncuran Auto Scaling.](images/lifecycle-event-order-scale-out.png)
catatan
Peristiwa Start DownloadBundle, AllowTraffic, Install, dan End dalam penyebaran tidak dapat ditulis, itulah sebabnya mereka muncul dalam warna abu-abu dalam diagram ini. Namun, Anda dapat mengedit 'files'
bagian AppSpec file untuk menentukan apa yang diinstal selama acara Install.
Penerapan penghentian Auto Scaling
Selama penerapan penghentian Auto Scaling, CodeDeploy jalankan event hook dalam urutan berikut.
Untuk informasi selengkapnya tentang penerapan penghentian Auto Scaling, lihat. Mengaktifkan penerapan penghentian selama peristiwa penskalaan Auto Scaling
![Urutan kait peristiwa selama penerapan penghentian Auto Scaling.](images/lifecycle-event-order-scale-in.png)
catatan
Peristiwa Mulai BlockTraffic,, dan Akhir dalam penerapan tidak dapat ditulis, itulah sebabnya mereka muncul dalam warna abu-abu dalam diagram ini.
Penerapan di tempat
Dalam penerapan di tempat, termasuk rollback penerapan di tempat, kait peristiwa dijalankan dalam urutan berikut:
catatan
Untuk penerapan di tempat, enam kait yang terkait dengan pemblokiran dan mengizinkan lalu lintas hanya berlaku jika Anda menentukan Classic Load Balancer, Application Load Balancer, atau Network Load Balancer dari Elastic Load Balancing dalam grup penyebaran.
![Urutan kait acara selama rollback penerapan di tempat.](images/lifecycle-event-order-in-place.png)
catatan
Peristiwa Start DownloadBundle,, Install, dan End dalam penerapan tidak dapat ditulis, itulah sebabnya mereka muncul dalam warna abu-abu dalam diagram ini. Namun, Anda dapat mengedit 'files'
bagian AppSpec file untuk menentukan apa yang diinstal selama acara Install.
Penerapan biru/hijau
Dalam penerapan biru/hijau, kait acara dijalankan dengan urutan sebagai berikut:
![Urutan kait acara dalam penyebaran biru/hijau.](images/lifecycle-event-order-blue-green.png)
catatan
Peristiwa Mulai DownloadBundle,, Instal BlockTrafficAllowTraffic,,, dan Akhir dalam penerapan tidak dapat ditulis, itulah sebabnya mereka muncul dalam warna abu-abu dalam diagram ini. Namun, Anda dapat mengedit bagian 'file' dari AppSpec file untuk menentukan apa yang diinstal selama acara Install.
Struktur bagian 'kait'
'hooks'
Bagian ini memiliki struktur sebagai berikut:
hooks:
deployment-lifecycle-event-name
: - location:script-location
timeout:timeout-in-seconds
runas:user-name
Anda dapat menyertakan elemen-elemen berikut dalam entri hook setelah nama peristiwa siklus hidup penerapan:
- lokasi
-
Wajib. Lokasi dalam bundel file skrip untuk revisi. Lokasi skrip yang Anda tentukan di
hooks
bagian ini relatif terhadap root bundel revisi aplikasi. Untuk informasi selengkapnya, lihat Rencanakan revisi untuk CodeDeploy. - batas waktu
-
Tidak wajib. Jumlah detik untuk memungkinkan skrip dijalankan sebelum dianggap gagal. Standarnya adalah 3600 detik (1 jam).
catatan
3600 detik (1 jam) adalah jumlah waktu maksimum yang diizinkan untuk eksekusi skrip untuk setiap peristiwa siklus hidup penerapan. Jika skrip melebihi batas ini, penerapan berhenti dan penerapan ke instance gagal. Pastikan jumlah detik yang ditentukan dalam batas waktu untuk semua skrip di setiap peristiwa siklus hidup penerapan tidak melebihi batas ini.
- runa
-
Tidak wajib. Pengguna untuk meniru saat menjalankan skrip. Secara default, ini adalah CodeDeploy agen yang berjalan pada instance. CodeDeploy tidak menyimpan kata sandi, sehingga pengguna tidak dapat ditiru jika pengguna runas membutuhkan kata sandi. Elemen ini hanya berlaku untuk instance Amazon Linux dan Ubuntu Server.
Mereferensikan file dalam skrip hook Anda
Jika Anda menghubungkan skrip ke peristiwa CodeDeploy siklus hidup seperti yang dijelaskan dalamAppSpec Bagian 'kait', dan Anda ingin mereferensikan file (misalnya,helper.sh
) dalam skrip Anda, maka Anda harus menentukan menggunakan: helper.sh
-
(Disarankan) Jalur absolut. Lihat Menggunakan jalur absolut.
-
Jalan relatif. Lihat Menggunakan jalur relatif.
Menggunakan jalur absolut
Untuk mereferensikan file menggunakan jalur absolutnya, Anda dapat:
-
Tentukan jalur absolut di
files
bagian AppSpec file, didestination
properti. Kemudian, tentukan jalur absolut yang sama di skrip hook Anda. Untuk informasi selengkapnya, lihat AppSpec Bagian 'file' (EC2/hanya penerapan di lokasi). -
Tentukan jalur absolut dinamis dalam skrip hook Anda. Untuk informasi selengkapnya, lihat Lokasi arsip penerapan.
Lokasi arsip penyebaran
Selama peristiwa DownloadBundlesiklus hidup, CodeDeploy agen mengekstrak revisi untuk penerapan ke direktori yang memiliki format berikut:
root-directory
/deployment-group-id
/deployment-id
/deployment-archive
Bagian direktori root
dari jalur selalu diatur ke default yang ditampilkan dalam tabel berikut, atau dikendalikan oleh :root_dir
pengaturan konfigurasi. Untuk informasi selengkapnya tentang pengaturan konfigurasi, lihatCodeDeploy referensi konfigurasi agen.
Platform agen | Direktori root default |
---|---|
Linux — semua distribusi rpm |
/opt/codedeploy-agent/deployment-root
|
Server Ubuntu — semua distribusi deb |
/opt/codedeploy-agent/deployment-root
|
Windows Server |
%ProgramData%\Amazon\CodeDeploy
|
Dari skrip hook Anda, Anda dapat mengakses arsip penyebaran saat ini menggunakan jalur direktori root dan variabel DEPLOYMENT_ID
dan DEPLOYMENT_GROUP_ID
lingkungan. Untuk informasi lebih lanjut tentang variabel yang dapat Anda gunakan, lihatKetersediaan variabel lingkungan untuk kait.
Misalnya, berikut adalah bagaimana Anda dapat mengakses data.json
file yang berada di root revisi Anda di Linux:
#!/bin/bash rootDirectory="/opt/codedeploy-agent/deployment-root" # note: this will be different if you # customize the :root_dir configuration dataFile="$rootDirectory/$DEPLOYMENT_GROUP_ID/$DEPLOYMENT_ID/deployment-archive/data.json" data=$(cat dataFile)
Sebagai contoh lain, berikut adalah bagaimana Anda dapat mengakses data.json
file yang berada di root revisi Anda menggunakan Powershell di Windows:
$rootDirectory="$env:ProgramData\Amazon\CodeDeploy" # note: this will be different if you # customize the :root_dir configuration $dataFile="$rootDirectory\$env:DEPLOYMENT_GROUP_ID\$env:DEPLOYMENT_ID\deployment-archive\data.json" $data=(Get-Content $dataFile)
Menggunakan jalur relatif
Untuk mereferensikan file menggunakan jalur relatifnya, Anda harus mengetahui direktori kerja CodeDeploy agen. Jalur file relatif terhadap direktori ini.
Tabel berikut menunjukkan direktori kerja untuk setiap platform CodeDeploy agen yang didukung.
Platform agen | Metode manajemen proses | Direktori kerja untuk skrip peristiwa siklus hidup |
---|---|---|
Linux — semua distribusi rpm | systemd (default) |
/
|
init.d - Pelajari lebih lanjut |
/opt/codedeploy-agent
|
|
Server Ubuntu — semua distribusi debian | all |
/opt/codedeploy-agent
|
Windows Server | tidak berlaku |
C:\Windows\System32
|
Ketersediaan variabel lingkungan untuk kait
Selama setiap peristiwa siklus hidup penerapan, skrip hook dapat mengakses variabel lingkungan berikut:
- APPLICATION_NAME
-
Nama aplikasi di dalamnya CodeDeploy adalah bagian dari penyebaran saat ini (misalnya,
WordPress_App
). - DEPLOYMENT_ID
-
ID CodeDeploy telah ditetapkan untuk penyebaran saat ini (misalnya,
d-AB1CDEF23
). - DEPLOYMENT_GROUP_NAME
-
Nama grup penyebaran di dalamnya CodeDeploy adalah bagian dari penerapan saat ini (misalnya,
WordPress_DepGroup
). - DEPLOYMENT_GROUP_ID
-
ID grup penyebaran di dalamnya CodeDeploy adalah bagian dari penerapan saat ini (misalnya,
b1a2189b-dd90-4ef5-8f40-4c1c5EXAMPLE
). - LIFECYCLE_EVENT
-
Nama peristiwa siklus hidup penerapan saat ini (misalnya,).
AfterInstall
Variabel lingkungan ini bersifat lokal untuk setiap peristiwa siklus hidup penerapan.
Ada variabel lingkungan tambahan yang tersedia untuk mengaitkan skrip tergantung pada sumber bundel penerapan:
Bundel dari Amazon S3
-
BUNDLE_BUCKET
Nama bucket Amazon S3 dari mana bundel penerapan diunduh (misalnya,).
my-s3-bucket
-
BUNDLE_KEY
Kunci objek untuk bundel yang diunduh dalam bucket Amazon S3 (misalnya,
WordPress_App.zip
). -
BUNDLE_VERSION
Versi objek untuk bundel (misalnya,
3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo
). Variabel ini hanya disetel jika bucket Amazon S3 mengaktifkan versi objek. -
BUNDLE_ETAG
Objek etag untuk bundel (misalnya,
b10a8db164e0754105b7a99be72e3fe5-4
).
Bundel dari GitHub
-
BUNDLE_COMMIT
Hash komit SHA256 dari bundel yang dihasilkan oleh Git (misalnya,
d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26
).
Skrip berikut mengubah port mendengarkan pada server HTTP Apache menjadi 9090, bukan 80 jika nilai DEPLOYMENT_GROUP_NAME sama dengan. Staging
Skrip ini harus dipanggil selama peristiwa siklus hidup BeforeInstall
penerapan:
if [ "$DEPLOYMENT_GROUP_NAME" == "Staging" ] then sed -i -e 's/Listen 80/Listen 9090/g' /etc/httpd/conf/httpd.conf fi
Contoh skrip berikut mengubah tingkat verbositas pesan yang direkam dalam log kesalahannya dari peringatan menjadi debug jika nilai variabel lingkungan DEPLOYMENT_GROUP_NAME sama dengan. Staging
Skrip ini harus dipanggil selama peristiwa siklus hidup BeforeInstall
penerapan:
if [ "$DEPLOYMENT_GROUP_NAME" == "Staging" ] then sed -i -e 's/LogLevel warn/LogLevel debug/g' /etc/httpd/conf/httpd.conf fi
Contoh skrip berikut menggantikan teks di halaman web yang ditentukan dengan teks yang menampilkan nilai variabel lingkungan ini. Skrip ini harus dipanggil selama peristiwa siklus hidup AfterInstall
penerapan:
#!/usr/bin/python import os strToSearch="<h2>This application was deployed using CodeDeploy.</h2>" strToReplace="<h2>This page for "+os.environ['APPLICATION_NAME']+" application and "+os.environ['DEPLOYMENT_GROUP_NAME']+" deployment group with "+os.environ['DEPLOYMENT_GROUP_ID']+" deployment group ID was generated by a "+os.environ['LIFECYCLE_EVENT']+" script during "+os.environ['DEPLOYMENT_ID']+" deployment.</h2>" fp=open("/var/www/html/index.html","r") buffer=fp.read() fp.close() fp=open("/var/www/html/index.html","w") fp.write(buffer.replace(strToSearch,strToReplace)) fp.close()
Contoh kait
Berikut adalah contoh entri kait yang menentukan dua kait untuk acara siklus hidup: AfterInstall
hooks: AfterInstall: - location: Scripts/RunResourceTests.sh timeout: 180 - location: Scripts/PostDeploy.sh timeout: 180
Scripts/RunResourceTests.sh
Skrip berjalan selama AfterInstall
tahap proses penyebaran. Penerapan tidak berhasil jika skrip membutuhkan waktu lebih dari 180 detik (3 menit) untuk dijalankan.
Lokasi skrip yang Anda tentukan di bagian 'kait' relatif terhadap root bundel revisi aplikasi. Dalam contoh sebelumnya, sebuah file bernama RunResourceTests.sh
dalam direktori bernama. Scripts
Scripts
Direktori berada di tingkat root bundel. Untuk informasi selengkapnya, lihat Rencanakan revisi untuk CodeDeploy.