Configuración de una API de API Gateway con integraciones privadas a través de la AWS CLI
Antes de crear una API con la integración privada, debe haber configurado el recurso de VPC y haber creado y configurado un Network Load Balancer con el origen de la VPC como el objetivo. Si no se cumplen los requisitos, siga Configuración de un Network Load Balancer para integraciones privadas de API Gateway para instalar el recurso de VPC, crear un Network Load Balancer y definir el recurso de VPC como objetivo del Network Load Balancer.
nota
El Network Load Balancer y la API deben pertenecer a la misma cuenta de AWS.
Para crear y administrar un VpcLink
, también debe haber configurado los permisos correspondientes. Para obtener más información, consulte Concesión de permisos para crear un enlace VPC.
nota
Solo necesita los permisos para crear un VpcLink
en la API. No necesita los permisos para utilizar el VpcLink
.
Una vez que haya creado el Network Load Balancer, anote su ARN. Lo necesitará para crear un enlace VPC para la integración privada.
Para configurar una API con integración privada a través de la AWS CLI
-
Cree un enlace
VpcLink
que tenga como destino el 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
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 comprobarlo llamando al siguiente comando de la CLI: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 Network Load Balancer que ya está asociado a un punto de enlace de la 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
id
del enlaceVpcLink
creado (
en la salida anterior). Lo necesitará para configurar la integración privada.gim7c3
-
Configure una API creando un recurso
RestApi
de API Gateway:aws apigateway create-rest-api --name 'My VPC Link Test'
Anote el valor
id
deRestApi
del resultado devuelto. Necesitará este valor para realizar otras operaciones en la API.A efectos de esta explicación, crearemos una API con un solo método
GET
en el recurso raíz (/
) y lo integraremos conVpcLink
. -
Configure el método
GET /
. En primer lugar, obtenga el identificador del recurso raíz (/
):aws apigateway get-resources --rest-api-id
abcdef123
En la salida, anote el valor
id
de la ruta de acceso/
. En este ejemplo, supondremos que es
.skpp60rab7
Cree la solicitud del método de la AP
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
. Aquí, utilizaremos la integración de proxy. -
Configure la integración privada de tipo
HTTP_PROXY
y llame al comandoput-integration
tal y como se indica a continuació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 las integraciones privadas, establezca
connection-type
enVPC_LINK
yconnection-id
en el identificador deVpcLink
o en una variable de etapa que haga referencia al ID deVpcLink
. El parámetrouri
no se utiliza para direccionar las solicitudes al punto de enlace, sino para configurar el encabezadoHost
y validar el certificado.El comando devuelve el siguiente resultado:
{ "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": [] }
Al utilizar una variable de etapa, la propiedad
connectionId
queda definida al crear 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-id "\${stageVariables.vpcLinkId}"No olvide utilizar comillas dobles en la expresión de la variable de etapa (
${stageVariables.vpcLinkId}
) y utilizar caracteres de escape con$
.Si lo desea, también puede actualizar la integración para restablecer el valor
connectionId
con una variable de etapa: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
.Puede usar una variable de etapa para integrar la API con una VPC o equilibrador de carga de red diferente restableciendo el valor de la variable de etapa de
VpcLink
.Como hemos utilizado la integración de proxy privada, ahora la API está lista para la implementación y para que la prueba se ejecute. En las integraciones que no son de proxy, también debe configurar la respuesta del método y la integración, al igual que haría al configurar una API con integraciones personalizadas de HTTP.
-
Para probar la API, impleméntela. Esto es necesario si ha utilizado la variable de etapa como marcador del ID de
VpcLink
. Para implementar la API con una variable de etapa, llame al comandocreate-deployment
tal y como se muestra a continuación: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,
), llame al comandoasf9d7
update-stage
:aws apigateway update-stage \ --rest-api-id
abcdef123
\ --stage-name test \ --patch-operations op=replace,path='/variables/vpcLinkId',value='asf9d7
'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 escribir la URL de invocación de la API en un navegador web para ver los resultados.
Si codifica la propiedad
connection-id
con el literal del ID deVpcLink
, también puede llamar atest-invoke-method
para probar la invocación de la API antes de implementarla.