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 ter 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 umVpcLink
na API. Não é necessário ter permissões para usar oVpcLink
. Para ter 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
-
O comando create-vpc-link a seguir cria um
VpcLink
para 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/1234567890abcdef
A saída desse comando confirma o recebimento da solicitação e mostra o status
PENDING
daVpcLink
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, ostatus
éAVAILABLE
. É possível verificar isso chamando o seguinte comando get-vpc-link:aws apigateway get-vpc-link --vpc-link-id
gim7c3
Se a operação falhar, você obterá o status
FAILED
e astatusMessage
conterá uma mensagem de erro. Por exemplo, se você tentar criar umVpcLink
com 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
VpcLink
for criada com sucesso, você poderá criar uma API e integrá-la ao recurso da VPC por meio daVpcLink
.Anote o valor de
id
doVpcLink
recém-criado. Neste exemplo de saída, égim7c3
. Você precisará dele para configurar a integração privada. -
O seguinte comando create-rest-api cria um recurso
RestApi
do API Gateway:aws apigateway create-rest-api --name 'My VPC Link Test'
Anote o valor de
id
daRestApi
e o valor derootResourceId
daRestApi
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 aoVpcLink
. -
Configure o método
GET /
. Use o seguinte comando put-method e insira oId
como orest-api-id
e orootResourceId
como oresource-id
:aws apigateway put-method \ --rest-api-id
abcdef123
\ --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
. Vamos usar 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-id
para fornecer o ID doVpcLink
. É possível usar uma variável de estágio ou inserir diretamente o ID doVpcLink
. O parâmetrouri
não é usado para rotear solicitações para o endpoint, mas sim para configurar o cabeçalho doHost
e para a validação do certificado.A qualquer momento, também é possível atualizar a integração para alterar o
connection-id
. O seguinte comando update-integration mostra como atualizar a integração:aws apigateway update-integration \ --rest-api-id
abcdef123
\ --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 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.
-
Se você usou a variável de estágio para definir o
connection-id
, precisará implantar a API para testá-la. O seguinte comando create-deployment mostra como implantar a API com uma variável de estágio: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 do
VpcLink
diferente (por exemplo,
), chame o comando update-stage:asf9d7
aws apigateway update-stage \ --rest-api-id
abcdef123
\ --stage-name test \ --patch-operations op=replace,path='/variables/vpcLinkId',value='asf9d7
'Ao codificar a propriedade
connection-id
com 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.