AppSpec Contoh file - AWS CodeDeploy

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

AppSpec Contoh file untuk penyebaran Amazon ECS

Berikut adalah contoh AppSpec file yang ditulis dalam YAMAL untuk menerapkan layanan Amazon ECS.

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:

  1. Sebelum aplikasi Amazon ECS yang diperbarui diinstal pada set tugas pengganti, fungsi LambdaFunctionToValidateBeforeInstall Lambda disebut berjalan.

  2. Setelah aplikasi Amazon ECS yang diperbarui diinstal pada set tugas pengganti, tetapi sebelum menerima lalu lintas apa pun, fungsi LambdaFunctionToValidateAfterInstall Lambda disebut berjalan.

  3. Setelah aplikasi Amazon ECS pada set tugas pengganti mulai menerima lalu lintas dari pendengar pengujian, fungsi Lambda yang disebut berjalan. LambdaFunctionToValidateAfterTestTrafficStarts 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.

  4. Setelah tes validasi apa pun di AfterAllowTestTraffic hook selesai, dan sebelum lalu lintas produksi disajikan ke aplikasi Amazon ECS yang diperbarui, fungsi Lambda disebut berjalan. LambdaFunctionToValidateBeforeAllowingProductionTraffic

  5. Setelah lalu lintas produksi disajikan ke aplikasi Amazon ECS yang diperbarui pada set tugas pengganti, fungsi LambdaFunctionToValidateAfterAllowingProductionTraffic Lambda disebut 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 dalam YAMAL untuk menerapkan 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:

  1. Sebelum mengalihkan lalu lintas dari versi 1 dari fungsi Lambda yang myLambdaFunction dipanggil ke versi 2, jalankan fungsi Lambda yang LambdaFunctionToValidateBeforeTrafficShift disebut yang memvalidasi penerapan siap untuk memulai pergeseran lalu lintas.

  2. Jika LambdaFunctionToValidateBeforeTrafficShift mengembalikan kode keluar 0 (sukses), mulailah mengalihkan lalu lintas ke versi 2. myLambdaFunction Konfigurasi penyebaran untuk penyebaran ini menentukan tingkat di mana lalu lintas digeser.

  3. Setelah pergeseran lalu lintas dari versi 1 dari fungsi Lambda yang myLambdaFunction dipanggil ke versi 2 selesai, jalankan fungsi Lambda yang LambdaFunctionToValidateAfterTrafficShift disebut yang memvalidasi penerapan berhasil diselesaikan.

AppSpec Contoh berkas untuk penerapan EC2/On-premise

Berikut adalah contoh AppSpec file untuk penyebaran di tempat ke Amazon Linux, Ubuntu Server, atau instance RHEL.

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:

  1. Jalankan skrip yang terletak diScripts/UnzipResourceBundle.sh.

  2. Jika skrip sebelumnya mengembalikan kode keluar 0 (sukses), jalankan skrip yang terletak diScripts/UnzipDataBundle.sh.

  3. Salin file dari jalur Config/config.txt ke jalur/webapps/Config/config.txt.

  4. Salin semua file dalam direktori secara rekursif ke source /webapps/myApp direktori.

  5. Jalankan skrip yang terletak di Scripts/RunResourceTests.sh dengan batas waktu 180 detik (3 menit).

  6. Jalankan skrip yang terletak di Scripts/RunFunctionalTests.sh dengan batas waktu 3600 detik (1 jam).

  7. Jalankan skrip yang terletak di Scripts/MonitorService.sh sebagai pengguna codedeploy dengan batas waktu 3600 detik (1 jam).