Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AppSpec Contoh file
Topik ini menyediakan contoh AppSpec file untuk AWS Lambda dan penerapan EC2 /On-Premises.
Topik
AppSpec Contoh file untuk ECS penyebaran Amazon
Berikut adalah contoh AppSpec file yang ditulis YAML untuk menyebarkan ECS layanan Amazon.
version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: "arn:aws:ecs:us-east-1:111222333444:task-definition/my-task-definition-family-name:1" LoadBalancerInfo: ContainerName: "SampleApplicationName" ContainerPort: 80 # Optional properties PlatformVersion: "LATEST" NetworkConfiguration: AwsvpcConfiguration: Subnets: ["subnet-1234abcd","subnet-5678abcd"] SecurityGroups: ["sg-12345678"] AssignPublicIp: "ENABLED" CapacityProviderStrategy: - Base: 1 CapacityProvider: "FARGATE_SPOT" Weight: 2 - Base: 0 CapacityProvider: "FARGATE" Weight: 1 Hooks: - BeforeInstall: "LambdaFunctionToValidateBeforeInstall" - AfterInstall: "LambdaFunctionToValidateAfterInstall" - AfterAllowTestTraffic: "LambdaFunctionToValidateAfterTestTrafficStarts" - BeforeAllowTraffic: "LambdaFunctionToValidateBeforeAllowingProductionTraffic" - AfterAllowTraffic: "LambdaFunctionToValidateAfterAllowingProductionTraffic"
Berikut adalah versi dari contoh sebelumnya yang ditulis dalam. JSON
{ "version": 0.0, "Resources": [ { "TargetService": { "Type": "AWS::ECS::Service", "Properties": { "TaskDefinition": "arn:aws:ecs:us-east-1:111222333444:task-definition/my-task-definition-family-name:1", "LoadBalancerInfo": { "ContainerName": "SampleApplicationName", "ContainerPort": 80 }, "PlatformVersion": "LATEST", "NetworkConfiguration": { "AwsvpcConfiguration": { "Subnets": [ "subnet-1234abcd", "subnet-5678abcd" ], "SecurityGroups": [ "sg-12345678" ], "AssignPublicIp": "ENABLED" } }, "CapacityProviderStrategy": [ { "Base" : 1, "CapacityProvider" : "FARGATE_SPOT", "Weight" : 2 }, { "Base" : 0, "CapacityProvider" : "FARGATE", "Weight" : 1 } ] } } } ], "Hooks": [ { "BeforeInstall": "LambdaFunctionToValidateBeforeInstall" }, { "AfterInstall": "LambdaFunctionToValidateAfterInstall" }, { "AfterAllowTestTraffic": "LambdaFunctionToValidateAfterTestTrafficStarts" }, { "BeforeAllowTraffic": "LambdaFunctionToValidateBeforeAllowingProductionTraffic" }, { "AfterAllowTraffic": "LambdaFunctionToValidateAfterAllowingProductionTraffic" } ] }
Berikut adalah urutan peristiwa selama penerapan:
-
Sebelum ECS aplikasi Amazon yang diperbarui diinstal pada set tugas pengganti, fungsi Lambda yang disebut
LambdaFunctionToValidateBeforeInstall
berjalan. -
Setelah ECS aplikasi Amazon yang diperbarui diinstal pada set tugas pengganti, tetapi sebelum menerima lalu lintas apa pun, fungsi Lambda disebut
LambdaFunctionToValidateAfterInstall
berjalan. -
Setelah ECS aplikasi Amazon pada set tugas pengganti mulai menerima lalu lintas dari pendengar pengujian, fungsi
LambdaFunctionToValidateAfterTestTrafficStarts
Lambda yang disebut berjalan. Fungsi ini kemungkinan menjalankan tes validasi untuk menentukan apakah penerapan berlanjut. Jika Anda tidak menentukan listener pengujian dalam grup penerapan Anda, hook ini akan diabaikan. -
Setelah tes validasi apa pun di
AfterAllowTestTraffic
hook selesai, dan sebelum lalu lintas produksi disajikan ke ECS aplikasi Amazon yang diperbarui, fungsiLambdaFunctionToValidateBeforeAllowingProductionTraffic
Lambda disebut berjalan. -
Setelah lalu lintas produksi disajikan ke ECS aplikasi Amazon yang diperbarui pada set tugas pengganti, fungsi Lambda disebut
LambdaFunctionToValidateAfterAllowingProductionTraffic
berjalan.
Fungsi Lambda yang berjalan selama hook apa pun dapat melakukan tes validasi atau mengumpulkan metrik lalu lintas.
AppSpec Contoh file untuk penerapan AWS Lambda
Berikut adalah contoh AppSpec file yang ditulis YAML untuk menyebarkan versi fungsi Lambda.
version: 0.0 Resources: - myLambdaFunction: Type: AWS::Lambda::Function Properties: Name: "myLambdaFunction" Alias: "myLambdaFunctionAlias" CurrentVersion: "1" TargetVersion: "2" Hooks: - BeforeAllowTraffic: "LambdaFunctionToValidateBeforeTrafficShift" - AfterAllowTraffic: "LambdaFunctionToValidateAfterTrafficShift"
Berikut adalah versi dari contoh sebelumnya yang ditulis dalam. JSON
{ "version": 0.0, "Resources": [{ "myLambdaFunction": { "Type": "AWS::Lambda::Function", "Properties": { "Name": "myLambdaFunction", "Alias": "myLambdaFunctionAlias", "CurrentVersion": "1", "TargetVersion": "2" } } }], "Hooks": [{ "BeforeAllowTraffic": "LambdaFunctionToValidateBeforeTrafficShift" }, { "AfterAllowTraffic": "LambdaFunctionToValidateAfterTrafficShift" } ] }
Berikut adalah urutan peristiwa selama penerapan:
-
Sebelum mengalihkan lalu lintas dari versi 1 dari fungsi Lambda yang
myLambdaFunction
dipanggil ke versi 2, jalankan fungsi Lambda yangLambdaFunctionToValidateBeforeTrafficShift
disebut yang memvalidasi penerapan siap untuk memulai pergeseran lalu lintas. -
Jika
LambdaFunctionToValidateBeforeTrafficShift
mengembalikan kode keluar 0 (sukses), mulailah mengalihkan lalu lintas ke versi 2 dari.myLambdaFunction
Konfigurasi penyebaran untuk penyebaran ini menentukan tingkat di mana lalu lintas digeser. -
Setelah pergeseran lalu lintas dari versi 1 dari fungsi Lambda yang
myLambdaFunction
dipanggil ke versi 2 selesai, jalankan fungsi Lambda yangLambdaFunctionToValidateAfterTrafficShift
disebut yang memvalidasi penerapan berhasil diselesaikan.
AppSpec Contoh berkas untuk penerapan EC2 /Lokal
Berikut adalah contoh AppSpec file untuk penyebaran di tempat ke Amazon Linux, Ubuntu Server, atau RHEL instance.
catatan
Penerapan ke instance Windows Server tidak mendukung elemen. runas
Jika Anda menyebarkan ke instance Windows Server, jangan sertakan dalam file Anda AppSpec .
version: 0.0 os: linux files: - source: Config/config.txt destination: /webapps/Config - source: source destination: /webapps/myApp hooks: BeforeInstall: - location: Scripts/UnzipResourceBundle.sh - location: Scripts/UnzipDataBundle.sh AfterInstall: - location: Scripts/RunResourceTests.sh timeout: 180 ApplicationStart: - location: Scripts/RunFunctionalTests.sh timeout: 3600 ValidateService: - location: Scripts/MonitorService.sh timeout: 3600 runas: codedeployuser
Untuk instance Windows Server, ubah os: linux
keos: windows
. Juga, Anda harus sepenuhnya memenuhi syarat destination
jalur (misalnya, c:\temp\webapps\Config
danc:\temp\webapps\myApp
). Jangan sertakan runas
elemen.
Berikut adalah urutan peristiwa selama penerapan:
-
Jalankan skrip yang terletak di
Scripts/UnzipResourceBundle.sh
. -
Jika skrip sebelumnya mengembalikan kode keluar 0 (sukses), jalankan skrip yang terletak di
Scripts/UnzipDataBundle.sh
. -
Salin file dari jalur
Config/config.txt
ke jalur/webapps/Config/config.txt
. -
Salin semua file dalam direktori secara rekursif ke
source
/webapps/myApp
direktori. -
Jalankan skrip yang terletak di
Scripts/RunResourceTests.sh
dengan batas waktu 180 detik (3 menit). -
Jalankan skrip yang terletak di
Scripts/RunFunctionalTests.sh
dengan batas waktu 3600 detik (1 jam). -
Jalankan skrip yang terletak di
Scripts/MonitorService.sh
sebagai penggunacodedeploy
dengan batas waktu 3600 detik (1 jam).