Añadir un archivo de especificaciones de la aplicación a una revisión de CodeDeploy - AWS CodeDeploy

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Añadir un archivo de especificaciones de la aplicación a una revisión de CodeDeploy

En este tema se muestra cómo añadir un AppSpec archivo a la implementación. También incluye plantillas para crear un AppSpec archivo para una implementación de AWS Lambda y EC2/on-premise.

Añadir un AppSpec archivo para una implementación de Amazon ECS

Para una implementación en una plataforma de informática de Amazon ECS:

  • El AppSpec archivo especifica la definición de tareas de Amazon ECS utilizada para la implementación, el nombre del contenedor y la asignación de puertos que se utilizan para enrutar el tráfico, y las funciones Lambda opcionales que se ejecutan después de los eventos del ciclo de vida de la implementación.

  • Una revisión es lo mismo que un AppSpec archivo.

  • Un AppSpec archivo se puede escribir con JSON o YAML.

  • Un AppSpec archivo puede guardarse como archivo de texto o introducirse directamente en una consola al crear una implementación. Para obtener más información, consulte Creación de una implementación en una plataforma de informática de Amazon ECS (consola).

Para crear un AppSpec archivo

  1. Copia la plantilla JSON o YAML en un editor de texto o en el AppSpec editor de la consola.

  2. Modifique la plantilla como sea necesario.

  3. Usa un validador de JSON o YAML para validar tu archivo. AppSpec Si utilizas el AppSpec editor, el archivo se valida al elegir Crear despliegue.

  4. Si utiliza un editor de texto, guarde el archivo. Si utilizas el AWS CLI para crear tu implementación, consulta el AppSpec archivo si está en tu disco duro o en un bucket de Amazon S3. Si usa la consola, debe enviar el AppSpec archivo a Amazon S3.

Plantilla de AppSpec archivo YAML para una implementación de Amazon ECS con instrucciones

La siguiente es una plantilla YAML de un AppSpec archivo para una implementación de Amazon ECS con todas las opciones disponibles. Para obtener más información acerca de los eventos del ciclo de vida que se deben utilizar en la sección hooks, consulte AppSpec sección «ganchos» para una implementación de Amazon ECS.

# This is an appspec.yml template file for use with an Amazon ECS deployment in CodeDeploy. # The lines in this template that start with the hashtag are # comments that can be safely left in the file or # ignored. # For help completing this file, see the "AppSpec File Reference" in the # "CodeDeploy User Guide" at # https://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.html version: 0.0 # In the Resources section, you must specify the following: the Amazon ECS service, task definition name, # and the name and port of the load balancer to route traffic, # target version, and (optional) the current version of your AWS Lambda function. Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: "" # Specify the ARN of your task definition (arn:aws:ecs:region:account-id:task-definition/task-definition-family-name:task-definition-revision-number) LoadBalancerInfo: ContainerName: "" # Specify the name of your Amazon ECS application's container ContainerPort: "" # Specify the port for your container where traffic reroutes # Optional properties PlatformVersion: "" # Specify the version of your Amazon ECS Service NetworkConfiguration: AwsvpcConfiguration: Subnets: ["",""] # Specify one or more comma-separated subnets in your Amazon ECS service SecurityGroups: ["",""] # Specify one or more comma-separated security groups in your Amazon ECS service AssignPublicIp: "" # Specify "ENABLED" or "DISABLED" # (Optional) In the Hooks section, specify a validation Lambda function to run during # a lifecycle event. Hooks: # Hooks for Amazon ECS deployments are: - BeforeInstall: "" # Specify a Lambda function name or ARN - AfterInstall: "" # Specify a Lambda function name or ARN - AfterAllowTestTraffic: "" # Specify a Lambda function name or ARN - BeforeAllowTraffic: "" # Specify a Lambda function name or ARN - AfterAllowTraffic: "" # Specify a Lambda function name or ARN

AppSpec Archivo JSON para una plantilla de despliegue de Amazon ECS

La siguiente es una plantilla JSON para un AppSpec archivo para una implementación de Amazon ECS con todas las opciones disponibles. Para ver las instrucciones de plantilla, consulte los comentarios de la versión YAML en la sección anterior. Para obtener más información acerca de los eventos del ciclo de vida que se deben utilizar en la sección hooks, consulte AppSpec sección «ganchos» para una implementación de Amazon ECS.

