Configurar uma API do API Gateway com integrações privadas usando a AWS CLI
O tutorial a seguir mostra como usar a AWS CLI para criar um link de VPC e uma integração privada. Os seguintes pré-requisitos se aplicam:
-
É necessário ter um Network Load Balancer criado e configurado com a origem da VPC como o destino. Para obter mais informações, consulte Configurar um Network Load Balancer para integrações privadas do API Gateway. Isso deve ser feito na mesma Conta da AWS que a API. É necessário ter o ARN do Network Load Balancer para criar o link da VPC.
-
Para criar e gerenciar um
VpcLink, é preciso ter permissões para criar umVpcLinkna API. Não é necessário ter permissões para usar oVpcLink. Para obter mais informações, consulte Conceder permissões do API Gateway para criar um link de VPC.
Para configurar uma API com a integração privada usando a AWS CLI
-
Use o comando create-vpc-link a seguir para criar um
VpcLinkpara o 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/1234567890abcdefA saída desse comando confirma o recebimento da solicitação e mostra o status
PENDINGdaVpcLinkque 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, ostatuséAVAILABLE. É possível verificar isso usando o comando get-vpc-link indicado abaixo:aws apigateway get-vpc-link --vpc-link-idgim7c3Se a operação falhar, você obterá o status
FAILEDe astatusMessageconterá uma mensagem de erro. Por exemplo, se você tentar criar umVpcLinkcom um Network Load Balancer que já esteja associado a um VPC endpoint, obterá a seguinte mensagem na propriedadestatusMessage:"NLB is already associated with another VPC Endpoint Service"Depois que a
VpcLinkfor criada com sucesso, você poderá criar uma API e integrá-la ao recurso da VPC por meio daVpcLink.Anote o valor de
iddoVpcLinkrecém-criado. Neste exemplo de saída, égim7c3. Você precisará dele para configurar a integração privada. -
Use o comando create-rest-api indicado abaixo para criar um recurso
RestApido API Gateway:aws apigateway create-rest-api --name 'My VPC Link Test'Anote o valor de
iddaRestApie o valor derootResourceIddaRestApino resultado obtido. Você precisa desse valor para executar outras operações na API.Em seguida, crie uma API com apenas um método
GETno recurso raiz (/) e integre o método aoVpcLink. -
Use o comando put-method indicado abaixo para criar o método
GET /:aws apigateway put-method \ --rest-api-idabcdef123\ --resource-idskpp60rab7\ --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 status200. Use a integração de proxy aqui. -
Depois de criar o método
GET /, você configura a integração. Em uma integração privada, use o parâmetroconnection-idpara fornecer o ID doVpcLink. É possível usar uma variável de estágio ou inserir diretamente o ID doVpcLink. O parâmetrourinão é usado para rotear solicitações para o endpoint, mas sim para configurar o cabeçalho doHoste para a validação do certificado.A qualquer momento, também é possível atualizar a integração para alterar o
connection-id. Use o comando update-integration indicado abaixo para atualizar a integração:aws apigateway update-integration \ --rest-api-idabcdef123\ --resource-idskpp60rab7\ --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.Como você usou a integração de proxy privada, a API agora está pronta para implantação e execução de testes.
-
Se você usou a variável de estágio para definir o
connection-id, precisará implantar a API para testá-la. Use o comando create-deployment indicado abaixo para implantar a API com uma variável de estágio:aws apigateway create-deployment \ --rest-api-idabcdef123\ --stage-name test \ --variables vpcLinkId=gim7c3Para atualizar a variável de estágio com um ID do
VpcLinkdiferente (por exemplo,), use o comando update-stage indicado abaixo:asf9d7aws apigateway update-stage \ --rest-api-idabcdef123\ --stage-name test \ --patch-operations op=replace,path='/variables/vpcLinkId',value='asf9d7'Ao codificar a propriedade
connection-idcom o ID literal doVpcLink, não é necessário implantar a API para testá-la. Use o comando test-invoke-method para testar a API antes que ela seja implantada. -
Use o seguinte comando para invocar a API:
curl -X GET https://abcdef123.execute-api.us-east-2.amazonaws.com/testTambém é possível inserir o URL de invocação da API em um navegador da web para visualizar o resultado.