

# Tutorial: Crie uma API REST com uma integração de proxy do Lambda entre contas
<a name="apigateway-cross-account-lambda-integrations"></a>

Agora você pode usar a função do AWS Lambda de uma conta da AWS diferente como seu backend de integração da API. Cada conta pode estar em qualquer região onde o Amazon API Gateway está disponível. Isso facilita o gerenciamento centralizado e o compartilhamento das funções do Lambda de backend em várias APIs.

Nesta seção, mostramos como configurar a integração de proxy do Lambda entre contas usando o console do Amazon API Gateway.

## Criar uma API para integração do Lambda entre contas do API Gateway
<a name="apigateway-cross-account-lambda-integrations-create-api"></a>

**Como criar uma API**

1. Inicie uma sessão no console do API Gateway em [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Se esta for a primeira vez que você usa o API Gateway, você verá uma página com os recursos do serviço. Em **REST API**, escolha **Build** (Criar). Quando o pop-up **Create Example API** (Criar API de exemplo) for exibido, escolha **OK**.

   Se essa não for a primeira vez que você usa o API Gateway, escolha **Create API** (Criar API). Em **REST API**, escolha **Build** (Criar).

1.  Em **API name (Nome da API)**, insira **CrossAccountLambdaAPI**.

1. (Opcional) Em **Description (Descrição)**, insira uma descrição.

1. Mantenha **Tipo de endpoint de API** definido como **Regional**.

1. Em **Tipo de endereço IP**, selecione **IPv4**.

1. Selecione **Criar API**.

## Criar a função de integração do Lambda em outra conta
<a name="apigateway-cross-account-lambda-integrations-create-lambda-function"></a>

Agora você criará uma função do Lambda em uma conta diferente daquela em que criou a API demonstrativa.

**Criar uma função do Lambda em outra conta**

1. Faça login no console do Lambda usando uma conta diferente daquela em que você criou sua API do API Gateway.

1. Escolha **Create function** (Criar função).

1. Escolha **Author from scratch** (Criar do zero).

1. Em **Author from scratch (Criar do zero)**, faça o seguinte:

   1. Em **Function name (Nome da função)**, insira um nome.

   1. Na lista suspensa **Runtime (Tempo de execução)**, escolha um tempo de execução Node.js compatível.

   1. Em **Arquitetura**, mantenha a configuração padrão.

   1. Em **Permissions (Permissões)**, expanda **Choose or create an execution role (Escolher ou criar uma função de execução)**. É possível criar uma função ou escolher uma função existente.

   1. Escolha **Create function (Criar função)** para continuar.

1. Role para baixo, até o painel **Function code (Código da função)**.

1. Insira a implementação da função Node.js de [Tutorial: Crie uma API REST com uma integração de proxy do Lambda](api-gateway-create-api-as-simple-proxy-for-lambda.md).

1. Escolha **Deploy** (Implantar).

1. Anote o ARN completo da sua função (no canto superior direito do painel de funções do Lambda). Você precisará dele ao criar a integração do Lambda entre contas.

## Configurar a integração do Lambda entre contas
<a name="apigateway-cross-account-lambda-integrations-create-integration2"></a>

Depois de ter uma função de integração do Lambda em uma conta diferente, você poderá usar o console do API Gateway para adicioná-la à sua API na sua primeira conta.

**nota**  
Se você estiver configurando um autorizador entre regiões e entre contas, o `sourceArn` que é adicionado à função de destino deve usar a região da função, e não a região da API.

Depois de criar uma API, você criará um recurso. Normalmente, os recursos da API são organizados em uma árvore de recursos, de acordo com a lógica do aplicativo. Neste exemplo, você criará um recurso **/helloworld**. 

**Para criar um recurso**

1. Selecione **Criar recurso**.

1. Mantenha **Recurso proxy** desativado. 

1. Mantenha **Caminho do recurso** como `/`.

1. Em **Resource Name (Nome do recurso)**, insira **helloworld**.

1. Mantenha **CORS (Compartilhamento de recursos de origem cruzada)** desativado.

1. Selecione **Criar recurso**.

Depois de criar um recurso, você criará um método `GET`. Você vai integrar o método `GET` a uma função do Lambda em outra conta. 

**Como criar um método `GET`**

1. Selecione o recurso **/helloworld** e, depois, **Criar método**.

1. Em **Tipo de método**, selecione **GET**.

1. Em **Tipo de integração**, selecione **Função do Lambda**.

1. Ative **Integração de proxy do Lambda**.

1. Em **Função do Lambda**, insira o ARN completo da função do Lambda na Etapa 1. 

   No console do Lambda, você pode encontrar o ARN da sua função no canto superior direito da janela.

1. Ao inserir o ARN, uma string de comando `aws lambda add-permission` é exibida. Esta política concederá acesso da sua primeira conta à função do Lambda da segunda conta. Copie e cole a string de comando `aws lambda add-permission` em uma janela da AWS CLI configurada para a segunda conta.

1. Escolha **Criar método**.

É possível ver a política atualizada da função no console do Lambda.

**(Opcional) Como ver a política atualizada**

1. Faça login no Console de gerenciamento da AWS e abra o console do AWS Lambda em [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Selecione a função do Lambda.

1. Escolha **Permissions (Permissões)**.

   É necessário ver uma política `Allow` com uma cláusula `Condition` na qual o `AWS:SourceArn` é o ARN para o método `GET` da sua API.