{ "version": 0.0, "Resources": [ { "TargetService": { "Type": "AWS::ECS::Service", "Properties": { "TaskDefinition": "", "LoadBalancerInfo": { "ContainerName": "", "ContainerPort": }, "PlatformVersion": "", "NetworkConfiguration": { "AwsvpcConfiguration": { "Subnets": [ "", "" ], "SecurityGroups": [ "", "" ], "AssignPublicIp": "" } } } } } ], "Hooks": [ { "BeforeInstall": "" }, { "AfterInstall": "" }, { "AfterAllowTestTraffic": "" }, { "BeforeAllowTraffic": "" }, { "AfterAllowTraffic": "" } ] }

Agregar un AppSpec archivo para una implementación de AWS Lambda

Para una implementación en una plataforma de procesamiento AWS Lambda:

  • El AppSpec archivo contiene instrucciones sobre las funciones Lambda que se van a implementar y utilizar para la validación de la implementación.

  • Una revisión es lo mismo que un AppSpec archivo.

  • Un AppSpec archivo se puede escribir con JSON o YAML.

  • Un AppSpec archivo puede guardarse como archivo de texto o introducirse directamente en un AppSpec editor de consola al crear una implementación. Para obtener más información, consulte Creación de una implementación en la plataforma de informática de AWS Lambda (consola).

Para crear un AppSpec archivo:

  1. Copia la plantilla JSON o YAML en un editor de texto o en el AppSpec editor de la consola.

  2. Modifique la plantilla como sea necesario.

  3. Usa un validador de JSON o YAML para validar tu archivo. AppSpec Si utilizas el AppSpec editor, el archivo se valida al elegir Crear despliegue.

  4. Si utiliza un editor de texto, guarde el archivo. Si utilizas el AWS CLI para crear tu implementación, consulta el AppSpec archivo si está en tu disco duro o en un bucket de Amazon S3. Si usa la consola, debe enviar el AppSpec archivo a Amazon S3.

Plantilla de AppSpec archivo YAML para una AWS Lambda implementación con instrucciones

Para obtener más información acerca de los eventos del ciclo de vida que se deben utilizar en la sección de enlaces, consulte AppSpec sección de «ganchos» para una implementación de AWS Lambda.

# This is an appspec.yml template file for use with an AWS Lambda deployment in CodeDeploy. # The lines in this template starting with the hashtag symbol are # instructional comments and can be safely left in the file or # ignored. # For help completing this file, see the "AppSpec File Reference" in the # "CodeDeploy User Guide" at # https://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.html version: 0.0 # In the Resources section specify the name, alias, # target version, and (optional) the current version of your AWS Lambda function. Resources: - MyFunction: # Replace "MyFunction" with the name of your Lambda function Type: AWS::Lambda::Function Properties: Name: "" # Specify the name of your Lambda function Alias: "" # Specify the alias for your Lambda function CurrentVersion: "" # Specify the current version of your Lambda function TargetVersion: "" # Specify the version of your Lambda function to deploy # (Optional) In the Hooks section, specify a validation Lambda function to run during # a lifecycle event. Replace "LifeCycleEvent" with BeforeAllowTraffic # or AfterAllowTraffic. Hooks: - LifeCycleEvent: "" # Specify a Lambda validation function between double-quotes.

AppSpec Archivo JSON para una plantilla de AWS Lambda despliegue

En la siguiente plantilla, sustituya MyFunction "» por el nombre de la AWS Lambda función. En la sección Hooks opcional, sustituye los eventos del ciclo de vida por BeforeAllowTraffic o AfterAllowTraffic.

Para obtener más información acerca de los eventos del ciclo de vida que se deben utilizar en la sección Hooks, consulte AppSpec sección de «ganchos» para una implementación de AWS Lambda.

{ "version": 0.0, "Resources": [{ "MyFunction": { "Type": "AWS::Lambda::Function", "Properties": { "Name": "", "Alias": "", "CurrentVersion": "", "TargetVersion": "" } } }], "Hooks": [{ "LifeCycleEvent": "" } ] }

Agregue un AppSpec archivo para una implementación local de EC2/

Sin un AppSpec archivo, CodeDeploy no puede asignar los archivos de origen de la revisión de la aplicación a sus destinos ni ejecutar scripts para su implementación en una plataforma informática local de EC2/.

Cada revisión debe contener solo un archivo. AppSpec

