En el siguiente tutorial se muestra cómo utilizar la AWS CLI para crear un enlace de VPC y una integración privada. Los siguientes requisitos previos son necesarios:
-
Es necesario haber creado y configurado un Equilibrador de carga de red con el origen de la VPC como el objetivo. Para obtener más información, consulte Configuración de un Network Load Balancer para integraciones privadas de API Gateway. Este debe estar en la misma Cuenta de AWS que la API. Necesita el ARN del Equilibrador de carga de red para crear el enlace de la VPC.
-
Para crear y administrar un
VpcLink
, necesita los permisos necesarios para crear unVpcLink
en la API. No necesita los permisos para utilizar elVpcLink
. Para obtener más información, consulte Concesión de permisos para API Gateway para crear un enlace de VPC.
Para configurar una API con integración privada a través de la AWS CLI
-
Utilice el siguiente comando create-vpc-link para crear un
VpcLink
que apunte al equilibrador de carga de red 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
El resultado de este comando confirma la recepción de la solicitud y muestra el estado
PENDING
paraVpcLink
que se está creando.{ "status": "PENDING", "targetArns": [ "arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/net/my-vpclink-test-nlb/1234567890abcdef" ], "id": "gim7c3", "name": "my-test-vpc-link" }
API Gateway tarda de 2 a 4 minutos en completar la creación de
VpcLink
. Si la operación finaliza correctamente, el valor destatus
esAVAILABLE
. Puede verificarlo llamando al siguiente comando get-vpc-link:aws apigateway get-vpc-link --vpc-link-id
gim7c3
Si se produce un error en la operación, obtendrá el estado
FAILED
ystatusMessage
contendrá el mensaje de error. Por ejemplo, si intenta crear un enlaceVpcLink
con un equilibrador de carga de red que ya está asociado a un punto de conexión de VPC, obtendrá lo siguiente en la propiedadstatusMessage
:"NLB is already associated with another VPC Endpoint Service"
Después de que se cree
VpcLink
correctamente, puede crear una API e integrarla con el recurso de la VPC a través deVpcLink
.Anote el valor de
id
delVpcLink
recién creado. En este resultado de ejemplo, esgim7c3
. Lo necesitará para configurar la integración privada. -
Utilice el siguiente comando create-rest-api para crear un recurso
RestApi
de API Gateway:aws apigateway create-rest-api --name 'My VPC Link Test'
Anote el valor de
id
deRestApi
y el valor derootResourceId
deRestApi
del resultado devuelto. Necesitará este valor para realizar otras operaciones en la API.A continuación, cree una API con solo un método
GET
en el recurso raíz (/
) e integre el método con elVpcLink
. -
Utilice el siguiente comando put-method para crear el método
GET /
:aws apigateway put-method \ --rest-api-id
abcdef123
\ --resource-idskpp60rab7
\ --http-method GET \ --authorization-type "NONE"Si no utiliza la integración de proxy con
VpcLink
, también debe configurar al menos un método de respuesta del código de estado200
. En este caso, utilizará la integración de proxy. -
Tras crear el método
GET /
, se configura la integración. En el caso de una integración privada, se utiliza el parámetroconnection-id
para proporcionar el ID deVpcLink
. Puede utilizar una variable de fase o ingresar directamente el ID deVpcLink
. El parámetrouri
no se utiliza para direccionar las solicitudes al punto de conexión, sino para configurar el encabezadoHost
y validar el certificado.Utilice el siguiente comando put-integration para usar el ID de
VpcLink
directamente en la integración: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
En cualquier momento, también puede actualizar la integración para cambiar el
connection-id
. Utilice el siguiente comando update-integration para actualizar su integración:aws apigateway update-integration \ --rest-api-id
abcdef123
\ --resource-idskpp60rab7
\ --http-method GET \ --patch-operations '[{"op":"replace","path":"/connectionId","value":"${stageVariables.vpcLinkId}"}]'No olvide utilizar una lista JSON con forma de cadena como valor del parámetro
patch-operations
.Puesto que ha utilizado la integración de proxy privada, ahora la API está lista para la implementación y ejecuciones de pruebas.
-
Si usó la variable de etapa para definir el
connection-id
, necesita implementar la API para probarla. Utilice el siguiente comando create-deployment para implementar la API con una variable de etapa:aws apigateway create-deployment \ --rest-api-id
abcdef123
\ --stage-name test \ --variables vpcLinkId=gim7c3
Para actualizar la variable de etapa con un ID de
VpcLink
diferente (por ejemplo,
), utilice el siguiente comando update-stage:asf9d7
aws apigateway update-stage \ --rest-api-id
abcdef123
\ --stage-name test \ --patch-operations op=replace,path='/variables/vpcLinkId',value='asf9d7
'Si codifica la propiedad
connection-id
con el literal del ID deVpcLink
, no necesita implementar la API para probarla. Use el comando test-invoke-method para probar la API antes de implementarla. -
Use los siguientes comandos para invocar la API:
curl -X GET https://
abcdef123
.execute-api.us-east-2.amazonaws.com/testSi lo desea, también puede ingresar la URL de invocación de la API en un navegador web para ver los resultados.