

Esta es la nueva *Guía de referencia de plantillas de CloudFormation*. Actualice sus marcadores y enlaces. Para obtener ayuda sobre cómo empezar a usar CloudFormation, consulte la [Guía del usuario de AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

# `AWS::CloudFormation::Authentication`
<a name="aws-resource-authentication"></a>

Utilice el tipo de metadatos `AWS::CloudFormation::Authentication` para especificar las credenciales de autenticación de los archivos u orígenes indicados mediante el tipo de metadatos [`AWS::CloudFormation::Init`](aws-resource-init.md).

Si desea incluir información de autenticación para un archivo u origen especificados con `AWS::CloudFormation::Init`, utilice la propiedad `uris` si el origen es un URI o la propiedad `buckets` si el origen es un bucket de Amazon S3. Para obtener más información sobre archivos, consulte [Archivos](aws-resource-init.md#aws-resource-init-files). Para obtener más información sobre orígenes, consulte [Orígenes](aws-resource-init.md#aws-resource-init-sources).

También puede especificar información de autenticación para los archivos directamente en el tipo de metadatos `AWS::CloudFormation::Init`. La clave de los archivos del recurso contiene una propiedad denominada `authentication`. Puede utilizar la propiedad `authentication` para asociar información de autenticación definida en un tipo de metadatos `AWS::CloudFormation::Authentication` directamente a un archivo.

Para archivos, CloudFormation buscará información de autenticación en el siguiente orden:

1. La propiedad `authentication` de la clave `AWS::CloudFormation::Init` de `files`.

1. La propiedad `uris` o `buckets` de los metadatos `AWS::CloudFormation::Authentication`.

En el caso de los orígenes, CloudFormation busca información de autenticación en la propiedad `uris` o `buckets` de los metadatos `AWS::CloudFormation::Authentication`.

**Topics**
+ [Sintaxis](#aws-resource-cloudformation-authentication-syntax)
+ [Propiedades](#w2aac19c23c15c19)
+ [Ejemplos](#aws-resource-authentication-examples)

## Sintaxis
<a name="aws-resource-cloudformation-authentication-syntax"></a>

Para declarar esta entidad en su plantilla de CloudFormation, use la siguiente sintaxis:

Sea consciente de las consideraciones siguientes al usar el tipo de metadatos `AWS::CloudFormation::Authentication`:
+ A diferencia de la mayoría de los recursos de CloudFormation, el tipo de metadatos `AWS::CloudFormation::Authentication` no contiene un bloque denominado *Properties*, sino que contiene una lista de bloques con nombres asignados por el usuario, cada uno con sus propias propiedades de autenticación.

  No todas las propiedades pertenecen a cada tipo de autenticación. Para obtener más información, consulte la propiedad [type](#cfn-cloudformation-authentication-type).
+ A diferencia de la mayoría de los recursos de CloudFormation, los nombres de las propiedades `AWS::CloudFormation::Authentication` usan minúsculas.

### JSON
<a name="aws-resource-cloudformation-authentication-syntax.json"></a>

```
{
  "AWS::CloudFormation::Authentication" {
    "{{String}}" : {
      "accessKeyId" : {{String}},
      "buckets" : [ {{String, ...}} ],
      "password" : {{String}},
      "secretKey" : {{String}},
      "type" : {{String}},
      "uris" : [ {{String, ...}} ],
      "username" : {{String}},
      "roleName" : {{String}}
    }
  }
}
```

### YAML
<a name="aws-resource-cloudformation-authentication-syntax.yaml"></a>

```
AWS::CloudFormation::Authentication
{{String}}:
  accessKeyId: {{String}}
  buckets:
    - {{String}}
  password: {{String}}
  secretKey: {{String}}
  type: {{String}}
  uris:
    - {{String}}
  username: {{String}}
  roleName: {{String}}
```

## Propiedades
<a name="w2aac19c23c15c19"></a>

`accessKeyId`  <a name="cfn-cloudformation-authentication-accesskeyid"></a>
Especifica el ID de clave de acceso para la autenticación de S3.  
*Obligatorio*: condicional. Únicamente puede especificarse si se ha establecido la propiedad `type` en `S3`.  
*Tipo:* cadena

`buckets`  <a name="cfn-cloudformation-authentication-buckets"></a>
Una lista delimitada por comas de buckets de Amazon S3 para asociar a las credenciales de autenticación de S3.  
*Obligatorio*: condicional. Únicamente puede especificarse si se ha establecido la propiedad `type` en `S3`.  
*Tipo*: lista de valores de cadena

`password`  <a name="cfn-cloudformation-authentication-password"></a>
Especifica la contraseña de autenticación básica.  
*Obligatorio*: condicional. Únicamente puede especificarse si se ha establecido la propiedad type en `basic`.  
*Tipo:* cadena

`secretKey`  <a name="cfn-cloudformation-authentication-secretkey"></a>
Especifica la clave secreta para la autenticación de S3.  
*Obligatorio*: condicional. Únicamente puede especificarse si se ha establecido la propiedad `type` en `S3`.  
*Tipo:* cadena

`type`  <a name="cfn-cloudformation-authentication-type"></a>
Especifica si el esquema de autenticación usa un nombre de usuario y una contraseña (básica) o un ID de clave de acceso y una clave secreta (S3).  
Si especifica `basic`, especifique las propiedades `username`, `password` y `uris`.  
Si especifica `S3`, especifique las propiedades `accessKeyId`, `secretKey` y `buckets` (opcional).  
*Obligatorio*: sí  
*Valores válidos*: `basic` \| `S3`

`uris`  <a name="cfn-cloudformation-authentication-uris"></a>
Una lista delimitada por comas de URI para asociar a las credenciales de autenticación básicas. La autorización se aplica al URI especificado y cualquier URI más específico. Por ejemplo, si especifica `http://www.example.com`, la autorización también se aplicará a `http://www.example.com/test`.  
*Obligatorio*: condicional. Únicamente puede especificarse si se ha establecido la propiedad `type` en `basic`.  
*Tipo*: lista de valores de cadena

`username`  <a name="cfn-cloudformation-authentication-username"></a>
Especifica el nombre de usuario de autenticación básica.  
*Obligatorio*: condicional. Únicamente puede especificarse si se ha establecido la propiedad type en `basic`.  
*Tipo:* cadena

`roleName`  <a name="cfn-cloudformation-authentication-rolename"></a>
Describe el rol para la autenticación basada en roles.  
Este rol debe estar incluido en el perfil de instancia que está asociado a la instancia de EC2. Un perfil de instancia solo puede contener un rol de IAM.
*Obligatorio*: condicional. Únicamente puede especificarse si se ha establecido la propiedad `type` en `S3`.  
*Tipo*: cadena.

## Ejemplos
<a name="aws-resource-authentication-examples"></a>

**Topics**
+ [Autenticación del servidor web de EC2](#aws-resource-cloudformation-authentication-example1)
+ [Especificación de autenticación básica y S3](#aws-resource-cloudformation-authentication-example2)
+ [Roles de IAM](#aws-resource-cloudformation-authentication-example3)

### Autenticación del servidor web de EC2
<a name="aws-resource-cloudformation-authentication-example1"></a>

Este fragmento de código de plantilla muestra cómo obtener un archivo a partir de un bucket de S3 privado dentro de una instancia de EC2. Las credenciales utilizadas para la autenticación se definen en los metadatos `AWS::CloudFormation::Authentication` y los metadatos `AWS::CloudFormation::Init` hacen referencia a ellas en la sección *files*.

#### JSON
<a name="aws-resource-cloudformation-authentication-example1.json"></a>

```
"WebServer": {
   "Type": "AWS::EC2::Instance",
   "DependsOn" : "BucketPolicy",
   "Metadata" : {
      "AWS::CloudFormation::Init" : {
         "config" : {
            "packages" : { "yum" : { "httpd" : [] } },
            "files" : {
               "/var/www/html/index.html" : {
                  "source" : {
                     "Fn::Join" : [
                        "", [ "http://s3.amazonaws.com/", { "Ref" : "BucketName" }, "/index.html" ]
                     ]
                  },
                  "mode"   : "000400",
                  "owner"  : "apache",
                  "group"  : "apache",
                  "authentication" : "S3AccessCreds"
               }
            },
            "services" : {
               "sysvinit" : {
                  "httpd" : { "enabled" : "true", "ensureRunning" : "true" }
               }
            }
         }
      },
      "AWS::CloudFormation::Authentication" : {
         "S3AccessCreds" : {
            "type" : "S3",
            "accessKeyId" : { "Ref" : "AccessKeyID" },
            "secretKey" : { "Ref" : "SecretAccessKey" }
         }
      }
   },
   "Properties": {
   {{EC2 Resource Properties ...}}
   }
}
```

#### YAML
<a name="aws-resource-cloudformation-authentication-example1.yaml"></a>

```
WebServer: 
  Type: AWS::EC2::Instance
  DependsOn: BucketPolicy
  Metadata: 
    AWS::CloudFormation::Init: 
      config: 
        packages: 
          yum: 
            httpd: []
        files: 
          /var/www/html/index.html: 
            source: !Join
              - ''
              - - 'http://s3.amazonaws.com/'
                - !Ref BucketName
                - '/index.html'
            mode: '000400'
            owner: apache
            group: apache
            authentication: S3AccessCreds
        services: 
          sysvinit: 
            httpd: 
              enabled: 'true'
              ensureRunning: 'true'
    AWS::CloudFormation::Authentication: 
      S3AccessCreds: 
        type: S3
        accessKeyId: !Ref AccessKeyID
        secretKey: !Ref SecretAccessKey
  Properties: 
  {{EC2 Resource Properties ...}}
```

### Especificación de autenticación básica y S3
<a name="aws-resource-cloudformation-authentication-example2"></a>

El siguiente fragmento de código de plantilla de ejemplo incluye tipos de autenticación *básica* y *S3*.

#### JSON
<a name="aws-resource-cloudformation-authentication-example2.json"></a>

```
"AWS::CloudFormation::Authentication" : {
   "testBasic" : {
      "type" : "basic",
      "username" : { "Ref" : "UserName" },
      "password" : { "Ref" : "Password" },
      "uris" : [ "example.com/test" ]
   },
   "testS3" : {
      "type" : "S3",
      "accessKeyId" : { "Ref" : "AccessKeyID" },
      "secretKey" : { "Ref" : "SecretAccessKey" },
      "buckets" : [{ "Fn::Sub": "${BucketName}" }]
   }
}
```

#### YAML
<a name="aws-resource-cloudformation-authentication-example2.yaml"></a>

```
AWS::CloudFormation::Authentication: 
  testBasic: 
    type: basic
    username: !Ref UserName
    password: !Ref Password
    uris: 
      - 'example.com/test'
  testS3: 
    type: S3
    accessKeyId: !Ref AccessKeyID
    secretKey: !Ref SecretAccessKey
    buckets: 
      - !Sub ${BucketName}
```

### Roles de IAM
<a name="aws-resource-cloudformation-authentication-example3"></a>

El siguiente ejemplo muestra cómo utilizar los roles de IAM:
+ `myRole` es un recurso [AWS::IAM::Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-iam-role.html).
+ La instancia Amazon EC2 que ejecuta `cfn-init` está asociada a `myRole` a través de un perfil de instancia.
+ El ejemplo especifica la autenticación mediante la propiedad `buckets`, como en la autenticación de Amazon S3. También puede especificar la autenticación por nombre.

#### JSON
<a name="aws-resource-cloudformation-authentication-example3.json"></a>

```
"AWS::CloudFormation::Authentication": {
    "rolebased" : {
        "type": "S3",
        "buckets": [{ "Fn::Sub": "${BucketName}" }],
        "roleName": { "Ref": "myRole" }
    }
}
```

#### YAML
<a name="aws-resource-cloudformation-authentication-example3.yaml"></a>

```
AWS::CloudFormation::Authentication:
  rolebased:
    type: S3
    buckets:
      - !Sub ${BucketName}
    roleName: !Ref myRole
```