Para añadir un AppSpec archivo a una revisión:

  1. Copie la plantilla en un editor de texto.

  2. Modifique la plantilla como sea necesario.

  3. Usa un validador de YAML para comprobar la validez del archivo. AppSpec

  4. Guarde el archivo como appspec.yml en el directorio raíz de la revisión.

  5. Ejecute uno de los siguientes comandos para comprobar que ha colocado el AppSpec archivo en el directorio raíz:

    • Para Linux, macOS o Unix:

      find /path/to/root/directory -name appspec.yml

      No habrá ningún resultado si el AppSpec archivo no se encuentra allí.

    • Para Windows:

      dir path\to\root\directory\appspec.yml

      Si el archivo no está almacenado allí, aparecerá el mensaje de error AppSpec Archivo no encontrado.

  6. Envíe la revisión a Amazon S3 o GitHub.

    Para ver instrucciones, consulte Enviar una revisión CodeDeploy a Amazon S3 (solo para implementaciones de EC2/on-premise).

AppSpec plantilla de archivo para una implementación local de EC2/con instrucciones

nota

Las implementaciones en instancias de Windows Server no admiten el elemento runas. Si va a realizar la implementación en instancias de Windows Server, no la incluya en el archivo. AppSpec

# This is an appspec.yml template file for use with an EC2/On-Premises deployment in CodeDeploy. # The lines in this template starting with the hashtag symbol are # instructional comments and can be safely left in the file or # ignored. # For help completing this file, see the "AppSpec File Reference" in the # "CodeDeploy User Guide" at # https://docs.aws.amazon.com/codedeploy/latest/userguide/app-spec-ref.html version: 0.0 # Specify "os: linux" if this revision targets Amazon Linux, # Red Hat Enterprise Linux (RHEL), or Ubuntu Server # instances. # Specify "os: windows" if this revision targets Windows Server instances. # (You cannot specify both "os: linux" and "os: windows".) os: linux # os: windows # During the Install deployment lifecycle event (which occurs between the # BeforeInstall and AfterInstall events), copy the specified files # in "source" starting from the root of the revision's file bundle # to "destination" on the Amazon EC2 instance. # Specify multiple "source" and "destination" pairs if you want to copy # from multiple sources or to multiple destinations. # If you are not copying any files to the Amazon EC2 instance, then remove the # "files" section altogether. A blank or incomplete "files" section # may cause associated deployments to fail. files: - source: destination: - source: destination: # For deployments to Amazon Linux, Ubuntu Server, or RHEL instances, # you can specify a "permissions" # section here that describes special permissions to apply to the files # in the "files" section as they are being copied over to # the Amazon EC2 instance. # For more information, see the documentation. # If you are deploying to Windows Server instances, # then remove the # "permissions" section altogether. A blank or incomplete "permissions" # section may cause associated deployments to fail. permissions: - object: pattern: except: owner: group: mode: acls: - context: user: type: range: type: - # If you are not running any commands on the Amazon EC2 instance, then remove # the "hooks" section altogether. A blank or incomplete "hooks" section # may cause associated deployments to fail. hooks: # For each deployment lifecycle event, specify multiple "location" entries # if you want to run multiple scripts during that event. # You can specify "timeout" as the number of seconds to wait until failing the deployment # if the specified scripts do not run within the specified time limit for the # specified event. For example, 900 seconds is 15 minutes. If not specified, # the default is 1800 seconds (30 minutes). # Note that the maximum amount of time that all scripts must finish executing # for each individual deployment lifecycle event is 3600 seconds (1 hour). # Otherwise, the deployment will stop and CodeDeploy will consider the deployment # to have failed to the Amazon EC2 instance. Make sure that the total number of seconds # that are specified in "timeout" for all scripts in each individual deployment # lifecycle event does not exceed a combined 3600 seconds (1 hour). # For deployments to Amazon Linux, Ubuntu Server, or RHEL instances, # you can specify "runas" in an event to # run as the specified user. For more information, see the documentation. # If you are deploying to Windows Server instances, # remove "runas" altogether. # If you do not want to run any commands during a particular deployment # lifecycle event, remove that event declaration altogether. Blank or # incomplete event declarations may cause associated deployments to fail. # During the ApplicationStop deployment lifecycle event, run the commands # in the script specified in "location" starting from the root of the # revision's file bundle. ApplicationStop: - location: timeout: runas: - location: timeout: runas: # During the BeforeInstall deployment lifecycle event, run the commands # in the script specified in "location". BeforeInstall: - location: timeout: runas: - location: timeout: runas: # During the AfterInstall deployment lifecycle event, run the commands # in the script specified in "location". AfterInstall: - location: timeout: runas: - location: timeout: runas: # During the ApplicationStart deployment lifecycle event, run the commands # in the script specified in "location". ApplicationStart: - location: timeout: runas: - location: timeout: runas: # During the ValidateService deployment lifecycle event, run the commands # in the script specified in "location". ValidateService: - location: timeout: runas: - location: timeout: runas: