AppSpec Bagian 'kait' - AWS CodeDeploy

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.

AppSpec Bagian 'kait' untuk penerapan Amazon ECS

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.
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 AfterInstallAfterAllowTestTraffic,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

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.
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

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 menggunakan ApplicationStop 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. deployment-group-id_last_successful_install File ini terletak di:

    /opt/codedeploy-agent/deployment-root/deployment-instructionsfolder di Amazon Linux, Server Ubuntu, dan instans RHEL Amazon EC2.

    C:\ProgramData\Amazon\CodeDeploy\deployment-instructionsfolder 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/deployment-group-id/deployment-id/deployment-archivefolder di Amazon Linux, Server Ubuntu, dan instans RHEL Amazon EC2.

    C:\ProgramData\Amazon\CodeDeploy\deployment-group-id\deployment-id\deployment-archivefolder pada instans Windows Server Amazon EC2.

    Acara 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.
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.
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.
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.
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

Menggunakan jalur absolut

Untuk mereferensikan file menggunakan jalur absolutnya, Anda dapat:

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.shSkrip 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 ScriptsDirektori berada di tingkat root bundel. Untuk informasi selengkapnya, lihat Rencanakan revisi untuk CodeDeploy.