[vc_row el_class=”blog-info”][vc_column][vc_single_image source=”featured_image” img_size=”full” style=”vc_box_rounded”][vc_empty_space height=”40px”][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text el_class=”font-weight-bold”]
Autorización de IAM para AWS Lambda/Rest API detrás de la configuración y prueba de API Gateway
Hay varias formas de configurar la autorización para la función lambda que proporciona API Gateway:
- Autorización de IAM: puede autorizarse a sí mismo o a su colega que tenga acceso a AWS.
- Autorización de la función Lambda: puede crear una función lambda adicional que valide las credenciales (como la clave API proporcionada por usted)
- Cognito: puede autorizar a los usuarios externos que están registrados en su aplicación mediante el servicio AWS Cognito.
Aquí solo veremos cómo podemos configurar la “autorización de IAM” para la función Lambda, que podría ser solo una función simple o una API REST completa detrás de la puerta de enlace API.
Así que empecemos…
[/vc_column_text][vc_empty_space height=”40px”][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text]
Cree una función de Lambda de muestra. Supongo que es bastante fácil de crear. Estoy usando Nodejs aquí para la configuración.

Cree una API REST de muestra en la puerta de enlace API:

Cree un método ‘cualquiera’ y asigne la función lambda que acabamos de crear (la había llamado prueba).

Paso 4: En el menú desplegable Acción, elija “Implementar”. Proporcione un nombre artístico (por ejemplo, dev) y presione “Implementar”

Ahora probemos si funciona como se esperaba (simplemente vaya al escenario y copie la URL en el navegador): ¡Sí lo hace!

Ahora asegurémoslo con el autorizador de IAM
Primero debemos crear un usuario que tendrá acceso solo para invocar esta API.
1. Crear un usuario:

2. Adjunte una política existente: AmazonAPIGatewayInvokeFullAccess

Guarde su “Id. de clave de acceso” y “Clave de acceso secreta”, ya que las necesitará para invocar la API.
Ahora regresemos a API Gateway y vayamos a Recursos -> CUALQUIERA -> “Ejecución de método” y configure “Autorización” como “AWS IAM”.

No olvide implementar cómo lo hizo anteriormente en la misma etapa.
¡Todo listo!
Ahora tenemos que probarlo.
1. Postman
Sin pasar las credenciales, debería ver el error:

Ahora configuremos las credenciales de IAM: clave de acceso y clave secreta.
En Postman, elija “AWS signatura” como tipo de autorización:

Y pega tus credenciales y también la región correcta:

Presiona el botón Send:

Ahora veamos si podemos invocar este AIP programáticamente. Aquí estoy usando Nodejs:
Deberá instalar la biblioteca desde el administrador de paquetes NPM, es decir, “aws-api-gateway-client” para que este código funcione.
var apigClientFactory = require("aws-api-gateway-client").default;
var apigClient = apigClientFactory.newClient({
invokeUrl: "https://u9nzanwqc2.execute-api.us-east-2.amazonaws.com/dev",
region: "us-east-2",
accessKey: "AKIAZ***********UGK",
secretKey: "PI1***************************b3SVT",
});
const params = {};
const queryParams = {};
const body = {};
apigClient
.invokeApi(
params,
"/",
"get",
{
queryParams: queryParams,
},
body
)
.then(function (result) {
console.log(result.data);
})
.catch(function (result) {
console.log(result);
});
Debería ver el resultado en la consola: { statusCode: 200, body: ‘”¡Hola de Lambda!”‘ }
Espero que esto funcione para ti también.
¡Feliz aprendizaje! ¡Feliz codificación!
Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre Laravel:
- Registros de eventos en Node JS: ¿cómo crearlos?
- ES2022: Las 7 nuevas y flamantes funciones
- ArticleService: Usando controladores, eventos de Laravel
[/vc_column_text][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row el_class=”social-info”][vc_column width=”1/6″][/vc_column][vc_column width=”2/3″][vc_row_inner][vc_column_inner width=”1/2″][vc_column_text][social_share_button themes=’theme1′][/vc_column_text][/vc_column_inner][vc_column_inner el_class=”youtube-inner-col” width=”1/2″][vc_column_text][likebtn theme=”youtube” lang=”auto” show_like_label=”0″ white_label=”1″ alignment=”right”][/vc_column_text][/vc_column_inner][/vc_row_inner][vc_row_inner el_class=”social-info-inner”][vc_column_inner width=”1/4″][vc_single_image image=”921″][/vc_column_inner][vc_column_inner width=”3/4″][vc_column_text]
Diego Pacheco
Ingeniero en Sitemas, MBA (Babson College). Desarrollador PHP/Java/JavaScript. Fundador & CEO de EpicStudio. Entusiasta de las tecnologías web (JavaScript, Vue, Laravel, AWS, Docker) Viajes, Negocios, Surf y Growth.[/vc_column_text][asvc_list_item icon_fontawesome=”fa fa-calendar-o” icon_size=”14px”]Programar una reunión[/asvc_list_item][/vc_column_inner][/vc_row_inner][/vc_column][vc_column width=”1/6″][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
Recent Post
[/vc_column_text][lvca_posts_carousel posts_query=”size:3|order_by:rand|post_type:post” image_linkable=”true” image_size=”full” taxonomy_chosen=”post_tag” display_title=”true” display_post_date=”true” display_summary=”true” autoplay_speed=”3000″ animation_speed=”300″ display_columns=”3″ scroll_columns=”3″ gutter=”3″ tablet_display_columns=”2″ tablet_scroll_columns=”2″ tablet_gutter=”3″ tablet_width=”800″ mobile_display_columns=”1″ mobile_scroll_columns=”1″ mobile_gutter=”3″ mobile_width=”480″][vc_empty_space height=”20px”][/vc_column][/vc_row]
