Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Demostración de descarga básica de coreHTTP en S3
importante
Esta es una versión archivada de la Guía del usuario de FreeRTOS para su uso con la versión 202210.00 de FreeRTOS. Para obtener la última versión de este documento, consulte la Guía del usuario de FreeRTOS.
Introducción
Esta demostración muestra cómo utilizar solicitudes de rangoHTTPClient_AddRangeHeader
para crear la solicitud HTTP. Para un entorno de microcontroladores, se recomienda encarecidamente utilizar solicitudes de rango. Al descargar un archivo grande en rangos separados, en lugar de hacerlo en una sola solicitud, se puede procesar cada sección del archivo sin bloquear el socket de red. Las solicitudes de rango reducen el riesgo de que se pierdan paquetes, lo que requiere retransmisiones en la conexión TCP, por lo que mejoran el consumo de energía del dispositivo.
En este ejemplo se utiliza una interfaz de transporte de red
nota
Para configurar y ejecutar las demostraciones de FreeRTOS, siga los pasos que se indican en Introducción a FreeRTOS.
Subproceso único frente a varios subprocesos
Hay dos modelos de uso de coreHTTP: subproceso único y varios subprocesos (multitarea). Aunque la demostración de esta sección ejecuta la biblioteca HTTP en un subproceso, en realidad muestra cómo usar coreHTTP en un entorno de un solo subproceso (solo una tarea utiliza la API HTTP en la demostración). Si bien las aplicaciones con un solo subproceso deben llamar repetidamente a la biblioteca HTTP, las aplicaciones con varios subprocesos pueden enviar solicitudes HTTP en segundo plano dentro de una tarea de agente (o daemon).
Organización del código fuente
El proyecto de demostración tiene un nombre http_demo_s3_download.c
y se puede encontrar en el
directorio y en el GitHubfreertos
/demos/coreHTTP/
Configuración de la conexión del servidor HTTP de Amazon S3
Esta demostración utiliza una URL prefirmada para conectarse al servidor HTTP de Amazon S3 y autorizar el acceso al objeto que se va a descargar. La conexión TLS del servidor HTTP de Amazon S3 utiliza únicamente la autenticación del servidor. En el nivel de la aplicación, el acceso al objeto se autentica con los parámetros de la consulta de URL prefirmada. Siga los pasos que se indican a continuación para configurar la conexión a AWS.
Inscríbase en una Cuenta de AWS
Si no tiene uno Cuenta de AWS, complete los siguientes pasos para crearlo.
Para suscribirte a una Cuenta de AWS
Siga las instrucciones que se le indiquen.
Parte del procedimiento de registro implica recibir una llamada telefónica o un mensaje de texto e introducir un código de verificación en el teclado del teléfono.
Cuando te registras en un Cuenta de AWS, Usuario raíz de la cuenta de AWSse crea un. El usuario raíz tendrá acceso a todos los Servicios de AWS y recursos de esa cuenta. Como práctica recomendada de seguridad, asigne acceso administrativo a un usuario y utilice únicamente el usuario raíz para realizar tareas que requieren acceso de usuario raíz.
AWS te envía un correo electrónico de confirmación una vez finalizado el proceso de registro. En cualquier momento, puede ver la actividad de su cuenta actual y administrarla accediendo a https://aws.amazon.com/
Creación de un usuario con acceso administrativo
Después de crear un usuario administrativo Cuenta de AWS, asegúrelo Usuario raíz de la cuenta de AWS AWS IAM Identity Center, habilite y cree un usuario administrativo para no usar el usuario root en las tareas diarias.
Proteja su Usuario raíz de la cuenta de AWS
-
Inicie sesión AWS Management Console
como propietario de la cuenta seleccionando el usuario root e introduciendo su dirección de Cuenta de AWS correo electrónico. En la siguiente página, escriba su contraseña. Para obtener ayuda para iniciar sesión con el usuario raíz, consulte Iniciar sesión como usuario raíz en la Guía del usuario de AWS Sign-In .
-
Active la autenticación multifactor (MFA) para el usuario raíz.
Para obtener instrucciones, consulte Habilitar un dispositivo MFA virtual para el usuario Cuenta de AWS raíz (consola) en la Guía del usuario de IAM.
Creación de un usuario con acceso administrativo
-
Activar IAM Identity Center.
Consulte las instrucciones en Activar AWS IAM Identity Center en la Guía del usuario de AWS IAM Identity Center .
-
En IAM Identity Center, conceda acceso administrativo a un usuario.
Para ver un tutorial sobre su uso Directorio de IAM Identity Center como fuente de identidad, consulte Configurar el acceso de los usuarios con la configuración predeterminada Directorio de IAM Identity Center en la Guía del AWS IAM Identity Center usuario.
Inicio de sesión como usuario con acceso de administrador
-
Para iniciar sesión con el usuario de IAM Identity Center, use la URL de inicio de sesión que se envió a la dirección de correo electrónico cuando creó el usuario de IAM Identity Center.
Para obtener ayuda para iniciar sesión con un usuario del Centro de identidades de IAM, consulte Iniciar sesión en el portal de AWS acceso en la Guía del AWS Sign-In usuario.
Concesión de acceso a usuarios adicionales
-
En IAM Identity Center, cree un conjunto de permisos que siga la práctica recomendada de aplicar permisos de privilegios mínimos.
Para conocer las instrucciones, consulte Create a permission set en la Guía del usuario de AWS IAM Identity Center .
-
Asigne usuarios a un grupo y, a continuación, asigne el acceso de inicio de sesión único al grupo.
Para conocer las instrucciones, consulte Add groups en la Guía del usuario de AWS IAM Identity Center .
Para dar acceso, agregue permisos a los usuarios, grupos o roles:
-
Usuarios y grupos en AWS IAM Identity Center:
Cree un conjunto de permisos. Siga las instrucciones de Creación de un conjunto de permisos en la Guía del usuario de AWS IAM Identity Center .
-
Usuarios gestionados en IAM a través de un proveedor de identidades:
Cree un rol para la federación de identidades. Siga las instrucciones descritas en Creación de un rol para un proveedor de identidad de terceros (federación) en la Guía del usuario de IAM.
-
Usuarios de IAM:
-
Cree un rol que el usuario pueda aceptar. Siga las instrucciones descritas en Creación de un rol para un usuario de IAM en la Guía del usuario de IAM.
-
(No recomendado) Adjunte una política directamente a un usuario o añada un usuario a un grupo de usuarios. Siga las instrucciones descritas en Adición de permisos a un usuario (consola) de la Guía del usuario de IAM.
-
-
Cree un bucket en S3 siguiendo los pasos que se indican en ¿Cómo se puede crear un bucket de S3? en la Guía del usuario de la consola de Amazon Simple Storage Service.
-
Cargue un archivo en S3 siguiendo los pasos que se indican en ¿Cómo puedo cargar archivos y carpetas en un bucket de S3?.
-
Genere una URL prefirmada mediante el script ubicado en
FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/presigned_urls_gen.py
. Para obtener instrucciones, consulteFreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/README.md
.
Funcionalidad
La demostración recupera primero el tamaño del archivo. Luego, solicita cada rango de bytes secuencialmente, en un bucle, con tamaños de rango de democonfigRANGE_REQUEST_LENGTH
.
El código fuente de la demostración se encuentra en el GitHub
Conexión al servidor HTTP de Amazon S3
La función connectToServerWithBackoffRetries()connectToServerWithBackoffRetries()
devuelve un estado de error si la conexión TCP con el servidor no se puede establecer después del número de intentos configurado.
La función prvConnectToServer()
muestra cómo establecer una conexión con el servidor HTTP de Amazon S3 utilizando únicamente la autenticación del servidor. Utiliza la interfaz de transporte basada en MbedTLS que se implementa en el archivo FreeRTOS- _mbedtls.c. Plus/Source/Application-Protocols/network_transport/freertos_plus_tcp/using_mbedtls/using
El código fuente de se encuentra en. prvConnectToServer()
GitHub
Creación de una solicitud de rango
La función API HTTPClient_AddRangeHeader()
admite la serialización de un rango de bytes en los encabezados de las solicitudes HTTP para formar una solicitud de rango. En esta demostración, las solicitudes de rango se utilizan para recuperar el tamaño del archivo y solicitar cada sección del archivo.
La función prvGetS3ObjectFileSize()
recupera el tamaño del archivo del bucket de S3. El encabezado Connection: keep-alive
se añade en esta primera solicitud a Amazon S3 para mantener la conexión abierta después de enviar la respuesta. Actualmente, el servidor HTTP de S3 no admite solicitudes HEAD que utilicen una URL prefirmada, por lo que se solicita el byte 0. El tamaño del archivo se incluye en el campo de encabezado Content-Range
de la respuesta. Se espera una respuesta 206 Partial Content
del servidor; cualquier otro código de estado de respuesta recibido es un error.
El código fuente de se prvGetS3ObjectFileSize()
puede encontrar en GitHub
Después de recuperar el tamaño del archivo, esta demostración crea una nueva solicitud de rango para cada rango de bytes del archivo que se va a descargar. Utiliza HTTPClient_AddRangeHeader()
para cada sección del archivo.
Envío de solicitudes de rango y recepción de respuestas
La función prvDownloadS3ObjectFile()
envía las solicitudes de rango en un bucle hasta que se descarga todo el archivo. La función API HTTPClient_Send()
envía una solicitud y recibe la respuesta de forma sincrónica. Cuando la función regresa, la respuesta se recibe en un xResponse
. A continuación, se comprueba que el código de estado sea 206 Partial Content
y el número de bytes descargados hasta el momento se incrementa en función del valor del encabezado Content-Length
.
El código fuente de se prvDownloadS3ObjectFile()
puede encontrar en GitHub