

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.

# Cree objetos de Infoblox con los recursos CloudFormation personalizados de AWS y Amazon SNS
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns"></a>

*Tim Sutton, Amazon Web Services*

## Resumen
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns-summary"></a>

**Aviso**: ya no AWS Cloud9 está disponible para nuevos clientes. Los clientes actuales de AWS Cloud9 pueden seguir utilizando el servicio con normalidad. [Más información](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

El sistema de nombres de dominio (DNS), el protocolo de configuración dinámica de host (DHCP) y la administración de direcciones IP ([Infoblox DDI](https://www.infoblox.com/products/ddi/)) permiten centralizar y controlar de manera eficiente un entorno híbrido complejo. Con Infoblox DDI se pueden descubrir y registrar todos los activos de la red en una base de datos de Administrador de direcciones IP (IPAM) autorizada, además de administrar el DNS en las instalaciones y en la nube de Amazon Web Services (AWS) mediante los mismos dispositivos.

Este patrón describe cómo usar un recurso CloudFormation personalizado de AWS para crear objetos de Infoblox (por ejemplo, registros DNS u objetos de IPAM) mediante una llamada a la API WAPI de Infoblox. Para obtener más información sobre la WAPI de Infoblox, consulte la [documentación de la WAPI](https://www.infoblox.com/wp-content/uploads/infoblox-deployment-infoblox-rest-api.pdf) en la documentación de Infoblox.

Al utilizar el enfoque de este patrón, puede obtener una vista unificada de los registros de DNS y las configuraciones de IPAM para sus entornos de AWS y en las instalaciones, además de eliminar los procesos manuales que crean registros y aprovisionan sus redes. Se puede utilizar el enfoque de este patrón para los casos de uso siguientes:
+ Añadir un registro A después de crear una instancia de Amazon Elastic Compute Cloud (Amazon EC2) 
+ Cómo agregar un registro CNAME después de crear un Equilibrador de carga de aplicación
+ Cómo agregar un objeto de red después de crear una nube privada virtual (VPC)
+ Proporcionar el rango de redes siguiente y usar ese rango para crear subredes

También puede ampliar este patrón y utilizar otras funciones del dispositivo Infoblox, como agregar diferentes tipos de registros DNS o configurar Infoblox vDiscovery. 

El patrón usa un hub-and-spoke diseño en el que el hub requiere conectividad con el dispositivo Infoblox en la nube de AWS o en las instalaciones y usa AWS Lambda para llamar a la API de Infoblox. El radio se encuentra en la misma cuenta o en una cuenta diferente de la misma organización en AWS Organizations y llama a la función Lambda mediante un recurso CloudFormation personalizado de AWS.

## Requisitos previos y limitaciones
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns-prereqs"></a>

**Requisitos previos **
+ Un dispositivo o una red de Infoblox existente, instalado en la nube de AWS, en las instalaciones o en ambos, y configurado con un usuario administrador que puede administrar las acciones de IPAM y DNS. Para obtener más información acerca de este tema, consulte [About admin accounts](https://docs.infoblox.com/display/nios86/About+Admin+Accounts) (Acerca de las cuentas de administrador) en la documentación de Infoblox. 
+ Una zona de DNS autorizada existente a la que desee agregar registros del dispositivo Infoblox. Para obtener más información al respecto, consulte [Configuring authoritative zones](https://docs.infoblox.com/display/nios86/Configuring+Authoritative+Zones) (Configurar zonas autorizadas) en la documentación de Infoblox.  
+ Dos cuentas de AWS activas en AWS Organizations. Una cuenta es la cuenta de hub y la otra es la cuenta de spoke.
+ Las cuentas de hub y spoke deben estar en la misma región de AWS. 
+ La VPC de la cuenta de hub debe conectarse al dispositivo Infoblox; por ejemplo, mediante AWS Transit Gateway o interconexión de VPC.
+ [AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html), instalado y configurado localmente con AWS Cloud9 o AWS. CloudShell
+ Los archivos `ClientTest.yaml` y `Infoblox-Hub.zip` (adjuntos), descargados en el entorno local que contiene AWS SAM.

**Limitaciones**
+ El token de servicio del recurso CloudFormation personalizado de AWS debe provenir de la misma región en la que se creó la pila. Se recomienda utilizar una cuenta de hub en cada región, en lugar de crear un tema de Amazon Simple Notification Service (Amazon SNS) en una región y llamar a la función de Lambda en otra región.

**Versiones de producto**
+ Infoblox, versión 2.7

## Arquitectura
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns-architecture"></a>

En los siguientes diagramas se muestra el flujo de este patrón. 

![\[Creación de objetos de Infoblox mediante recursos CloudFormation personalizados de AWS y Amazon SNS.\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/8d609d3f-6f5e-4084-849f-ca191db8055e/images/3594a064-e103-4211-84b7-da67c41ebb15.png)


El diagrama muestra los siguientes componentes para la solución de este patrón:

1.  CloudFormation Los recursos personalizados de AWS le permiten escribir una lógica de aprovisionamiento personalizada en las plantillas que AWS CloudFormation ejecuta al crear, actualizar o eliminar pilas. Al crear una pila, AWS CloudFormation envía una `create` solicitud a un tema de SNS que supervisa una aplicación que se ejecuta en una EC2 instancia.

1. La notificación de Amazon SNS del recurso CloudFormation personalizado de AWS se cifra mediante una clave específica de AWS Key Management Service (AWS KMS) y el acceso está restringido a las cuentas de su organización en Organizations. El tema SNS inicia el recurso de Lambda que llama a la API WAPI de Infoblox.

1. Amazon SNS invoca las siguientes funciones de Lambda que toman la URL de la WAPI de Infoblox, el nombre de usuario y la contraseña () de AWS Secrets Manager Amazon Resource Names () como variables de entorno: ARNs 
   + `dnsapi.lambda_handler`— Recibe los `DNSValue` valores `DNSName``DNSType`, y del recurso CloudFormation personalizado de AWS y los utiliza para crear registros A de DNS y CNAME.
   + `ipaddr.lambda_handler`— Recibe los `Network Name` valores`VPCCIDR`, `Type``SubnetPrefix`, y del recurso CloudFormation personalizado de AWS y los utiliza para añadir los datos de la red a la base de datos de IPAM de Infoblox o para proporcionar al recurso personalizado la siguiente red disponible que se pueda utilizar para crear nuevas subredes.
   + `describeprefixes.lambda_handler`: Llama a la API de AWS `describe_managed_prefix_lists` mediante el filtro `"com.amazonaws."+Region+".s3"` para recuperar el `prefix ID` necesario.
**importante**  
Estas funciones Lambda están escritas en Python y son similares entre sí, pero se llaman de forma diferente. APIs

1. Puede implementar la red de Infoblox como dispositivos de red físicos, virtuales o basados en la nube.  Se puede implementar en las instalaciones o como un dispositivo virtual mediante una variedad de hipervisores, incluidos VMware ESXi Microsoft Hyper-V, Linux KVM y Xen. También puede implementar la cuadrícula de Infoblox en la nube de AWS con una Imagen de máquina de Amazon (AMI).

1. El diagrama muestra una solución híbrida para la red de Infoblox que proporciona DNS e IPAM a los recursos en la nube de AWS y en las instalaciones.

**Pila de tecnología**
+ AWS CloudFormation
+ IAM
+ AWS KMS
+ AWS Lambda
+ SAM de AWS
+ AWS Secrets Manager
+ Amazon SNS
+ Amazon VPC 

## Tools (Herramientas)
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns-tools"></a>
+ [AWS](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) le CloudFormation ayuda a configurar los recursos de AWS, aprovisionarlos de forma rápida y coherente y gestionarlos durante todo su ciclo de vida en todas las cuentas y regiones de AWS.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) le permite administrar de forma segura el acceso a los recursos de AWS mediante el control de quién está autenticado y autorizado a utilizarlos.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) facilita poder crear y controlar claves criptográficas para proteger los datos.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
+ [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html) es un servicio de administración de cuentas que le permite agrupar varias cuentas de AWS en una organización que usted crea y administra de manera centralizada.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) le permite reemplazar las credenciales codificadas en el código, incluidas las contraseñas, con una llamada a la API de Secrets Manager para recuperar el secreto mediante programación.
+ [AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) es un marco de código abierto que permite crear aplicaciones sin servidor en la nube de AWS.
+ [Amazon Simple Notification Service (Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) le permite coordinar y administrar el intercambio de mensajes entre publicadores y clientes, incluidos los servidores web y las direcciones de correo electrónico.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) le permite lanzar recursos de AWS en una red virtual que haya definido. Esta red virtual es similar a la red tradicional que utiliza en su propio centro de datos, con los beneficios de usar la infraestructura escalable de AWS.

**Código**

Puede usar la CloudFormation plantilla de AWS de `ClientTest.yaml` muestra (adjunta) para probar el centro de Infoblox. Puede personalizar la CloudFormation plantilla de AWS para incluir los recursos personalizados de la siguiente tabla.


|  | 
| --- |
| Crear un registro A con el recurso personalizado de spoke de Infoblox | Valores devueltos: `infobloxref `: referencias de InfobloxRecurso de ejemplo:

```
ARECORDCustomResource:

  Type: "Custom::InfobloxAPI"

  Properties:

    ServiceToken: !Sub  arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxDNSFunction

    DNSName: 'arecordtest.company.com'

    DNSType: 'ARecord' 

    DNSValue: '10.0.0.1'
``` | 
| --- |--- |
| crear un registro de CNAME con el recurso personalizado de spoke de Infoblox | **Valores devueltos**: `infobloxref `: referencias de Infoblox**Recurso de ejemplo**:<pre>CNAMECustomResource:<br /><br />  Type: "Custom::InfobloxAPI"<br /><br />  Properties:<br /><br />    ServiceToken: !Sub arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfoblox    <br /><br />    DNSFunction<br /><br />    DNSName: 'cnametest.company.com'<br /><br />    DNSType: 'cname' <br /><br />    DNSValue: 'aws.amazon.com'</pre> | 
| crear un objeto de red utilizando el recurso personalizado de spoke de Infoblox | **Valores devueltos**:`infobloxref `: referencias de Infoblox`network`: Rango de red (igual a `VPCCIDR`)**Recurso de ejemplo**:<pre>VPCCustomResource:<br /><br />  Type: 'Custom::InfobloxAPI'<br /><br />  Properties:<br /><br />    ServiceToken: !Sub  arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxNextSubnetFunction<br /><br />    VPCCIDR: !Ref VpcCIDR<br /><br />    Type: VPC<br /><br />    NetworkName: My-VPC</pre> | 
| Recuperar la subred disponible siguiente mediante el recurso personalizado de spoke de Infoblox | **Valores devueltos**:`infobloxref`: referencias de Infoblox`network `: El rango de redes de la subred**Recurso de ejemplo**:<pre>Subnet1CustomResource:<br /><br />  Type: 'Custom::InfobloxAPI'<br /><br />  DependsOn: VPCCustomResource<br /><br />  Properties:<br /><br />    ServiceToken: !Sub  arn:aws:sns:${AWS::Region}:${HubAccountID}:RunInfobloxNextSubnetFunction<br /><br />    VPCCIDR: !Ref VpcCIDR<br /><br />    Type: Subnet<br /><br />    SubnetPrefix: !Ref SubnetPrefix<br /><br />NetworkName: My-Subnet</pre> | 

## Epics
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns-epics"></a>

### Crear y configurar la VPC de la cuenta de hub
<a name="create-and-configure-the-hub-accountrsquor-s-vpc"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Crear una VPC con una conexión al dispositivo Infoblox. | Inicie sesión en la consola de administración de AWS de su cuenta de hub y cree una VPC siguiendo los pasos de [Amazon VPC en la implementación de referencia de inicio rápido de la nube de AWS](https://aws-quickstart.github.io/quickstart-aws-vpc/) en los inicios rápidos de AWS.La VPC debe tener conectividad HTTPS con el dispositivo Infoblox y se recomienda utilizar una subred privada para esta conexión. | Administrador de red, administrador del sistema | 
| (Opcional) Cree los puntos de conexión de VPC para las subredes privadas.  | Los puntos de conexión de VPC proporcionan conectividad a los servicios públicos para las subredes privadas. Se necesitan los puntos de conexión siguientes:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns.html)Para obtener más información acerca de la creación de puntos de conexión para las subredes privadas, consulte [VPC endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints.html) (Puntos de conexión de VPC) de la documentación de Amazon VPC. | Administrador de red, administrador del sistema | 

### Implementar el hub de Infoblox
<a name="deploy-the-infoblox-hub"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree la plantilla SAM de AWS. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns.html) | Desarrollador, administrador del sistema | 
| Implemente la plantilla SAM de AWS. | El `sam deploy` comando toma los parámetros necesarios y los guarda en el `samconfig.toml` archivo, almacena la CloudFormation plantilla de AWS y las funciones de Lambda en un bucket de S3 y, a continuación, implementa la CloudFormation plantilla de AWS en su cuenta de hub.  El código de ejemplo siguiente muestra cómo implementar la plantilla AWS SAM:<pre>$ sam deploy --guided<br /><br />Configuring SAM deploy<br />======================<br />        Looking for config file [samconfig.toml] :  Found<br />        Reading default arguments  :  Success<br />        Setting default arguments for 'sam deploy'<br />        =========================================<br />        Stack Name [Infoblox-Hub]:<br />        AWS Region [eu-west-1]:<br />        Parameter InfobloxUsername:<br />        Parameter InfobloxPassword:<br />        Parameter InfobloxIPAddress [xxx.xxx.xx.xxx]:<br />        Parameter AWSOrganisationID [o-xxxxxxxxx]:<br />        Parameter VPCID [vpc-xxxxxxxxx]:<br />        Parameter VPCCIDR [xxx.xxx.xxx.xxx/16]:<br />        Parameter VPCSubnetID1 [subnet-xxx]:<br />        Parameter VPCSubnetID2 [subnet-xxx]:<br />        Parameter VPCSubnetID3 [subnet-xxx]:<br />        Parameter VPCSubnetID4 []: <br />        #Shows you resources changes to be deployed and require a 'Y' to initiate deploy<br />        Confirm changes before deploy [Y/n]: y<br />        #SAM needs permission to be able to create roles to connect to the resources in your template<br />Allow SAM CLI IAM role creation [Y/n]: n<br />Capabilities [['CAPABILITY_NAMED_IAM']]:<br />        Save arguments to configuration file [Y/n]: y<br />        SAM configuration file [samconfig.toml]:<br />        SAM configuration environment [default]: </pre>Debe utilizar la opción `--guided` cada vez, ya que las credenciales de inicio de sesión de Infoblox no se almacenan en el archivo `samconfig.toml`. | Desarrollador, administrador del sistema | 

## Recursos relacionados
<a name="create-infoblox-objects-using-aws-cloudformation-custom-resources-and-amazon-sns-resources"></a>
+ [Cómo empezar a WAPIs usar Postman (blog de Infoblox](https://blogs.infoblox.com/community/getting-started-with-wapis-using-postman/))
+ [Provisioning vNIOS for AWS Using the BYOL Model ](https://docs.infoblox.com/display/NAIG/Provisioning+vNIOS+for+AWS+Using+the+BYOL+Model)(Aprovisionar vNIOS para AWS mediante el modelo BYOL) (documentación de Infoblox)
+ [quickstart-aws-vpc](https://github.com/aws-quickstart/quickstart-aws-vpc)(repositorio) GitHub 
+ [describe\$1managed\$1prefix\$1lists](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.describe_managed_prefix_lists) (documentación de AWS SDK para Python)

## Conexiones
<a name="attachments-8d609d3f-6f5e-4084-849f-ca191db8055e"></a>

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: [attachment.zip](samples/p-attach/8d609d3f-6f5e-4084-849f-ca191db8055e/attachments/attachment.zip)