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
-
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
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
. 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 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 do
id
do recém-criadoVpcLink
(
na saída anterior). Você precisará dele para configurar a integração privada.gim7c3
-
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
daid
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 /
. 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-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. -
Configure a integração privada do tipo
HTTP_PROXY
e use o comandoput-integration
da seguinte forma:aws apigateway put-integration \ --rest-api-id
abcdef123
\ --resource-idskpp60rab7
\ --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-idgim7c3
Para uma integração privada, defina
connection-type
comoVPC_LINK
econnection-id
como o identificador daVpcLink
ou como uma variável de estágio que faça referência ao ID daVpcLink
. 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.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-idskpp60rab7
\ --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-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
.É 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.
-
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 comandocreate-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,
), use o comandoasf9d7
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/testComo 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 doVpcLink
, também pode chamar otest-invoke-method
para testar a chamada da API antes de implantá-la.