Adición de un archivo de especificación de aplicación a una revisión para 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.

Adición de un archivo de especificación de aplicación a una revisión para CodeDeploy

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

Adición de un archivo AppSpec para una implementación de Amazon ECS

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

  • El archivo AppSpec especifica la definición de tareas de Amazon ECS utilizada para la implementación, un nombre de contenedor y el mapeo de puertos utilizado para dirigir el tráfico y funciones Lambda opcionales ejecutadas después de los eventos de ciclo de vida de implementación.

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

  • Se puede escribir un archivo AppSpec utilizando JSON o YAML.

  • Un archivo AppSpec se puede guardar como un archivo de texto o introducir directamente 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 archivo AppSpec

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

  2. Modifique la plantilla como sea necesario.

  3. Utilice un validador de JSON o YAML para validar el archivo AppSpec. Si utiliza el editor de AppSpec, el archivo se valida al elegir Crear implementación.

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

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

A continuación se muestra una plantilla YAML de un archivo AppSpec 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

Archivo AppSpec JSON para una plantilla de implementación de Amazon ECS

A continuación se muestra una plantilla JSON de un archivo AppSpec 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": "" } ] }

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

Para una implementación en una plataforma de informática AWS Lambda:

  • El archivo AppSpec contiene instrucciones acerca de cómo se deben implementar y utilizar las funciones Lambda para la validación de la implementación.

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

  • Se puede escribir un archivo AppSpec utilizando JSON o YAML.

  • Un archivo AppSpec se puede guardar como un archivo de texto o introducir directamente en un editor de AppSpec de la 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 archivo AppSpec:

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

  2. Modifique la plantilla como sea necesario.

  3. Utilice un validador de JSON o YAML para validar el archivo AppSpec. Si utiliza el editor de AppSpec, el archivo se valida al elegir Crear implementación.

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

Plantilla YAML del archivo AppSpec para una implementación de AWS Lambda 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.

Archivo AppSpec JSON para una plantilla de implementación de AWS Lambda

En la siguiente plantilla, sustituya “MyFunction” por el nombre de la función de AWS Lambda. En la sección Hooks opcional, sustituya 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": "" } ] }

Adición de un archivo AppSpec para una implementación de EC2/en las instalaciones

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

Cada revisión debe contener un único archivo AppSpec.

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

  1. Copie la plantilla en un editor de texto.

  2. Modifique la plantilla como sea necesario.

  3. Utilice un validador 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 comandos siguientes para comprobar que ha situado el archivo AppSpec en el directorio raíz:

    • Para Linux, macOS o Unix:

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

      Si no se encuentra el archivo AppSpec, no devuelve ninguna salida.

    • Para Windows:

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

      Si el archivo AppSpec no se almacena allí, se mostrará el error File Not Found.

  6. Almacene la revisión en Amazon S3 o GitHub.

    Para obtener instrucciones, consulte Enviar una revisión CodeDeploy a Amazon S3 (EC2/Solo implementaciones locales).

Plantilla del archivo AppSpec para una implementación de EC2/en las instalaciones con instrucciones

nota

Las implementaciones en instancias de Windows Server no admiten el elemento runas. Si va a implementar en instancias de Windows Server, no lo 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: