amazon api gateway - aws documentation€¦ · descargar la definición de swagger de la api con...

644
Amazon API Gateway Developer Guide

Upload: lehanh

Post on 08-Aug-2018

255 views

Category:

Documents


0 download

TRANSCRIPT

  • Amazon API GatewayDeveloper Guide

  • Amazon API Gateway Developer Guide

    Amazon API Gateway: Developer GuideCopyright 2018 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

    Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any mannerthat is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other trademarks notowned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to, or sponsored byAmazon.

  • Amazon API Gateway Developer Guide

    Table of ContentsQu es Amazon API Gateway? .......................................................................................................... 1

    Gateway hasta la nube de AWS y ms all .................................................................................... 1Parte de la infraestructura sin servidor de AWS ...................................................................... 2

    Experiencias del desarrollador ...................................................................................................... 2Creacin y administracin de una API de API Gateway ............................................................ 2Llamada a una API de API Gateway ..................................................................................... 3

    Ventajas de API Gateway ............................................................................................................ 3Conceptos de API Gateway ......................................................................................................... 3Precios de API Gateway .............................................................................................................. 6

    Introduccin ....................................................................................................................................... 7Preprese para desarrollar una API de API Gateway ....................................................................... 7

    Inscribirse en una cuenta de AWS ........................................................................................ 7Crear usuarios, grupos, roles y polticas de IAM en su cuenta de AWS ...................................... 8Cree polticas de IAM para configurar los recursos de API Gateway y para llamar a una APIimplementada ..................................................................................................................... 8Paso siguiente .................................................................................................................. 10

    Desarrollar una API a partir de un ejemplo ................................................................................... 10Creacin y comprobacin de una API de ejemplo en la consola ............................................... 11Paso siguiente .................................................................................................................. 18Vase tambin ................................................................................................................. 19

    Desarrollar una API con la integracin de Lambda ......................................................................... 19Desarrollar una API con la integracin de proxy de Lambda .................................................... 20Desarrollo de una API con integracin de proxy de Lambda entre cuentas ................................. 28Desarrollar una API con integracin de Lambda personalizada ................................................ 30

    Desarrollar una API con integraciones HTTP ............................................................................... 40Desarrollar una API con la integracin de proxy HTTP ........................................................... 40Desarrollar una API con integracin HTTP personalizada ........................................................ 46

    Creacin de una API con integracin privada ................................................................................ 76Desarrollar una API con integracin AWS ..................................................................................... 78

    Requisitos previos ............................................................................................................. 79Paso 1: Crear el recurso .................................................................................................... 79Paso 2: Crear el mtodo GET ............................................................................................ 79Paso 3: Crear el rol de ejecucin del proxy de servicio de AWS ............................................... 79Paso 4: Especificar la configuracin del mtodo y probar el mtodo .......................................... 81Paso 5: Implementar la API ................................................................................................ 82Paso 6: Probar la API ....................................................................................................... 82Paso 7: Eliminacin .......................................................................................................... 82

    Crear una API .................................................................................................................................. 84Elegir un tipo de punto de enlace para configurar una API .............................................................. 85Inicializar la configuracin de una API .......................................................................................... 85

    Configurar una API con la consola de API Gateway ............................................................... 86Configurar una API optimizada para lmites mediante comandos de AWS CLI ............................. 86Configurar una API optimizada para lmites con el SDK de AWS para Node.js ........................... 91Configurar una API optimizada para lmites mediante la API REST de API Gateway .................... 97Configurar una API optimizada para lmites importando definiciones de Swagger ....................... 105Configuracin de una API regional ..................................................................................... 106Creacin de una API privada ............................................................................................ 109

    Configurar mtodos de API ...................................................................................................... 116Configurar una solicitud de mtodo .................................................................................... 117Configurar respuestas de mtodo ...................................................................................... 124Configurar un mtodo con la consola ................................................................................. 126

    Configuracin de integraciones de API ....................................................................................... 130Configurar una solicitud de integracin ............................................................................... 130Configuracin de una respuesta de integracin .................................................................... 137

    iii

  • Amazon API Gateway Developer Guide

    Configuracin de integraciones Lambda ............................................................................ 138Configurar integraciones HTTP ........................................................................................ 155Configuracin de las integraciones privadas ........................................................................ 159Configurar integraciones simuladas .................................................................................... 166

    Configurar respuestas de gateway ............................................................................................. 169Respuestas de gateway en API Gateway ........................................................................... 169Tipos de respuestas de gateway ....................................................................................... 170Configurar una respuesta de gateway con la consola de API Gateway ..................................... 173Configurar una respuesta de gateway con la API REST de API Gateway ................................. 175Configurar la personalizacin de respuestas de gateway en Swagger ...................................... 175

    Configuracin de la asignacin de datos ..................................................................................... 175Configuracin de mapeo de datos de solicitud y respuesta mediante la consola ......................... 176Creacin de modelos y plantillas de asignacin ................................................................... 178Referencia de asignacin de datos de solicitud y respuesta ................................................... 206Referencia de la plantilla de asignacin .............................................................................. 210

    Compatibilidad con cargas binarias ........................................................................................... 220Conversiones de tipo de contenido en API Gateway ............................................................. 221Habilitar la compatibilidad con datos binarios mediante la consola de API Gateway .................... 224Habilitar la compatibilidad con datos binarios mediante la API REST de API Gateway ................. 228Importar y exportar codificaciones de contenido ................................................................... 232Ejemplos de compatibilidad con datos binarios .................................................................... 232

    Activacin de la compresin de carga ........................................................................................ 239Activacin de la compresin en una API ............................................................................. 240Invocacin de un mtodo con una carga comprimida ............................................................ 242Recepcin de una respuesta con una carga comprimida ....................................................... 243

    Habilitar la validacin de solicitudes ........................................................................................... 244Descripcin general de la validacin bsica de solicitudes en API Gateway .............................. 245Configurar la validacin bsica de solicitudes en API Gateway ............................................... 245Probar la validacin bsica de solicitudes en API Gateway .................................................... 250Definiciones de Swagger de una API de ejemplo con la validacin bsica de solicitudes ............. 253

    Actualizar y mantener una API .................................................................................................. 256Cambiar el tipo de punto de enlace de una API pblica o privada ........................................... 257Mantener una API con la consola ...................................................................................... 260

    Importar una API ..................................................................................................................... 262Importacin de una API optimizada para lmites ................................................................... 262Importacin de una API regional ....................................................................................... 263Importacin de un archivo Swagger para actualizar una definicin de la API existente ................ 264Establecimiento de la propiedad de Swagger basePath ....................................................... 266Errores y advertencias durante la importacin ..................................................................... 268

    Control del acceso a una API ........................................................................................................... 269Uso de polticas de recursos de API Gateway ............................................................................. 269

    Informacin general del lenguaje de polticas de acceso de Amazon API Gateway ..................... 270Ejemplos de polticas de recursos de API Gateway .............................................................. 271Creacin y asociacin de una poltica de recursos de API Gateway a una API .......................... 274Interacciones entre las polticas de recursos de API Gateway y las polticas de IAM ................... 276Claves de condicin de AWS que se pueden utilizar en los recursos de polticas de API Gateway . 277

    Usar permisos de IAM ............................................................................................................. 278Modelo de permisos de API Gateway para crear y administrar una API ................................... 279Modelo de permisos de API Gateway para invocar una API .................................................. 279Controlar el acceso para administrar una API ..................................................................... 280Control del acceso entre cuentas a una API ........................................................................ 283Controlar el acceso para invocar una API .......................................................................... 285Ejemplos de poltica de IAM para administrar las API de API Gateway ..................................... 288Ejemplos de poltica de IAM para permisos de ejecucin de la API ......................................... 292Crear y asociar una poltica a un usuario de IAM ................................................................. 293

    Habilitar CORS para un recurso ................................................................................................ 295Requisitos previos ........................................................................................................... 296

    iv

  • Amazon API Gateway Developer Guide

    Habilitar CORS mediante la consola .................................................................................. 296Habilitar CORS mediante una definicin de Swagger ............................................................ 298

    Uso de autorizadores de Lambda .............................................................................................. 299Tipos de autorizadores de Lambda de API Gateway ............................................................. 300Creacin de una funcin de Lambda del autorizador de Lambda ............................................ 301Entrada de un autorizador de Lambda ............................................................................... 305Salida de un autorizador de Lambda de Amazon API Gateway ............................................... 306Configuracin de un autorizador de Lambda ....................................................................... 308Cmo llamar a una API con autorizadores de Lambda .......................................................... 310Configuracin de un autorizador de Lambda entre las cuentas ............................................... 313

    Usar grupos de usuarios de Amazon Cognito .............................................................................. 314Obtencin de permisos para crear autorizadores del grupo de usuarios ................................... 315Crear un grupo de usuarios de Amazon Cognito .................................................................. 317Integrar una API con un grupo de usuarios ......................................................................... 317Llamar a una API integrada con un grupo de usuarios .......................................................... 321

    Usar certificados SSL del lado cliente ........................................................................................ 322Generar un certificado cliente mediante la consola de API Gateway ........................................ 323Configurar una API para que use certificados SSL ............................................................... 323Test Invoke para verificar la configuracin del certificado cliente ............................................. 324Configuracin del servidor HTTPS backend para verificar el certificado cliente .......................... 326Rotar un certificado cliente que va a caducar ...................................................................... 326Entidades de certificacin compatibles para las integraciones HTTP y Proxy HTTP .................... 327

    Utilizacin de planes de uso con claves de API ........................................................................... 343Qu son los planes de uso y las claves de API? ................................................................ 344Pasos para configurar un plan de uso ................................................................................ 344Eleccin de un origen de clave de API ............................................................................... 345Configurar claves de API mediante la consola de API Gateway .............................................. 346Crear, configurar y probar los planes de uso con la consola de API Gateway ............................ 349Configurar claves de API mediante la API REST de API Gateway ........................................... 354Creacin, configuracin y prueba de planes de uso con la CLI y la API REST de API Gateway ..... 354Formato de archivo de clave de API de API Gateway ........................................................... 359

    Documentacin de una API .............................................................................................................. 360Representacin de la documentacin de la API en API Gateway .................................................... 360

    Piezas de la documentacin ............................................................................................. 360Versiones de la documentacin ......................................................................................... 368

    Documentar una API mediante la consola de API Gateway .......................................................... 368Documentar la entidad API .............................................................................................. 369Documentar una entidad RESOURCE .................................................................................. 371Documentar una entidad METHOD ...................................................................................... 371Documentar una entidad QUERY_PARAMETER ...................................................................... 372Documentar una entidad PATH_PARAMETER ........................................................................ 373Documentar una entidad REQUEST_HEADER ...................................................................... 373Documentar una entidad REQUEST_BODY ........................................................................... 374Documentar una entidad RESPONSE .................................................................................. 374Documentar una entidad RESPONSE_HEADER ...................................................................... 375Documentar una entidad RESPONSE_BODY ......................................................................... 375Documentar una entidad MODEL ........................................................................................ 375Documentar una entidad AUTHORIZER ............................................................................... 376

    Documentar una API mediante la API REST de API Gateway ....................................................... 377Documentar la entidad API .............................................................................................. 377Documentar una entidad RESOURCE .................................................................................. 378Documentar una entidad METHOD ...................................................................................... 381Documentar una entidad QUERY_PARAMETER ...................................................................... 383Documentar una entidad PATH_PARAMETER ........................................................................ 384Documentar una entidad REQUEST_BODY ........................................................................... 385Documentar una entidad REQUEST_HEADER ........................................................................ 386Documentar una entidad RESPONSE .................................................................................. 387

    v

  • Amazon API Gateway Developer Guide

    Documentar una entidad RESPONSE_HEADER ...................................................................... 388Documentar una entidad AUTHORIZER ............................................................................... 388Documentar una entidad MODEL ........................................................................................ 389Actualizar piezas de documentacin ................................................................................... 391Mostrar piezas de documentacin ...................................................................................... 392

    Publicar la documentacin de API ............................................................................................. 392Crear una snapshot de documentacin y asociarla a una etapa de API .................................... 392Crear una snapshot de documentacin ............................................................................... 393Actualizar una snapshot de documentacin ......................................................................... 393Obtener una snapshot de documentacin ........................................................................... 393Asociar un snapshot de documentacin con una etapa de API ............................................... 394Descargar una snapshot de documentacin asociada a una etapa .......................................... 394

    Importar la documentacin de API ............................................................................................. 397Importar piezas de documentacin mediante la API REST de API Gateway .............................. 398Importar piezas de documentacin mediante la consola de API Gateway ................................. 400

    Controlar el acceso a la documentacin de la API ........................................................................ 400Implementar una API ....................................................................................................................... 401

    Crear una implementacin ........................................................................................................ 402Creacin de una implementacin con AWS CLI ................................................................... 402Implementar una API desde la consola .............................................................................. 403

    Configuracin de una etapa ...................................................................................................... 404Configuracin de una etapa a travs de la consola de API Gateway ........................................ 405Limitar las solicitudes de la API ......................................................................................... 408Habilitar el almacenamiento en cach de la API .................................................................. 411Configuracin de los registros de API ................................................................................ 415Configurar variables de etapa ........................................................................................... 418Configuracin de etiquetas en una etapa de API .................................................................. 428

    Configuracin de la implementacin de una versin Canary ........................................................... 431Implementacin de la versin Canary en API Gateway .......................................................... 431Creacin de una implementacin de la versin Canary ......................................................... 432Actualizacin de una versin Canary .................................................................................. 439Promocin de una versin Canary ..................................................................................... 442Desactivacin de una versin Canary ................................................................................. 446

    Exportar una API .................................................................................................................... 448Solicitar la exportacin de una API .................................................................................... 448Descargar la definicin de Swagger de la API en JSON ........................................................ 449Descargar la definicin de Swagger de la API en YAML ........................................................ 449Descargar la definicin de Swagger de la API con extensiones Postman en JSON ..................... 449Descargar la definicin de Swagger de la API con integracin de API Gateway en YAML ............ 449Exportar la API mediante la consola de API Gateway ........................................................... 450

    Generar el SDK de una API ..................................................................................................... 450Generar los SDK para una API mediante la consola de API Gateway ...................................... 451Creacin de SDK para una API a travs de los comandos de la AWS CLI ................................ 453Funcin de Lambda de calculadora sencilla ........................................................................ 455API de calculadora sencilla en API Gateway ....................................................................... 456Definicin de Swagger de la API de calculadora sencilla ....................................................... 461

    Configuracin del nombre de dominio personalizado de una API .................................................... 466Preparar certificados en AWS Certificate Manager ............................................................... 468Cmo crear un nombre de dominio personalizado optimizado para lmites ................................ 471Configuracin de un nombre de dominio personalizado regional ............................................. 477Migracin de nombres de dominio personalizados ................................................................ 482

    Vender su API como SaaS ....................................................................................................... 489Inicializar la integracin de AWS Marketplace con API Gateway ............................................. 489Administrar la suscripcin de clientes a planes de uso .......................................................... 491

    Invocacin de una API ..................................................................................................................... 493Obtener la URL Invoke de una API en la consola de API Gateway .................................................. 494Usar la consola para probar un mtodo ...................................................................................... 494

    vi

  • Amazon API Gateway Developer Guide

    Requisitos previos ........................................................................................................... 494Probar un mtodo con la consola de API Gateway ............................................................... 494

    Usar Postman para llamar a una API ......................................................................................... 495Llamar a una API a travs de SDK generados ............................................................................ 496

    Utilice un SDK de Java generado por API Gateway .............................................................. 496Usar un SDK de Android generado por API Gateway ........................................................... 499Usar un SDK de JavaScript generado por API Gateway ........................................................ 501Utilice un SDK de Ruby generado por API Gateway ............................................................. 503Usar un SDK de iOS generado por API Gateway en Objective-C o Swift .................................. 505

    Llamar al API a travs de la biblioteca de JavaScript de AWS Amplify ............................................. 514Rastrear la administracin y la invocacin de la API ..................................................................... 514

    Registrar llamadas de administracin de la API con CloudTrail ............................................... 515Monitorizar API execution con Amazon CloudWatch ............................................................. 516

    Extensiones de Swagger .................................................................................................................. 523x-amazon-apigateway-any-method ..................................................................................... 523

    Ejemplo de x-amazon-apigateway-any-method ..................................................................... 524x-amazon-apigateway-api-key-source .............................................................................. 524

    Ejemplo de x-amazon-apigateway-api-key-source ................................................................. 524x-amazon-apigateway-authorizer ..................................................................................... 525

    Ejemplos de x-amazon-apigateway-authorizer ...................................................................... 526x-amazon-apigateway-authtype ......................................................................................... 528

    Ejemplo de x-amazon-apigateway-authtype ......................................................................... 528Vase tambin ................................................................................................................ 529

    x-amazon-apigateway-binary-media-type ..................................................................................... 529Ejemplo de x-amazon-apigateway-binary-media-types ........................................................... 529

    x-amazon-apigateway-documentation ......................................................................................... 529Ejemplo de x-amazon-apigateway-documentation ................................................................. 529

    x-amazon-apigateway-gateway-responses ................................................................................... 530Ejemplo de x-amazon-apigateway-gateway-responses .......................................................... 530

    x-amazon-apigateway-gateway-responses.gatewayResponse ......................................................... 530Ejemplo de x-amazon-apigateway-gateway-responses.gatewayResponse ................................ 531

    x-amazon-apigateway-gateway-responses.responseParameters ..................................................... 531Ejemplo de x-amazon-apigateway-gateway-responses.repsonseParameters ............................. 532

    x-amazon-apigateway-gateway-responses.responseTemplates ....................................................... 532Ejemplo de x-amazon-apigateway-gateway-responses.responseTemplates ............................... 532

    x-amazon-apigateway-integration ................................................................................... 533Ejemplo de x-amazon-apigateway-integration ...................................................................... 535

    x-amazon-apigateway-integration.requestTemplates ...................................................................... 536Ejemplo de x-amazon-apigateway-integration.requestTemplates ............................................. 537

    x-amazon-apigateway-integration.requestParameters .................................................................... 537x-amazon-apigateway-integration.requestParameters Ejemplo .............................. 537

    x-amazon-apigateway-integration.responses ................................................................................ 538x-amazon-apigateway-integration.responses Ejemplo ............................................. 538

    x-amazon-apigateway-integration.response .................................................................................. 539x-amazon-apigateway-integration.response Ejemplo ............................................... 540

    x-amazon-apigateway-integration.responseTemplates ................................................................... 540Ejemplo de x-amazon-apigateway-integration.responseTemplate ............................................ 541

    x-amazon-apigateway-integration.responseParameters .................................................................. 541x-amazon-apigateway-integration.responseParameters Ejemplo ............................. 541

    x-amazon-apigateway-request-validator ....................................................................................... 542x-amazon-apigateway-request-validator Ejemplo .................................................... 542

    x-amazon-apigateway-request-validators ..................................................................................... 542x-amazon-apigateway-request-validators Ejemplo ................................................... 543

    x-amazon-apigateway-request-validators.requestValidator .............................................................. 543x-amazon-apigateway-request-validators.requestValidator Ejemplo ................... 544

    Ejemplos y tutoriales ....................................................................................................................... 545Crear una API para funciones de Lambda .................................................................................. 545

    vii

  • Amazon API Gateway Developer Guide

    Configurar un rol y una poltica de IAM para que una API invoque funciones de Lambda ............. 547Crear una funcin de Lambda en el backend ...................................................................... 547Crear recursos de API para la funcin de Lambda ............................................................... 549Crear un mtodo GET con parmetros de consulta para llamar a la funcin de Lambda ............. 549Crear un mtodo POST con una carga JSON para llamar a la funcin de Lambda .................... 553Crear un mtodo GET con parmetros de ruta para llamar a la funcin de Lambda ................... 555Definiciones de Swagger de una API de ejemplo para una funcin de Lambda .......................... 560

    Crear una API como un proxy de Amazon S3 ............................................................................. 564Configurar permisos de IAM para que la API invoque acciones de Amazon S3 .......................... 565Crear recursos de API para representar recursos de Amazon S3 ............................................ 566Exponer un mtodo de API para mostrar los buckets de Amazon S3 del intermediario ................ 567Exponer mtodos de API para tener acceso a un bucket de Amazon S3 .................................. 573Exponer mtodos de API para tener acceso a un objeto de Amazon S3 en un bucket ................. 576Llamar a la API mediante un cliente API REST ................................................................... 579Definiciones de Swagger de una API de ejemplo como un proxy de Amazon S3 ........................ 581

    Crear una API como un proxy de Amazon Kinesis ....................................................................... 590Crear un rol y una poltica de IAM para que la API tenga acceso a Kinesis ............................... 591Empezar a crear una API como un proxy de Kinesis ............................................................ 593Mostrar flujos en Kinesis .................................................................................................. 593Crear, describir y eliminar un flujo en Kinesis ...................................................................... 598Obtener registros y aadir registros a un flujo de Kinesis ...................................................... 603Definiciones de Swagger de una API de ejemplo como un proxy de Kinesis .............................. 614

    API REST de API Gateway .............................................................................................................. 621Lmites y problemas conocidos ......................................................................................................... 622

    Lmites de API Gateway ........................................................................................................... 622Lmites de API Gateway para configurar y ejecutar una API ................................................... 622Lmites de API Gateway para crear, implementar y administrar una API ................................... 624

    Problemas conocidos ............................................................................................................... 625Historial de revisin ......................................................................................................................... 628

    Actualizaciones anteriores ........................................................................................................ 629AWS Glossary ................................................................................................................................ 636

    viii

  • Amazon API Gateway Developer GuideGateway hasta la nube de AWS y ms all

    Qu es Amazon API Gateway?Amazon API Gateway es un servicio de AWS que permite a los desarrolladores crear, publicar, mantener,monitorizar y proteger API a cualquier escala. Puede crear API que accedan a AWS o a otros serviciosweb, as como los datos almacenados en la nube de AWS.

    Temas Gateway hasta la nube de AWS y ms all (p. 1) Experiencias del desarrollador (p. 2) Ventajas de API Gateway (p. 3) Conceptos de Amazon API Gateway (p. 3) Precios de API Gateway (p. 6)

    Gateway hasta la nube de AWS y ms allAPI Gateway puede considerarse un backplane en la nube para conectar los servicios de AWS y otrossitios web pblicos o privados. Proporciona interfaces de programacin de aplicaciones (API RESTful)coherentes para que las aplicaciones mviles y web accedan a los servicios de AWS.

    En el siguiente diagrama se muestra la arquitectura de API Gateway.

    En la prctica, API Gateway le permite crear, configurar y alojar una API RESTful para permitir quelas aplicaciones accedan a la nube de AWS. Por ejemplo, una aplicacin puede llamar a una API enAPI Gateway para cargar la informacin de gastos e ingresos anuales de un usuario a Amazon SimpleStorage Service o que Amazon DynamoDB, procese los datos de AWS Lambda para calcular el impuestoadeudado y enviar una declaracin de impuestos a travs del sitio web del IRS.

    1

    https://aws.amazon.com/what-is-cloud-computing/https://en.wikipedia.org/wiki/Backplanehttps://aws.amazon.com/http://docs.aws.amazon.com/apigateway/api-reference/resource/rest-api/http://docs.aws.amazon.com/AmazonS3/latest/dev/welcome.htmlhttp://docs.aws.amazon.com/AmazonS3/latest/dev/welcome.htmlhttp://docs.aws.amazon.com/amazondynamodb/latest/developerguide/welcome.htmlhttp://docs.aws.amazon.com/lambda/latest/dg/welcome.html

  • Amazon API Gateway Developer GuideParte de la infraestructura sin servidor de AWS

    Tal y como se muestra en el diagrama, una aplicacin (o aplicacin cliente) obtiene acceso medianteprogramacin a los servicios de AWS, o a un sitio web en Internet, a travs de una o varias API, alojadasen API Gateway. La aplicacin est en frontend de la API. Los servicios y sitios web de AWS integrados seencuentran en el backend de la API. En API Gateway, el frontend se encapsula mediante method requestsy method responses, y el backend se encapsula mediante integration requests y integration responses.

    Gracias a Amazon API Gateway, puede desarrollar una API para ofrecer a los usuarios una experiencia dedesarrollador integrada y coherente que permita desarrollar aplicaciones de AWS basadas en la nube.

    Parte de la infraestructura sin servidor de AWSJunto con AWS Lambda, API Gateway es la parte de la infraestructura sin servidor de AWS orientada a laaplicacin. Para que una aplicacin llame a los servicios de AWS disponibles pblicamente, puede utilizarLambda para interactuar con los servicios necesarios y exponer las funciones de Lambda a travs de losmtodos de API de API Gateway. AWS Lambda ejecuta el cdigo en una infraestructura informtica dealta disponibilidad. Realiza todos los procesos de ejecucin y administracin que necesitan los recursosinformticos. Para habilitar las aplicaciones sin servidor, API Gateway es compatible con las integracionesde proxy optimizadas (p. 134) con puntos de enlace AWS Lambda y HTTP.

    Experiencias del desarrolladorExisten dos tipos de desarrolladores que utilizan API Gateway: desarrolladores de aplicaciones ydesarrolladores de API.

    Un desarrollador de aplicaciones crea una aplicacin funcional para llamar a servicios de AWS invocandomtodos de API en API Gateway.

    Un desarrollador de API crea e implementa una API para habilitar la funcionalidad necesaria en APIGateway. El desarrollador de API debe ser un usuario de IAM en la cuenta de AWS que posee la API.

    El desarrollador de la aplicacin no necesita tener una cuenta de AWS, siempre que la API no requierapermisos de IAM o bien que admita la autorizacin de usuarios a travs de terceros proveedores deidentidad admitidos por la federacin de identidades de Amazon Cognito. Los proveedores de identidadincluyen a Amazon, el grupo de usuarios de Amazon Cognito, Facebook y Google.

    Creacin y administracin de una API de API GatewayPara crear, configurar e implementar una API, un desarrollador de API trabaja con el componente delservicio de API Gateway para administracin de la API, denominado apigateway. Cada API incluye unconjunto de recursos y mtodos. Un recurso es una entidad lgica a la que una aplicacin puede acceder atravs de una ruta de recursos.

    Por ejemplo, /incomes podra ser la ruta de un recurso que representa los ingresos del usuario dela aplicacin. Un recurso puede tener una o varias operaciones, las cuales definen los verbos HTTPcorrespondientes, por ejemplo, GET, POST PUT, PATCH y DELETE. Una combinacin de una ruta derecurso y una operacin identifica un mtodo de la API. Por ejemplo, un mtodo POST /incomes podraaadir una ganancia devengada por el intermediario y un mtodo GET /expenses podra consultar losgastos en los que ha incurrido el intermediario.

    Un mtodo se corresponde con una solicitud de la API REST enviada por el usuario de la API y larespuesta devuelta al usuario. La aplicacin no necesita saber dnde se almacenan y de dnde seobtienen los datos solicitados en el backend. La API se conecta con el backend por medio de solicitudesde integracin y respuestas de integracin.

    Por ejemplo, con DynamoDB como backend, el desarrollador de la API configura la solicitud de integracinpara reenviar la solicitud del mtodo de entrada al backend elegido. La configuracin incluye las

    2

    http://docs.aws.amazon.com/apigateway/api-reference/resource/method/http://docs.aws.amazon.com/apigateway/api-reference/resource/method-response/http://docs.aws.amazon.com/apigateway/api-reference/resource/integration/http://docs.aws.amazon.com/apigateway/api-reference/resource/integration-response/http://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html

  • Amazon API Gateway Developer GuideLlamada a una API de API Gateway

    especificaciones de accin de DynamoDB adecuadas y los roles y polticas de IAM necesarios, as comola transformacin de los datos de entrada correcta. El backend devuelve el resultado a API Gatewaycomo una respuesta de integracin. Para dirigir la respuesta de integracin a una respuesta de mtodoadecuada (de un determinado cdigo de estado HTTP) al cliente, puede configurar la respuesta deintegracin para que mapee los parmetros de respuesta necesarios desde la integracin del mtodo. Acontinuacin, si fuera necesario, convierta el formato de los datos de salida del backend al del frontend.API Gateway le permite definir un esquema o modelo de carga para facilitar la configuracin de la plantillade mapeo de cuerpo.

    Como desarrollador de API, puede crear y administrar una API mediante la consola de API Gateway taly como se describe en Introduccin a Amazon API Gateway (p. 7)o llamando a la API REST de APIGateway (p. 621). Existen varias maneras de llamar a esta API. Incluyen el uso de la interfaz de lnea decomandos (CLI) de AWS o un SDK de AWS. Tambin puede utilizar un cliente de API REST, por ejemplo,Postman, para realizar llamadas al API sin procesar. Adems, puede habilitar la creacin de la API conplantillas de AWS CloudFormation o Extensiones de API Gateway para Swagger (p. 523). Para obteneruna lista de las regiones en las que API Gateway est disponible, as como de los puntos de enlace delservicio de control asociados, consulte Regiones y puntos de enlace.

    Llamada a una API de API GatewayUn desarrollador de aplicaciones trabaja con el componente de servicio de API Gateway para ejecucinde la API, denominado execute-api, para invocar una API que se ha creado o implementado en APIGateway. La API creada expone las entidades de programacin subyacentes. Existen varias maneras dellamar a dicha API. Puede utilizar la consola de API Gateway para probar a invocar la API. Puede utilizarun cliente de API REST, por ejemplo, Curl o Postman, o un SDK generado por API Gateway para que laAPI invoque la API.

    Tenga en cuenta las diferencias entre los componentes de servicio apigateway y execute-api de APIGateway. Haga referencia al nombre del componente de servicio correspondiente al seleccionar uno, porejemplo, la configuracin de polticas de permisos de IAM para crear o llamar a una API.

    Ventajas de API GatewayAPI Gateway le ayuda a proporcionar backends de aplicaciones mviles y web robustos, seguros yescalables. API Gateway le permite conectar de forma segura aplicaciones web y mviles a la lgicaempresarial alojada en las API de AWS Lambda incluidas en Amazon EC2 u otros servicios webdisponibles pblicamente alojados dentro o fuera de AWS. Gracias a API Gateway, puede crear y utilizarlas API de servicios de backend. Por ejemplo, no es necesario desarrollar y mantener una infraestructuraque administre la autorizacin y el control del acceso, la administracin del trfico, la monitorizacin y losanlisis, la administracin de las versiones y la generacin de kits de desarrollo de software (SDK).

    API Gateway se ha diseado para los desarrolladores de aplicaciones web y mviles que deseanproporcionar un acceso seguro y de confianza a las API de backend desde aplicaciones mviles,aplicaciones web y aplicaciones de servidor creadas internamente o por el ecosistema de terceros. Lalgica empresarial incluida en las API puede proporcionarse mediante un punto de enlace disponiblepblicamente al que llamen los proxies de API Gateway o puede ejecutarse en su totalidad como unafuncin de Lambda.

    Conceptos de Amazon API GatewayAPI Gateway

    AWS es un servicio de API Gateway que admite lo siguiente:

    3

    https://en.wikipedia.org/wiki/Payload_(computing)http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-reference.htmlhttp://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_region

  • Amazon API Gateway Developer GuideConceptos de API Gateway

    1. Crear, implementar y administrar una interfaz de programacin de aplicaciones (API) RESTful paraexponer los puntos de enlace HTTP del backend, funciones AWS Lambda u otros servicios deAWS.

    2. invocar los mtodos de API expuestos a travs de los puntos de enlace HTTP del frontend.API de API Gateway

    Una coleccin de recursos y mtodos que se integran con puntos de enlace HTTP del backend,funciones de Lambda u otros servicios de AWS. La coleccin se puede implementar en una o msfases. Los mtodos de la API se invocan a travs de puntos de enlace HTTP del frontend que puedeasociar a un nombre de dominio personalizado registrado. Los permisos para invocar un mtodose conceden mediante roles y polticas de IAM o autorizadores de Lambda de API Gateway (queanteriormente se denominaban autorizadores personalizados). Una API puede presentar un certificadopara que el backend lo autentique. Normalmente, los recursos de la API estn organizados en un rbolde recursos de acuerdo con la lgica de la aplicacin. Cada recurso de la API puede exponer uno ovarios mtodos de la API que deben tener verbos HTTP nicos admitidos por API Gateway.

    Implementacin de API

    Una instantnea de un punto en el tiempo de los recursos y mtodos de la API de API Gateway. Paraque los clientes puedan utilizar la implementacin, esta debe asociarse a una o ms etapas de API.

    Desarrollador de la API

    Su cuenta de AWS que posee una implementacin de API Gateway (por ejemplo, un proveedor deservicios que tambin es compatible con el acceso mediante programacin).

    Puntos de enlace de API

    API de nombres de host de API Gateway, que se implementan en una regin especfica y que tienenel formato {rest-api-id}.execute-api.{region}.amazonaws.com. Se admiten los siguientestipos de puntos de enlace de API: Punto de enlace de API optimizada para lmites: el nombre de host predeterminado de una API de

    API Gateway implementada en la regin especificada utilizando una distribucin de CloudFront parafacilitar el acceso de los clientes, normalmente desde otras regiones de AWS. Las solicitudes de APIse dirigen al punto de presencia de CloudFront ms cercano, que normalmente mejora el tiempo deconexin para clientes en distintas ubicaciones geogrficas. Una API est optimizada para lmites sino se especifica de forma explcita su tipo de punto de enlace al crearla.

    Punto de enlace de API regional: el nombre de host de una API implementada en la reginespecificada y pensada para prestar servicio a clientes, como, por ejemplo, instancias EC2, de lamisma regin de AWS. Las solicitudes de API se dirigen directamente a la API Gateway especficade la regin sin pasar por ninguna distribucin de CloudFront. Para las solicitudes destinadasa la misma regin, existe un punto de enlace regional que evita el trayecto innecesario de ida yvuelta a una distribucin de CloudFront. Adems, puede aplicar el direccionamiento basado enlatencia a los puntos de enlace regionales para implementar una API en varias regiones con lamisma configuracin de punto de enlace de API regional, establecer el mismo nombre de dominiopersonalizado para cada API implementada y configurar registros de DNS basados en latencia enRoute53 para dirigir las solicitudes de los clientes a la regin que tiene la mnima latencia.

    Punto de enlace de API privada: permite a un cliente obtener acceso seguro a los recursos de unaAPI privada que se encuentra en una VPC. Las API privadas estn aisladas de la red pblica deInternet y solo se puede obtener acceso a ellas a travs de los puntos de enlace de la VPC de APIGateway a los que se les ha concedido acceso.

    Clave de API

    Una cadena alfanumrica que API Gateway utiliza para identificar un desarrollador de aplicacionesque utiliza su API. API Gateway puede generar claves de API en su nombre o usted puede importarlasdesde un archivo CSV. Puede utilizar claves de API junto con autorizadores de Lambda (p. 299) oplanes de uso (p. 343) para controlar el acceso a sus API.

    4

    http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-latencyhttp://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html#routing-policy-latency

  • Amazon API Gateway Developer GuideConceptos de API Gateway

    Propietario de API

    Consulte Desarrollador de la API (p. 4).Etapa de API

    Una referencia lgica a un estado del ciclo de vida de la API (por ejemplo, 'dev', 'prod', 'beta', 'v2'). Lasetapas de API se identifican por un ID y un nombre de etapa de API.

    Desarrolladores de aplicaciones

    Un creador de aplicaciones que puede tener o no una cuenta de AWS y que interacta con la API queusted, el desarrollador de API, ha implementado. Los desarrolladores de aplicaciones son sus clientes.Un desarrollador de aplicaciones suele identificarse por una clave de API (p. 4).

    Solicitud de integracin

    La interfaz interna de un mtodo de API en API Gateway, donde asigna los parmetros y el cuerpo deuna solicitud de mtodo a los formatos requeridos por el backend.

    Respuesta de integracin

    La interfaz interna de un mtodo de API en API Gateway, donde asigna los cdigos de estado, losencabezados y la carga que se reciben del backend al formato de respuesta que se devuelve a unaaplicacin cliente.

    Plantilla de asignacin

    Scripts, expresados en VTL (Velocity Template Language), para transformar un cuerpo de solicituddel formato de datos del frontend en el formato de datos del backend o para transformar un cuerpo desolicitud del formato de datos del backend en el formato de datos del frontend. Las plantillas de mapeose especifican en la solicitud de integracin o en la respuesta de integracin. Pueden hacer referenciaa datos disponibles en tiempo de ejecucin como contexto y variables de fase. Una transformacinde identidad se denomina como acceso directo. En un acceso directo, se transmite una carga talcual desde el cliente al backend por una solicitud. Para una respuesta, la carga se transmite desde elbackend al cliente.

    Solicitud de mtodo

    La interfaz pblica de un mtodo de API en API Gateway que define los parmetros y el cuerpo queun desarrollador de aplicaciones debe enviar en las solicitudes para acceder al backend a travs de laAPI.

    Respuesta de mtodo

    La interfaz pblica de una API que define los cdigos de estado, los encabezados y los modelos decuerpo que un desarrollador de aplicaciones debera esperar de API Gateway.

    Modelo

    Esquema de datos que especifica la estructura de datos de una solicitud o carga de respuesta. Esnecesario para generar un SDK con establecimiento inflexible de tipos de una API. Tambin se utilizapara validar la carga. Un modelo es cmodo para generar una plantilla de mapeo de muestra parainiciar la creacin de una plantilla de mapeo de produccin. Aunque es til, no se requiere para crearuna plantilla de asignacin.

    API privado

    Una API que se expone a travs de puntos de conexin de la VPC de tipo interfaz y est aislada de lared pblica de Internet

    Integracin privada

    Tipo de integracin de API Gateway que permite que un cliente tenga acceso a los recursos que seencuentran en una VPC del usuario a travs de un punto de enlace de una API privada sin exponer losrecursos a la red pblica de Internet.

    5

    http://velocity.apache.org/engine/devel/vtl-reference.html

  • Amazon API Gateway Developer GuidePrecios de API Gateway

    Integracin de proxy

    Una configuracin de integracin de API Gateway simplificada. Puede configurar una integracin deproxy como un tipo de integracin de proxy HTTP o como un tipo de integracin de proxy de Lambda.En el caso de la integracin de proxy HTTP, API Gateway transmite toda la solicitud y la respuestaentre el frontend y el backend HTTP. En el caso de la integracin de proxy de Lambda, API Gatewayenva toda la solicitud como una entrada a la funcin de Lambda del backend. A continuacin, APIGateway transforma el resultado de la funcin de Lambda en una respuesta HTTP del frontend. Laintegracin de proxy se utiliza normalmente con un recurso de proxy, que se representa mediante unavariable de ruta expansiva (por ejemplo, {proxy+}) combinada con un mtodo catch-all ANY.

    Plan de uso

    Un plan de uso (p. 343) ofrece a determinados clientes de la API acceso a una o ms APIimplementadas. Puede utilizar un plan de uso para configurar la limitacin controlada y los lmites decuota que se ejecutarn en claves de API de cliente individual.

    Precios de API GatewayPara obtener informacin general sobre los precios especficos de la regin de API Gateway, consultePrecios de Amazon API Gateway.

    A continuacin se enumeran las excepciones al esquema de precios generales:

    El almacenamiento en cach de API en Amazon API Gateway no est disponible en la Capa gratuita deAWS.

    Las llamadas a mtodos con el tipo de autorizacin de AWS_IAM, CUSTOM y COGNITO_USER_POOLS nose cobran si se producen errores de autorizacin o autenticacin.

    Las llamadas a mtodos que requieran claves de API no se cobrarn si faltan las claves de API o no sonvlidas.

    Las solicitudes limitadas por API Gateway no se cobran si la tasa de solicitudes o de rfagas supera loslmites preconfigurados.

    Las solicitudes de uso limitadas por el plan no se cobran si los lmites de tarifa o la cuota superan loslmites preconfigurados.

    6

    https://aws.amazon.com/api-gateway/pricing/http://docs.aws.amazon.com/apigateway/api-reference/resource/method/#authorizationType

  • Amazon API Gateway Developer GuidePreprese para desarrollar una API de API Gateway

    Introduccin a Amazon API GatewayCon Amazon API Gateway, puede ofrecer a sus clientes una interfaz de programacin coherente yescalable para tener acceso a tres tipos de puntos de enlace en el backend: invocacin de AWS Lambdafunciones, llamada a otros servicios de AWS y acceso a un sitio web o una pgina web HTTP. Para haceresto, debe crear una API de API Gateway que permita integrar cada mtodo de pago de API con un puntode enlace de backend. Cada punto de enlace de backend se asocia con un tipo de integracin. Paraobtener ms informacin acerca de los tipos de integracin de la API en API Gateway, consulte Seleccinde un tipo de integracin de la API en API Gateway (p. 133).

    Para empezar a utilizar Amazon API Gateway, presentamos los siguientes tutoriales prcticos para crear,implementar y probar API simples integradas con algunos backends de uso comn. Las API de ejemploutilizadas en los tutoriales demuestran lo que implica la implementacin de cada uno de los tipos deintegracin admitidos.

    Temas Preprese para desarrollar una API de API Gateway (p. 7) Desarrollar una API de API Gateway a partir de un ejemplo (p. 10) Desarrollar una API de API Gateway con integracin de Lambda (p. 19) Desarrollar una API de API Gateway con integraciones HTTP (p. 40) Creacin de una API con la integracin privada de API Gateway (p. 76) Desarrollar una API de API Gateway con integracin AWS (p. 78)

    Antes de empezar, utilice los siguientes procedimientos para configurar su entorno de desarrollo.

    Preprese para desarrollar una API de APIGateway

    Temas Inscribirse en una cuenta de AWS (p. 7) Crear usuarios, grupos, roles y polticas de IAM en su cuenta de AWS (p. 8) Cree polticas de IAM para configurar los recursos de API Gateway y para llamar a una API

    implementada (p. 8) Paso siguiente (p. 10)

    Antes de utilizar Amazon API Gateway por primera vez, debe tener una cuenta de AWS.

    Inscribirse en una cuenta de AWSSi no dispone de una cuenta de AWS, utilice el siguiente procedimiento para crearla.

    Para inscribirse en AWS

    1. Abra https://aws.amazon.com/ y elija Create an AWS Account.2. Siga las instrucciones en lnea.

    7

    https://aws.amazon.com/

  • Amazon API Gateway Developer GuideCrear usuarios, grupos, roles y

    polticas de IAM en su cuenta de AWS

    Para crear, configurar e implementar una API en API Gateway, debe contar con una poltica de AWSIdentity and Access Management adecuada. La poltica debe tener permisos de acceso para manipular losrecursos y las relaciones de enlace de API Gateway. Adems, puede establecer los permisos de IAM parapermitir que sus clientes de API llamen a la API en API Gateway. Para hacerlo, cree roles y polticas deIAM y, opcionalmente, usuarios o grupos en su cuenta de AWS, y establezca los roles y polticas de IAMen un usuario o grupo de IAM especificado.

    Crear usuarios, grupos, roles y polticas de IAM en sucuenta de AWSPara mejorar las prcticas de seguridad, debe crear un nuevo usuario de AWS Identity and AccessManagement (IAM) o utilizar un usuario existente en su cuenta de AWS. Luego obtiene acceso a APIGateway con las credenciales de ese usuario de IAM, en lugar de utilizar su cuenta raz de AWS.

    Para administrar el acceso de un usuario, cree un usuario de IAM y conceda al usuario permisos deacceso a API Gateway. Para crear un nuevo usuario de IAM, consulte Creating an IAM User.

    Para administrar el acceso de un grupo de usuarios, cree un grupo de IAM, conceda al grupo permisos deacceso a API Gateway y despus aada uno o varios usuarios de IAM al grupo. Para crear un grupo deIAM, consulte Creating IAM Groups.

    Para delegar el acceso a usuarios, aplicaciones o servicios especficos, cree un rol de IAM, aada losusuarios o grupos especificados al rol y conceda a los usuarios o grupos permisos de acceso a APIGateway. Para crear un rol de IAM, consulte Creating IAM Roles.

    Cuando configure su API, especifique el ARN de un rol de IAM para controlar el acceso a los mtodos dela API. Este ARN debe estar listo al crear una API.

    Cree polticas de IAM para configurar los recursos deAPI Gateway y para llamar a una API implementadaEn AWS, los permisos de acceso se establecen como polticas de IAM. AWS proporciona un conjuntode polticas de IAM preconfiguradas, conocidas como polticas administradas de AWS, para los serviciosde AWS individuales. Los usuarios de IAM individuales pueden crear polticas de IAM personalizadas,conocidas como polticas administradas por el cliente.

    Puede crear una poltica, un rol, un usuario o un grupo de IAM en la consola de IAMo al utilizar la AWS CLI o un SDK de AWS. Una vez creadas, las polticas de IAM seindican por sus ARN. El ARN de una poltica administrada por AWS posee el formatoarn:aws:iam::aws:policy/PolicyName. El ARN de una poltica administrada por un cliente posee elformato arn:aws:iam::123456789012:policy/PolicyName.

    Por ejemplo, la siguiente corresponde a una poltica administrada por AWS,denominada AmazonAPIGatewayAdministrator (arn:aws:iam::aws:policy/AmazonAPIGatewayAdministrator). Concede acceso completo para crear, configurar e implementaruna API en API Gateway:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apigateway:*" ], "Resource": "arn:aws:apigateway:*::/*"

    8

    http://docs.aws.amazon.com/apigateway/api-reference/resource/http://docs.aws.amazon.com/apigateway/api-reference/link-relation/http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_SettingUpUser.html#Using_CreateUser_consolehttp://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups_create.htmlhttp://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.htmlhttp://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html

  • Amazon API Gateway Developer GuideCree polticas de IAM para configurar los recursos deAPI Gateway y para llamar a una API implementada

    } ]}

    Para conceder los permisos a un usuario, asocie la poltica al usuario o a un grupo que contenga alusuario. Para obtener ms informacin, consulte Attaching Managed Policies.

    Asociar la poltica anterior a un usuario de IAM permite ("Effect":"Allow") al usuario actuar concualquier accin de API Gateway ("Action":["apigateway:*"]) en cualquier recurso de API Gateway(arn:aws:apigateway:*::/*) asociado con la cuenta de AWS del usuario.

    Para restringir al usuario de IAM para leer y crear documentacin de las API creadas, puedereemplazar el valor de la propiedad Action de "Action": ["apigateway:*"] a "Action":["apigateway:GET", "apigateway:POST"] y reemplazar el valor de la propiedad Resource de["apigateway:*"] a ["arn:aws:apigateway::123456789012:/restapis/*/documentation/*"]). Para obtener ms informacin, consulte Control del acceso a una API con permisos deIAM (p. 278).

    Para controlar la forma en que se invoca una API, la siguiente poltica de IAM administradade AWS de AmazonAPIGatewayInvokeFullAccess ( arn:aws:iam::aws:policy/AmazonAPIGatewayInvokeFullAccess) proporciona acceso completo para invocar cualquier parte deuna API en API Gateway:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": "arn:aws:execute-api:*:*:*" } ]}

    Para obtener informacin sobre cmo restringir a los usuarios de IAM para llamar a un conjunto especficode partes de API, consulte Control del acceso a una API con permisos de IAM (p. 278).

    Para conceder los permisos establecidos a un usuario, asocie la poltica al usuario o a un grupo quecontenga al usuario. Para asociar una poltica, consulte Attaching Managed Policies.

    En esta documentacin, utilizaremos polticas administradas siempre que sea posible. Para crear y utilizarlas polticas de IAM administradas por el cliente, consulte Working with Customer Managed Policies.

    Note

    Para completar los pasos anteriores, debe tener permisos para crear la poltica de IAM y asociarlaal usuario de IAM.

    Cuando se integra API Gateway con AWS Lambda u otro servicio de AWS, como Amazon Simple StorageService o Amazon Kinesis, tambin debe habilitar API Gateway como entidad de confianza para invocar unservicio de AWS en el backend. Para ello, cree un rol de IAM y adjunte una poltica de acceso especficadel servicio al rol. Esto se demuestra en el siguiente ejemplo para invocar una funcin de Lambda:

    { "Version": "2012-10-17", "Statement": [ {

    9

    http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-consolehttp://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-consolehttp://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html

  • Amazon API Gateway Developer GuidePaso siguiente

    "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "*" } ]}

    A continuacin, agregue la siguiente poltica de confianza para permitir que API Gateway llame a la funcinde Lambda del backend en nombre del usuario adjunto que se asigna al rol de IAM.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}

    Sin especificar esta relacin de confianza, a API Gateway se le niega el derecho de llamar al backend ennombre del usuario, incluso si se han concedido permisos al usuario para obtener acceso directamente albackend.

    Cuando se configura una API de API Gateway con roles y polticas de IAM para controlar el acceso de losclientes, el cliente debe firmar las solicitudes de la API con Signature Version 4. Como alternativa, puedeutilizar la AWS CLI o uno de los SDK de AWS para administrar la firma de solicitudes por usted. Paraobtener ms informacin, consulte Invocacin de una API en Amazon API Gateway (p. 493).

    Paso siguienteDespus de haberse inscrito para una cuenta de AWS y de haber creado los roles y las polticas deIAM requeridos, ya est listo para comenzar a utilizar API Gateway. Para crear su primera API sencillamediante un ejemplo en la consola de API Gateway, consulte Desarrollar una API de API Gateway a partirde un ejemplo (p. 10).

    Desarrollar una API de API Gateway a partir de unejemplo

    Para ayudarle a empezar con el flujo de trabajo bsico para desarrollar y probar una API de API Gateway,puede utilizar la consola de Amazon API Gateway para crear y probar una API sencilla con la integracinHTTP para un sitio web PetStore. La definicin de la API est preconfigurada como un archivo Swagger2.0. Despus de cargar la definicin de API en API Gateway, puede utilizar la consola de API Gatewaypara examinar la estructura bsica de API o simplemente implementar y probar la API.

    La API de ejemplo admite los siguientes mtodos para que un cliente obtenga acceso al sitio web debackend HTTP de http://petstore-demo-endpoint.execute-api.com/petstore/pets.

    GET /: para leer el acceso del recurso raz de la API que no se integra con ningn punto de enlace debackend. API Gateway responde con informacin general del sitio web PetStore. Este es un ejemplo deltipo de integracin MOCK.

    10

    http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html

  • Amazon API Gateway Developer GuideCreacin y comprobacin de una

    API de ejemplo en la consola

    GET /pets: para obtener acceso de lectura al recurso /pets de la API que se integra con el recurso/pets de backend asignado. El backend devuelve una pgina de mascotas disponibles en PetStore.Este es un ejemplo del tipo de integracin HTTP. La URL del punto de enlace de integracin es http://petstore-demo-endpoint.execute-api.com/petstore/pets.

    POST /pets: para obtener acceso de escritura al recurso /pets de la API que se integra con el recurso/petstore/pets de backend. Tras recibir una solicitud correcta, el backend agrega la mascotaespecificada a PetStore y devuelve el resultado al autor de la llamada. La integracin tambin es HTTP.

    GET /pets/{petId}: para obtener acceso de lectura a una mascota identificada por un valor petIdtal como se especifica en una ruta variable de la URL de solicitud de entrada. Este mtodo tambin tieneel tipo de integracin HTTP. El backend devuelve la mascota especificada que se encuentra en PetStore.La URL del punto de enlace HTTP del backend es http://petstore-demo-endpoint.execute-api.com/petstore/pets/n, donde n es un entero como identificador de la mascota consultada.

    La API admite el acceso a CORS a travs de los mtodos OPTIONS del tipo de integracin MOCK. APIGateway devuelve los encabezados solicitados que admiten el acceso a CORS.

    Temas Creacin y comprobacin de una API del ejemplo en la consola de API Gateway (p. 11) Paso siguiente (p. 18) Vase tambin (p. 19)

    Creacin y comprobacin de una API del ejemplo enla consola de API GatewayEl siguiente procedimiento le guiar por los pasos para crear y probar una API a partir de un ejemplomediante la consola de API Gateway.

    Para desarrollar y probar la API de ejemplo

    1. Inicie sesin en la consola de API Gateway en https://console.aws.amazon.com/apigateway.2. Aplique alguna de las siguientes acciones:

    a. Si esta es la primera API de la cuenta, elija Get Started en la pgina de bienvenida de la consolade API Gateway.

    Si se le solicitan pistas, elija OK para cerrarlas y continuar.b. Si esta no es su primera API, elija Create API en la pgina de inicio de las API de API Gateway:

    3. En Create new API, elija Examples API y, a continuacin, elija Import para crear la API de ejemplo.Para la primera API, la consola de API Gateway comienza con esta opcin de forma predeterminada.

    11

    https://console.aws.amazon.com/apigateway

  • Amazon API Gateway Developer GuideCreacin y comprobacin de una

    API de ejemplo en la consola

    Puede desplazarse por la definicin de Swagger para obtener informacin detallada sobre esta API deejemplo antes de elegir Import.

    4. La API recin creada se muestra de la siguiente forma:

    El panel Resources muestra la estructura de la API creada como un rbol de nodos. Los mtodos deAPI definidos en cada recurso son los extremos del rbol. Cuando se selecciona un recurso, todos susmtodos se muestran en el panel Methods situado a la derecha. Debajo de cada mtodo hay un breveresumen del mtodo, incluidos sus requisitos de URL de punto de enlace, tipo de autorizacin y clavede API.

    5. Para ver los detalles de un mtodo, para modificar su configuracin o para probar la invocacin delmtodo, elija el nombre del mtodo en la lista de mtodos o en el rbol de recursos. A continuacin,elegimos el POST /pets mtodo como ejemplo:

    12

  • Amazon API Gateway Developer GuideCreacin y comprobacin de una

    API de ejemplo en la consola

    El panel resultante Method Execution presenta una vista lgica de la estructura del mtodo (POST /pets) elegida y los comportamientos: Method Request y Method Response son la interfaz de la APIcon el frontend de la API (un cliente), mientras que Integration Request e Integration Response sonla interfaz de la API con el backend (http://petstore-demo-endpoint.execute-api.com/petstore/pets). Un cliente utiliza la API para obtener acceso a una caracterstica del backenda travs de Method Request. API Gateway traduce la solicitud del cliente, si fuera necesario, a unformato aceptable por el backend en Integration Request antes de reenviar la solicitud entrante albackend. La solicitud transformada se conoce como la solicitud de integracin. Del mismo modo, elbackend devuelve la respuesta a API Gateway en Integration Response. A continuacin, API Gatewayla dirige a Method Response antes de enviarla al cliente. De nuevo, si fuera necesario, API Gatewaypuede mapear los datos de la respuesta del backend a un formulario previsto por el cliente.

    En el caso del mtodo POST de recurso de API, la carga de la solicitud del mtodo puede transmitirsea travs de la solicitud de integracin sin modificacin si la carga de la solicitud de mtodo est en elmismo formato que la carga de la solicitud de integracin.

    La solicitud del mtodo GET / usa el tipo de integracin MOCK y no est vinculada a ningn puntode enlace de backend real. La Integration Response correspondiente est configurada para devolveruna pgina HTML esttica. Cuando se llama al mtodo, API Gateway simplemente acepta la solicitude inmediatamente devuelve la respuesta a la integracin configurada al cliente a travs de MethodResponse. Puede utilizar la integracin simulada para probar una API sin requerir un punto de enlacedel backend. Tambin puede utilizarla para servir una respuesta local generada partir de una plantillade mapeo de cuerpo de respuesta.

    Como desarrollador de la API, puede controlar los comportamientos de las interacciones del frontendde la API mediante la configuracin de la solicitud de mtodo y una respuesta de mtodo. Puedecontrolar los comportamientos de las interacciones del backend de la API mediante la configuracin dela solicitud de integracin y la respuesta de integracin. Estos comportamientos implican mapeos dedatos entre un mtodo y su integracin correspondiente. Explicaremos cmo configurar un mtodo en

    13

  • Amazon API Gateway Developer GuideCreacin y comprobacin de una

    API de ejemplo en la consola

    Desarrollar una API con integracin HTTP personalizada (p. 46). Por el momento, nos centraremosen probar la API para proporcionar una experiencia de usuario completa.

    6. Elija Test en Client (tal y como se muestra en la imagen anterior) para comenzar la prueba.Por ejemplo, para probar el mtodo POST /pets, escriba la siguiente carga {"type":"dog","price": 249.99} en Request Body antes de elegir el botn Test.

    14

  • Amazon API Gateway Developer GuideCreacin y comprobacin de una

    API de ejemplo en la consola

    15

  • Amazon API Gateway Developer GuideCreacin y comprobacin de una

    API de ejemplo en la consola

    La entrada especifica los atributos de la mascota que deseamos aadir a la lista de mascotas en elsitio web PetStore.

    7. El resultado es el siguiente:

    La entrada Logs de la salida muestra los cambios de estado de la solicitud del mtodo a la solicitud deintegracin y de la respuesta de integracin a la respuesta del mtodo. Esto puede resultar til parala resolucin de errores de asignacin que impidan que la solicitud se realice correctamente. En esteejemplo, el mapeo no se aplica: la carga de la solicitud de mtodo se transfiere a travs de la solicitud

    16

  • Amazon API Gateway Developer GuideCreacin y comprobacin de una

    API de ejemplo en la consola

    integracin al backend y, de forma parecida, la respuesta del backend se transfiere a travs de larespuesta de integracin al mtodo de respuesta.

    Para probar la API con un cliente distinto de la caracterstica test-invoke-request de API Gateway,primero debe implementar la API en una etapa.

    8. Para implementar la API de ejemplo, seleccione la API PetStore y, a continuacin, elija Deploy API enel men desplegable Actions.

    En Deploy API, para Deployment stage, elija [New Stage] porque esta es la primera implementacinde la API. Escriba un nombre (por ejemplo, test) n Stage name y, si lo desea, escriba lasdescripciones en Stage description y Deployment description. Elija Deploy.

    17

  • Amazon API Gateway Developer GuidePaso siguiente

    En el panel Stage Editor resultante, Invoke URL muestra la direccin URL para invocar la solicitud delmtodo GET / de la API.

    9. En Stage Editor, siga el enlace Invoke URL para enviar la solicitud del mtodo GET / en unnavegador. Una respuesta correcta devuelve el resultado, generado a partir de la plantilla de mapeode la respuesta de integracin.

    10. En el panel de navegacin Stages, expanda la etapa test, seleccione GET en /pets/{petId} y, a continuacin, copie el valor Invoke URL de https://api-id.execute-api.region.amazonaws.com/test/pets/{petId}. {petId} representa una variable de ruta.

    Pegue el valor de Invoke URL (obtenido en el paso anterior) en la barra de direcciones de unnavegador, sustituyendo {petId} por 1 (por ejemplo) y, a continuacin, pulse Intro para enviar lasolicitud. Debera devolverse una respuesta 200 OK con la siguiente carga JSON:

    { "id": 1, "type": "dog", "price": 249.99}

    Invocar el mtodo de la API tal como se muestra es posible porque su tipo Authorization estestablecido en NONE. Si usara la autorizacin de AWS_IAM, debera firmar la solicitud usando losprotocolos de Signature Version 4. Para ver un ejemplo de una solicitud de este tipo, consulteDesarrollar una API con integracin HTTP personalizada (p. 46).

    Paso siguienteA travs de la API de ejemplo, nos familiarizamos con el flujo de trabajo bsico para crear una API en APIGateway. El proceso se resume de la siguiente manera:

    1. Cree una API como recurso RestApi en su cuenta de AWS.

    18

    http://docs.aws.amazon.com/apigateway/api-reference/resource/rest-api/

  • Amazon API Gateway Developer GuideVase tambin

    2. Aada un recurso Resource a la jerarqua de Resources de la API creada recientemente.3. Cree un recurso Method para Resource. El mtodo de API representa una interfaz de programacin

    entre un cliente y API Gateway.4. Configure la integracin del mtodo con un punto de enlace de backend. La integracin representa una

    interfaz entre API Gateway y un punto de enlace de backend.

    Cuando un usuario obtiene acceso al servicio de backend a travs de la API, el cliente enva una solicitudde HTTP a API Gateway. Este envo comunica la solicitud a Method Request y luego a IntegrationRequest antes de alcanzar el backend. A continuacin, el backend devuelve una respuesta a APIGateway. Luego la repuesta se transmite de Integration Response a Method Response antesde que el cliente reciba la respuesta. Las integraciones MOCK demostrados en esta API de ejemplo sonprobablemente son los casos ms sencillos de preprocesamiento y postprocesamiento de solicitudes orespuestas por parte de API Gateway. En otros lugares de esta gua explicaremos otros casos.

    A continuacin, pasaremos a aprender cmo desarrollar y probar una API ms gil y potente conintegraciones de proxy (p. 139).

    Vase tambinUso de autorizadores de Lambda de API Gateway (p. 299), Implementar una API en Amazon APIGateway (p. 401)

    Desarrollar una API de API Gateway conintegracin de Lambda

    Para desarrollar una API con integraciones Lambda, puede utilizar la integracin de proxy de Lambda ola integracin de Lambda personalizada. En general, se debe utilizar la integracin de proxy de Lambdapara una configuracin de API gil y simplificada, al mismo tiempo que se proporcionan caractersticasverstiles y potentes. La integracin personalizada puede ser una mejor propuesta de valor si es necesariopara que API Gateway preprocese los datos de la solicitud entrante antes de que alcance a la funcin deLambda del backend. Sin embargo, esta es una tecnologa heredada. La configuracin de una integracinde Lambda personalizada implica ms que la configuracin de la integracin de proxy de Lambda, y esprobable que la configuracin existente quede inoperativa cuando la funcin de Lambda del backendrequiera cambios en la entrada o la salida.

    Con la integracin de proxy de Lambda, la entrada para la funcin de Lambda integrada se puede expresarcomo cualquier combinacin de encabezados de solicitud, variables de ruta, parmetros de cadena deconsulta y cuerpo. Adems, la funcin de Lambda puede utilizar los valores de configuracin de la APIpara influir en su lgica de ejecucin. Para un desarrollador de API, la configuracin de una integracinde proxy de Lambda es sencilla. Adems de elegir una funcin de Lambda especfica en una regindeterminada, no hay mucho que pueda hacer. API Gateway configura la solicitud de integracin y larespuesta de integracin para usted. Una vez configurado, el mtodo de API integrado puede evolucionarcon el backend sin modificar la configuracin existente. Esto es posible porque el desarrollador de lafuncin de Lambda del backend analiza los datos de la solicitud entrante y responde al cliente con losresultados deseados cuando todo va bien o con mensajes de error cuando algo va mal.

    Con la integracin de Lambda personalizada, debe asegurarse de que la entrada a la funcin de Lambdase proporcione como la carga de solicitud de integracin. Esto implica que usted, como desarrollador dela API, debe asignar los datos de entrada que el cliente proporcion como parmetros de solicitud en elcuerpo de solicitud de integracin adecuado. Es posible que tambin deba traducir el cuerpo de solicitudproporcionado por el cliente a un formato reconocido por la funcin de Lambda.

    Temas

    19

    http://docs.aws.amazon.com/apigateway/api-reference/resource/resource/http://docs.aws.amazon.com/apigateway/api-reference/resource/method/

  • Amazon API Gateway Developer GuideDesarrollar una API con la integracin de proxy de Lambda

    Desarrollar una API de API Gateway con la integracin de proxy de Lambda (p. 20) Desarrollo de una API de API Gateway con integracin de proxy de Lambda entre cuentas (p. 28) Desarrollar una API de API Gateway con integracin de Lambda personalizada (p. 30)

    Desarrollar una API de API Gateway con la integracinde proxy de LambdaEn esta seccin, mostraremos cmo crear y probar una API con la integracin de Lambda mediante laconsola de API Gateway. Mostraremos cmo un backend de Lambda asigna la solicitud sin procesar eimplementa la lgica de la aplicacin que depende de los datos de solicitud entrantes. Para obtener msinformacin sobre la integracin de proxy API Gateway, consulte Configuracin de una integracin deproxy con un recurso de proxy (p. 134).

    En primer lugar, crearemos la siguiente funcin Node.js, denominadaGetStartedLambdaProxyIntegration, utilizando la consola de AWS Lambda como backend.A continuacin, creamos una API con la integracin de proxy de Lambda mediante la funcinGetStartedLambdaProxyIntegration a travs de un recurso de proxy usando la consola de APIGateway. Por ltimo, le mostraremos cmo probar la API.

    Temas Crear las funciones de Lambda para una API con integracin de proxy de Lambda (p. 20) Crear un backend para una API con integracin de proxy de Lambda (p. 25) Creacin de una API con la integracin de proxy de Lambda (p. 25) Probar una API con la integracin de proxy de Lambda (p. 26)

    Crear las funciones de Lambda para una API con integracin deproxy de LambdaCreamos una funcin de Lambda que devuelve un saludo al intermediario como un objeto JSON delsiguiente formato:

    { "greeting": "Good {time}, {name} of {city}.[ Happy {day}]"}

    En este ejemplo, {time} puede ser morning, afternoon o day; {name} puede ser you o un nombrede usuario especificado por el usuario; {city} puede ser World o un nombre de ciudad proporcionadopor el usuario; y {day} puede ser un valor nulo, vaco o uno de los das de la semana. Si {day} es nulo oest vaco, la parte Happy {day} no se muestra. La funcin de Lambda es muy flexible y el cliente puedeespecificar la entrada en cualquier combinacin de encabezados de solicitud, variables de ruta, parmetrosde cadenas de consulta y cuerpo.

    Para mostrar lo que API Gateway transmite al backend, tambin incluimos el objeto event a la funcin deLambda en su salida. Por ltimo, creamos un objeto response para ilustrar el formato de salida bsicorequerido de la integracin de proxy de Lambda.

    Una funcin de Lambda puede estar escrita en Node.js, Python, Java y C#. En este tutorial, mostramosfragmentos en Node.js y Java. Puede extender la implementacin de Node.js a la funcin Python oextender la implementacin de Java a la funcin C#. Encontrar las instrucciones para hacerlo en lossiguientes temas.

    Temas La funcin Node.js para una API con integracin de proxy de Lambda (p. 21)

    20

  • Amazon API Gateway Developer GuideDesarrollar una API con la integracin de proxy de Lambda

    La funcin Python para una API con integracin de proxy de Lambda (p. 22) La funcin C# para una API con integracin de proxy de Lambda (p. 22) La funcin Java para una API con integracin de proxy de Lambda (p. 22)

    La funcin Node.js para una API con integracin de proxy de LambdaLa siguiente funcin de Lambda en Node.js es una aplicacin "Hello, World!" revisiones de. La funcinmuestra cmo analizar el parmetro event de entrada que contiene una solicitud realizada por un clientea un recurso de proxy de API Gateway. Este recurso se integra con la funcin mediante la integracin deproxy de Lambda. La funcin tambin muestra cmo formatear la salida de la funcin de Lambda de APIGateway para devolver los resultados como una respuesta HTTP. Para obtener ms informacin acercade los formatos de entrada y salida que este tipo de funcin de Lambda debe seguir, consulte Formatode entrada de una funcin de Lambda para la integracin de proxy (p. 145) y Formato de salida de unafuncin de Lambda para la integracin de proxy (p. 147).

    'use strict';console.log('Loading hello world function'); exports.handler = function(event, context, callback) { let name = "you"; let city = 'World'; let time = 'day'; let day = ''; let responseCode = 200; console.log("request: " + JSON.stringify(event)); // This is a simple illustration of app-specific logic to return the response. // Although only 'event.queryStringParameters' are used here, other request data, // such as 'event.headers', 'event.pathParameters', 'event.body', 'event.stageVariables', // and 'event.requestContext' can be used to determine what response to return. // if (event.queryStringParameters !== null && event.queryStringParameters !== undefined) { if (event.queryStringParameters.name !== undefined && event.queryStringParameters.name !== null && event.queryStringParameters.name !== "") { console.log("Received name: " + event.queryStringParameters.name); name = event.queryStringParameters.name; } } if (event.pathParameters !== null && event.pathParameters !== undefined) { if (event.pathParameters.proxy !== undefined && event.pathParameters.proxy !== null && event.pathParameters.proxy !== "") { console.log("Received proxy: " + event.pathParameters.proxy); city = event.pathParameters.proxy; } } if (event.headers !== null && event.headers !== undefined) { if (event.headers['day'] !== undefined && event.headers['day'] !== null && event.headers['day'] !== "") { console.log("Received day: " + event.headers.day); day = event.headers.day; } } if (event.body !== null && event.body !== undefined) { let body = JSON.parse(event.body) if (body.time)

    21

  • Amazon API Gateway Developer GuideDesarrollar una API con la integracin de proxy de Lambda

    time = body.time; } let greeting = 'Good ' + time + ', ' + name + ' of ' + city + '. '; if (day) greeting += 'Happy ' + day + '!';

    var responseBody = { message: greeting, input: event }; // The output from a Lambda proxy integration must be // of the following JSON object. The 'headers' property // is for custom response headers in addition to standard // ones. The 'body' property must be a JSON string. For