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

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:

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

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

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

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

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

  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 dari. 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 /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:

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