Demostración de carga básica de coreHTTP en Amazon S3 - FreeRTOS

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 carga básica de coreHTTP en Amazon 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

Este ejemplo muestra cómo enviar una solicitud PUT al servidor HTTP de Amazon Simple Storage Service (Amazon S3) y cargar un archivo pequeño. También realiza una solicitud GET para verificar el tamaño del archivo después de cargarlo. En este ejemplo se utiliza una interfaz de transporte de red que utiliza mbedTLS para establecer una conexión con autenticación mutua entre un cliente de dispositivo IoT que ejecuta coreHTTP y el servidor HTTP de Amazon S3.

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 de las tareas de esta demostración utiliza la API HTTP. 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 archivo fuente de la demostración lleva un nombre http_demo_s3_upload.c y se encuentra en el freertos/demos/coreHTTP/ directorio y en el GitHubsitio web.

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
  1. Abrir https://portal.aws.amazon.com/billing/registro.

  2. 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/y seleccionando Mi cuenta.

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
  1. Inicie sesión AWS Management Consolecomo 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 .

  2. 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
  1. Activar IAM Identity Center.

    Consulte las instrucciones en Activar AWS IAM Identity Center en la Guía del usuario de AWS IAM Identity Center .

  2. 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
  1. 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 .

  2. 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:

  1. Cree un bucket en Amazon S3 siguiendo los pasos que se indican en ¿Cómo se puede crear un bucket de S3? en la Guía del usuario de Amazon Simple Storage Service.

  2. Cargue un archivo en Amazon S3 siguiendo los pasos que se indican en ¿Cómo puedo cargar archivos y carpetas en un bucket de S3?.

  3. Genere una URL prefirmada mediante el script ubicado en el archivo FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/presigned_urls_gen.py.

    Para conocer las instrucciones de uso, consulte el archivo FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/README.md.

Funcionalidad

La demostración se conecta primero al servidor HTTP de Amazon S3 con la autenticación del servidor TLS. A continuación, crea una solicitud HTTP para cargar los datos especificados en democonfigDEMO_HTTP_UPLOAD_DATA. Después de cargar el archivo, compruebe que el archivo se haya cargado correctamente solicitando el tamaño del archivo. El código fuente de la demostración se encuentra en el GitHubsitio web.

Conexión al servidor HTTP de Amazon S3

La connectToServerWithBackoffRetriesfunción intenta establecer una conexión TCP con el servidor HTTP. Si la conexión falla, se vuelve a intentar cuando se agota el tiempo de espera. El valor de tiempo de espera aumenta exponencialmente hasta que se alcanza el número máximo de intentos o se alcanza el valor de tiempo de espera máximo. La función connectToServerWithBackoffRetries devuelve un estado de error si no se puede establecer la conexión TCP con el servidor tras el 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 está implementada en el archivo FreeRTOS-Plus/Source/Application-Protocols/network_transport/freertos_plus_tcp/using_mbedtls/using_mbedtls.c. La definición de se prvConnectToServer puede encontrar en el GitHubsitio web.

Carga de datos

La función prvUploadS3ObjectFile muestra cómo crear una solicitud PUT y especificar el archivo que se va a cargar. El bucket de Amazon S3 en el que se carga el archivo y el nombre del archivo que se va a cargar se especifican en la URL prefirmada. Para ahorrar memoria, se utiliza el mismo búfer para los encabezados de las solicitudes y para recibir la respuesta. La respuesta se recibe de forma sincrónica mediante la función de la API HTTPClient_Send. Se espera un código de estado de respuesta 200 OK del servidor HTTP de Amazon S3. Cualquier otro código de estado es un error.

El código fuente se prvUploadS3ObjectFile() puede encontrar en el GitHubsitio web.

Verificación de la carga

La función prvVerifyS3ObjectFileSize realiza llamadas a prvGetS3ObjectFileSize para recuperar el tamaño del objeto del bucket de S3. Actualmente, el servidor HTTP de Amazon 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 es un error.

El código fuente se prvGetS3ObjectFileSize() puede encontrar en el GitHubsitio web.