

# Tutorial: Creación de una API de REST con integración de proxy de Lambda entre cuentas
<a name="apigateway-cross-account-lambda-integrations"></a>

Ahora puede utilizar una función AWS Lambda desde otra cuenta de AWS como backend de integración de API. Cada cuenta puede estar en cualquier región en la que Amazon API Gateway esté disponible. Esto permite administrar y compartir de forma centralizada funciones de backend de Lambda en varias API.

En esta sección mostramos cómo configurar una integración de proxy de Lambda entre cuentas con la consola de Amazon API Gateway.

## Creación de una API de API Gateway para la integración de Lambda entre cuentas
<a name="apigateway-cross-account-lambda-integrations-create-api"></a>

**Para crear un API**

1. Inicie sesión en la consola de API Gateway en [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Si es la primera vez que utiliza API Gateway, verá una página en la que aparecen las características del servicio. En **REST API**, elija **Build (Compilación)**. Cuando aparezca el menú emergente **Create Example API (Crear API de ejemplo)**, elija **OK (Aceptar)**.

   Si esta no es la primera vez que utiliza API Gateway, elija **Create API (Crear API)**. En **REST API**, elija **Build (Compilación)**.

1.  En **API name (Nombre de la API)**, escriba**CrossAccountLambdaAPI**.

1. (Opcional) En **Description (Descripción)**, introduzca una descripción.

1. Mantenga **Tipo de punto de conexión de la API** establecido en **Regional**.

1. En **Tipo de dirección IP**, seleccione **IPv4**.

1. Seleccione **Crear API**.

## Creación de una función de integración de Lambda en otra cuenta
<a name="apigateway-cross-account-lambda-integrations-create-lambda-function"></a>

Ahora, creará una función de Lambda en una cuenta distinta de la que usó para crear la API de ejemplo.

**Creación de una función de Lambda en otra cuenta**

1. Inicie sesión en la consola de Lambda de una cuenta distinta de la que utilizó para crear la API de API Gateway.

1. Elija **Create function (Crear función)**.

1. Elija **Author from scratch**.

1. En **Author from scratch (Crear desde cero)**, haga lo siguiente:

   1. En **Function name (Nombre de función)**, escriba un nombre.

   1. En la lista desplegable **Runtime (Tiempo de ejecución)**, elija un tiempo de ejecución de Node.js compatible.

   1. Para **Arquitectura**, mantenga la configuración predeterminada.

   1. En **Permissions (Permisos)**, expanda **Choose or create an execution role (Seleccionar o crear un rol de ejecución)**. Puede crear un rol o elegir uno existente.

   1. Elija **Create function (Crear función)** para continuar.

1. Desplácese hacia abajo en el panel **Function code (Código de la función)**.

1. Introduzca la implementación de la función de Node.js desde [Tutorial: Creación de una API de REST con una integración de proxy de Lambda](api-gateway-create-api-as-simple-proxy-for-lambda.md).

1. Elija **Deploy (Implementar)**.

1. Anote el ARN completo de la función (se encuentra en la esquina superior derecha del panel de la función de Lambda). Lo necesitará al crear la integración de Lambda entre cuentas.

## Configuración de la integración de Lambda entre cuentas
<a name="apigateway-cross-account-lambda-integrations-create-integration2"></a>

Una vez que tenga una función de integración de Lambda en otra cuenta, puede utilizar la consola de API Gateway para agregarla a la API de la primera cuenta.

**nota**  
Si está configurando un autorizador entre regiones y cuentas, el valor `sourceArn` que se agrega a la función de destino debe utilizar la región de la función, no la región de la API.

Después de crear una API, se crea un recurso. Normalmente, los recursos de la API están organizados en un árbol de recursos de acuerdo con la lógica de la aplicación. Para este ejemplo, creará un recurso **/helloworld**. 

**Para crear un recurso**

1. Elija **Crear recurso**.

1. Mantenga **Recurso proxy** desactivado. 

1. Mantenga **Ruta del recurso** en `/`.

1. En **Nombre del recurso**, escriba **helloworld**.

1. Mantenga desactivado **CORS (uso compartido de recursos entre orígenes)**.

1. Elija **Crear recurso**.

Después de crear un recurso, se crea un método `GET`. El método `GET` se integra con una función de Lambda en otra cuenta. 

**Para crear un método `GET`**

1. Seleccione el recurso **/helloworld** y, a continuación, elija **Crear método**.

1. En **Tipo de método**, seleccione **GET**.

1. En **Tipo de integración**, seleccione **Función de Lambda**.

1. Active **Integración de proxy de Lambda**.

1. En **Función de Lambda**, introduzca el ARN completo de la función de Lambda del paso 1. 

   En la consola de Lambda, puede encontrar el ARN de la función en la esquina superior derecha de la ventana de la consola.

1. Al introducir el ARN, aparecerá una cadena de comandos `aws lambda add-permission`. Esto concederá a su primera cuenta acceso a la función de Lambda de la segunda cuenta. Copie y pegue la cadena de comandos `aws lambda add-permission` en una ventana de la AWS CLI configurada para la segunda cuenta.

1. Elija **Crear método**.

Para ver la política actualizada para la función en la consola de Lambda.

**(Opcional) Para ver la política actualizada**

1. Inicie sesión en la Consola de administración de AWS y abra la consola AWS Lambda en [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Elija su función de Lambda.

1. Elija **Permissions**.

   Debería ver una política `Allow` con una cláusula `Condition` en la que `AWS:SourceArn` es el ARN del método `GET` de la API.