

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.

# Atributos
<a name="workingcookbook-installingcustom-components-attributes"></a>

**importante**  
El AWS OpsWorks Stacks servicio llegó al final de su vida útil el 26 de mayo de 2024 y se ha desactivado tanto para los clientes nuevos como para los actuales. Recomendamos encarecidamente a los clientes que migren sus cargas de trabajo a otras soluciones lo antes posible. Si tienes preguntas sobre la migración, ponte en contacto con el AWS Support equipo en [AWS Re:post](https://repost.aws/) o a través de Premium [AWS Support](https://aws.amazon.com/support).

Las recetas y las plantillas dependen de una serie de valores, como las opciones de configuración. En lugar de escribir directamente los valores en las recetas o plantillas, puede crear un archivo de atributo con un atributo que represente cada valor. A continuación, utilice los atributos de las recetas o plantillas en lugar de los valores explícitos. La ventaja de la utilización de atributos es que puede anular sus valores sin tocar el libro de recetas. Por este motivo, debe utilizar siempre atributos para definir los siguientes tipos de valores:
+ Hay valores, como los nombres de los usuarios, que pueden variar de pila para pila o con el tiempo.

  Si incluye estos valores, deberá realizar cambios en la receta o plantilla cada vez que necesite modificar un valor. Al utilizar atributos para definir estos valores, puede emplear los mismos libros de recetas en cada pila y simplemente reemplazar los atributos adecuados.
+ Valores confidenciales, como contraseñas o claves secretas.

  Incluir valores confidenciales explícitos en el libro de recetas puede aumentar el riesgo de exposición. En su lugar, defina atributos con valores ficticios y anúlelos para definir los valores reales. La mejor manera de anular estos atributos es con un JSON personalizado. Para obtener más información, consulte [Uso de un JSON personalizado](workingcookbook-json-override.md).

Para obtener más información sobre atributos y cómo anularlos, consulte [Anulación de atributos](workingcookbook-attributes.md). 

El siguiente ejemplo es una fragmento de un archivo de atributos de ejemplo.

```
...
default["apache"]["listen_ports"] = [ '80','443' ]
default["apache"]["contact"] = 'ops@example.com'
default["apache"]["timeout"] = 120
default["apache"]["keepalive"] = 'Off'
default["apache"]["keepaliverequests"] = 100
default["apache"]["keepalivetimeout"] = 3
default["apache"]["prefork"]["startservers"] = 16
default["apache"]["prefork"]["minspareservers"] = 16
default["apache"]["prefork"]["maxspareservers"] = 32
default["apache"]["prefork"]["serverlimit"] = 400
default["apache"]["prefork"]["maxclients"] = 400
default["apache"]["prefork"]["maxrequestsperchild"] = 10000
...
```

 OpsWorks Stacks define los atributos mediante la siguiente sintaxis:

```
node.type["attribute"]["subattribute"]["..."]=value
```

También puede utilizar los dos puntos (:) así:

```
node.type[:attribute][:subattribute][:...]=value
```

Una definición de atributo incluye los siguientes componentes:

## `node.`
<a name="node"></a>

El prefijo `node.` es opcional y suele omitirse tal y como se muestra en el ejemplo.

## `type`
<a name="type"></a>

El tipo determina si el atributo se puede anular. OpsWorks Los atributos de las pilas suelen utilizar uno de los siguientes tipos:
+ `default` es el más utilizado, ya que permite anular el atributo.
+ `normal`define un atributo que anula uno de los valores de atributo estándar de OpsWorks Stacks.

**nota**  
Chef admite tipos adicionales, que no son necesarios para OpsWorks Stacks, pero que pueden ser útiles para tu proyecto. Para obtener más información, consulte [Acerca de los atributos](http://docs.chef.io/attributes.html).

## `attribute name`
<a name="attribute-name"></a>

El nombre del atributo utiliza la sintaxis de nodo estándar de Chef, `[:attribute][:subattribute][...]`. Puede dar cualquier nombre a los atributos. Sin embargo, como ya se ha hablado en [Anulación de atributos](workingcookbook-attributes.md), los atributos de los libros de recetas personalizados se combinan en el objeto de nodo de la instancia, junto a los atributos de configuración e implementación de la pila, y la [herramienta Ohai](https://docs.chef.io/ohai.html) de Chef. Los nombres de configuración usados con frecuencia, como *port* o *user*, podrían aparecer en varios libros de recetas.

Tal y como se muestra en el ejemplo, para evitar conflictos, la norma es crear nombres de atributos completos con, como mínimo, dos elementos. El primer elemento debe ser único y suele hacer referencia al nombre del producto, como *Apache*. Lo siguen uno o varios subatributos que identifican el valor concreto, como `[:user]` o `[:port]`. En el proyecto, puede utilizar tantos subatributos como sea necesario.

## `value`
<a name="value"></a>

Un atributo puede establecerse en los siguientes tipos de valores:
+ Una cadena, como `default[:apache][:keepalive] = 'Off'`.
+ Un número (sin comillas), como `default[:apache][:timeout] = 120`.
+ Un valor booleano, que puede ser `true` o `false` (sin comillas).
+ Una lista de valores, como `default[:apache][:listen_ports] = [ '80','443' ]`.

El archivo de atributos es una aplicación de Ruby, por lo que también puede utilizar la sintaxis de nodo y operadores lógicos para asignar valores en función de otros atributos. Para obtener más información sobre cómo definir atributos, consulte [Acerca de los atributos](https://docs.chef.io/chef_overview_attributes.html). [Para ver ejemplos de archivos de atributos funcionales, consulta los libros de cocina integrados de OpsWorks Stacks en opsworks-cookbooks. https://github.com/aws/](https://github.com/aws/opsworks-cookbooks)