Configurar uma API do API Gateway com integrações privadas usando a AWS CLI - Amazon API Gateway

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar uma API do API Gateway com integrações privadas usando a AWS CLI

Antes de criar uma API com a integração privada, você deve ter o recurso da VPC configurado e um Network Load Balancer criado e configurado com a origem da VPC como o destino. Se os requisitos não forem atendidos, siga Configurar um Network Load Balancer para integrações privadas do API Gateway para instalar o recurso da VPC, crie um Network Load Balancer e definir o recurso da VPC como um destino do Network Load Balancer.

nota

O Network Load Balancer e a API devem pertencer à mesma conta da AWS.

Para que você possa criar e gerenciar um VpcLink, você também deve ter as permissões apropriadas configuradas. Para obter mais informações, consulte Conceder permissões para criar um link de VPC.

nota

Você só precisa as permissões para criar um VpcLink na API. Você não precisa de permissões para usar o VpcLink.

Após a criação do Network Load Balancer, anote o ARN. Você precisará dele para criar um link de VPC para a integração privada.

Para configurar uma API com a integração privada usando a AWS CLI
  1. Crie um VpcLink direcionado ao Network Load Balancer especificado.

    aws apigateway create-vpc-link \ --name my-test-vpc-link \ --target-arns arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/net/my-vpclink-test-nlb/1234567890abcdef

    A saída desse comando confirma o recebimento da solicitação e mostra o status PENDING da VpcLink que está sendo criada.

    { "status": "PENDING", "targetArns": [ "arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/net/my-vpclink-test-nlb/1234567890abcdef" ], "id": "gim7c3", "name": "my-test-vpc-link" }

    Demora de 2 a 4 minutos para que o API Gateway conclua a criação do VpcLink. Quando a operação é concluída com êxito, o status é AVAILABLE. Você pode verificar isso usando o seguinte comando da CLI:

    aws apigateway get-vpc-link --vpc-link-id gim7c3

    Se a operação falhar, você obterá o status FAILED e a statusMessage conterá uma mensagem de erro. Por exemplo, se você tentar criar um VpcLink com um Network Load Balancer que já esteja associado a um VPC endpoint, obterá a seguinte mensagem na propriedade statusMessage:

    "NLB is already associated with another VPC Endpoint Service"

    Depois que a VpcLink for criada com sucesso, você poderá criar uma API e integrá-la ao recurso da VPC por meio da VpcLink.

    Anote o valor do id do recém-criado VpcLink (gim7c3 na saída anterior). Você precisará dele para configurar a integração privada.

  2. Configure uma API criando um recurso RestApi do API Gateway:

    aws apigateway create-rest-api --name 'My VPC Link Test'

    Anote o valor do RestApi da id no resultado obtido. Você precisa desse valor para executar outras operações na API.

    Para fins de ilustração, criaremos uma API com apenas um método GET no recurso raiz (/) e integraremos o método ao VpcLink.

  3. Configure o método GET /. Primeiro, obtenha o identificador do recurso raiz (/):

    aws apigateway get-resources --rest-api-id abcdef123

    Na saída, anote o valor de id do caminho /. Neste exemplo, estamos supondo que ele seja skpp60rab7.

    Configure a solicitação de método para o método da API GET /:

    aws apigateway put-method \ --rest-api-id abcdef123 \ --resource-id skpp60rab7 \ --http-method GET \ --authorization-type "NONE"

    Se você não usa a integração de proxy com o VpcLink, também deve configurar pelo menos uma resposta do método para o código de status 200. Vamos usar a integração de proxy aqui.

  4. Configure a integração privada do tipo HTTP_PROXY e use o comando put-integration da seguinte forma:

    aws apigateway put-integration \ --rest-api-id abcdef123 \ --resource-id skpp60rab7 \ --uri 'http://my-vpclink-test-nlb-1234567890abcdef.us-east-2.amazonaws.com' \ --http-method GET \ --type HTTP_PROXY \ --integration-http-method GET \ --connection-type VPC_LINK \ --connection-id gim7c3

    Para uma integração privada, defina connection-type como VPC_LINK e connection-id como o identificador da VpcLink ou como uma variável de estágio que faça referência ao ID da VpcLink. O parâmetro uri não é usado para rotear solicitações para o endpoint, mas sim para configurar o cabeçalho do Host e para a validação do certificado.

    O comando retorna a seguinte saída:

    { "passthroughBehavior": "WHEN_NO_MATCH", "timeoutInMillis": 29000, "connectionId": "gim7c3", "uri": "http://my-vpclink-test-nlb-1234567890abcdef.us-east-2.amazonaws.com", "connectionType": "VPC_LINK", "httpMethod": "GET", "cacheNamespace": "skpp60rab7", "type": "HTTP_PROXY", "cacheKeyParameters": [] }

    Com uma variável de estágio, defina a propriedade connectionId ao criar a integração:

    aws apigateway put-integration \ --rest-api-id abcdef123 \ --resource-id skpp60rab7 \ --uri 'http://my-vpclink-test-nlb-1234567890abcdef.us-east-2.amazonaws.com' \ --http-method GET \ --type HTTP_PROXY \ --integration-http-method GET \ --connection-type VPC_LINK \ --connection-id "\${stageVariables.vpcLinkId}"

    Inclua aspas duplas na expressão da variável de estágio (${stageVariables.vpcLinkId}) e insira um caractere de escape para o caractere $.

    Como alternativa, você pode atualizar a integração para redefinir o valor de connectionId com uma variável de estágio:

    aws apigateway update-integration \ --rest-api-id abcdef123 \ --resource-id skpp60rab7 \ --http-method GET \ --patch-operations '[{"op":"replace","path":"/connectionId","value":"${stageVariables.vpcLinkId}"}]'

    Certifique-se de usar uma lista JSON transformada em string como o valor do parâmetro patch-operations.

    É possível usar uma variável de estágio para integrar a API com uma VPC ou um Network Load Balancer diferente redefinindo o valor da variável de estágio da VpcLink.

    Como usamos a integração de proxy privada, a API agora está pronta para implantação e execução de testes. Com a integração não proxy, você também deve configurar a resposta do método e a resposta da integração da mesma forma que faria ao configurar uma API com integrações personalizadas de HTTP.

  5. Para testar a API, faça a sua implantação. Isso será necessário se você tiver usado a variável de estágio como um espaço reservado do ID do VpcLink. Para implantar a API com uma variável de estágio, use o comando create-deployment da seguinte forma:

    aws apigateway create-deployment \ --rest-api-id abcdef123 \ --stage-name test \ --variables vpcLinkId=gim7c3

    Para atualizar a variável de estágio com um ID diferente do VpcLink (por exemplo, asf9d7), use o comando update-stage:

    aws apigateway update-stage \ --rest-api-id abcdef123 \ --stage-name test \ --patch-operations op=replace,path='/variables/vpcLinkId',value='asf9d7'

    Use o seguinte comando para invocar a API:

    curl -X GET https://abcdef123.execute-api.us-east-2.amazonaws.com/test

    Como alternativa, você pode digitar a URL de chamada da API em um navegador da web para visualizar o resultado.

    Quando você codifica permanentemente a propriedade connection-id com o literal do ID do VpcLink, também pode chamar o test-invoke-method para testar a chamada da API antes de implantá-la.