

# Uso de parámetros para especificar valores de módulo
<a name="module-using-params"></a>

En CloudFormation, puede usar plantillas de parámetros para personalizar las pilas al proporcionar valores de entrada durante la creación o actualización de la pila. Estos parámetros le permiten cambiar ciertos aspectos de la pila en función de sus necesidades. Para obtener más información sobre cómo definir parámetros de plantilla, consulte [Sintaxis de Parameters de la plantilla de CloudFormation](parameters-section-structure.md).

Del mismo modo, los módulos también pueden tener parámetros. Estos parámetros del módulo le permiten introducir valores personalizados en el módulo desde la plantilla (u otro módulo) que lo está utilizando. A continuación, el módulo puede utilizar estos valores personalizados para establecer los valores de propiedades de los recursos que contiene.

También puede definir parámetros de plantilla que establecen las propiedades del módulo, de modo que puedes introducir valores que se pasan al módulo en el momento de la operación de pila. 

Si un módulo contiene un módulo anidado que tiene sus propios parámetros del módulo, puede:
+ Especificar los valores de los parámetros del módulo anidado directamente en el módulo principal.
+ Definir los parámetros correspondientes del módulo en el módulo principal que permitan que los parámetros del módulo anidado sean establecidos por la plantilla (o módulo) en la que está contenido el módulo principal.

## Uso de parámetros de plantilla para especificar valores de parámetros del módulo
<a name="module-using-params-example-1"></a>

El siguiente ejemplo muestra cómo definir parámetros de plantilla que pasan valores a un módulo.

Esta plantilla que contiene `My::S3::SampleBucket::MODULE` define un parámetro de plantilla `BucketName`, que permite al usuario especificar un nombre de bucket de S3 durante la operación de pila.

```
# Template containing My::S3::SampleBucket::MODULE
Parameters:
  BucketName:
    Description: Name for your sample bucket
    Type: String
Resources:
  MyBucket:
    Type: 'My::S3::SampleBucket::MODULE'
    Properties:
      BucketName: !Ref BucketName
```

## Especificación de propiedades en recursos de un módulo secundario desde el módulo principal
<a name="module-using-params-example-2"></a>

El ejemplo siguiente ilustra cómo especificar valores de parámetro en un módulo anidado dentro de otro módulo.

Este primer módulo, `My::S3::SampleBucketPrivate::MODULE`, será el módulo secundario. Define dos parámetros: `BucketName` y `AccessControl`. Los valores especificados para estos parámetros se utilizan para especificar las propiedades `BucketName` y `AccessControl` del recurso `AWS::S3::Bucket` que contiene el módulo. A continuación se muestra el fragmento de plantilla para `My::S3::SampleBucketPrivate::MODULE`.

```
# My::S3::SampleBucketPrivate::MODULE
AWSTemplateFormatVersion: 2010-09-09
Description: A sample S3 Bucket with Versioning and DeletionPolicy.
Parameters:
  BucketName:
    Description: Name for the bucket
    Type: String
  AccessControl:
    Description: AccessControl for the bucket
    Type: String
Resources:
  S3Bucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Ref BucketName
      AccessControl: !Ref AccessControl
      DeletionPolicy: Retain
      VersioningConfiguration:
        Status: Enabled
```

A continuación, el módulo anterior se anida dentro de un módulo principal, `My::S3::SampleBucket::MODULE`. El módulo principal, `My::S3::SampleBucket::MODULE`, establece los parámetros del módulo secundario de las siguientes maneras:
+ Establece el parámetro `AccessControl` de `My::S3::SampleBucketPrivate::MODULE` a `Private`.
+ Para `BucketName`, define un parámetro de módulo, que permitirá que el nombre del bucket se especifique en la plantilla (o módulo) que contiene `My::S3::SampleBucket::MODULE`.

```
# My::S3::SampleBucket::MODULE
AWSTemplateFormatVersion: 2010-09-09
Description: A sample S3 Bucket. With Private AccessControl.
Parameters:
  BucketName:
    Description: Name for your sample bucket
    Type: String
Resources:
  MyBucket:
    Type: 'My::S3::SampleBucketPrivate::MODULE'
    Properties:
      BucketName: !Ref BucketName
      AccessControl: Private
```

## Especificación de restricciones para parámetros de módulo
<a name="modules-using-parameters-constraints"></a>

Los parámetros del módulo no admiten la restricción de ejecución. Para comprobar la restricción en un parámetro de módulo, cree un parámetro de plantilla con las restricciones deseadas. A continuación, haga referencia a ese parámetro de plantilla en el parámetro del módulo. Para obtener más información sobre cómo definir parámetros de plantilla, consulte [Sintaxis de Parameters de la plantilla de CloudFormation](parameters-section-structure.md).