Scarica la demo di CoreHTTP basic S3 - FreeRTOS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Scarica la demo di CoreHTTP basic S3

Importante

Questa è una versione archiviata della FreeRTOS User Guide da utilizzare con la versione FreeRTOS 202210.00. Per l'ultima versione di questo documento, consulta la FreerTOS User Guide.

Introduzione

Questa demo mostra come utilizzare le richieste di intervallo per scaricare file dal server HTTP Amazon S3. Le richieste di intervallo sono supportate nativamente nell'API CoreHTTP quando vengono utilizzate HTTPClient_AddRangeHeader per creare la richiesta HTTP. Per un ambiente con microcontrollore, le richieste di intervallo sono altamente consigliate. Scaricando un file di grandi dimensioni in intervalli separati, anziché in una singola richiesta, ogni sezione del file può essere elaborata senza bloccare il socket di rete. Le richieste di intervallo riducono il rischio di perdita di pacchetti, il che richiede ritrasmissioni sulla connessione TCP, e quindi migliorano il consumo energetico del dispositivo.

Questo esempio utilizza un'interfaccia di trasporto di rete che utilizza mbedTLS per stabilire una connessione reciprocamente autenticata tra un client di dispositivo IoT che esegue CoreHTTP e il server HTTP Amazon S3.

Nota

Per configurare ed eseguire le demo di FreerTOS, segui i passaggi indicati. Guida introduttiva a FreerTOS

Filettatura singola contro filettatura multipla

Esistono due modelli di utilizzo CoreHTTP, a thread singolo e multithread (multitasking). Sebbene la demo in questa sezione esegua la libreria HTTP in un thread, in realtà dimostra come utilizzare CoreHTTP in un ambiente a thread singolo (solo un'attività utilizza l'API HTTP nella demo). Sebbene le applicazioni a thread singolo debbano chiamare ripetutamente la libreria HTTP, le applicazioni multithread possono invece inviare richieste HTTP in background all'interno di un'attività agente (o daemon).

Organizzazione del codice sorgente

Il progetto dimostrativo è denominato http_demo_s3_download.c e può essere trovato nella freertos/demos/coreHTTP/ directory e sul GitHubsito Web.

Configurazione della connessione al server HTTP Amazon S3

Questa demo utilizza un URL prefirmato per connettersi al server HTTP Amazon S3 e autorizzare l'accesso all'oggetto da scaricare. La connessione TLS del server HTTP Amazon S3 utilizza solo l'autenticazione del server. A livello di applicazione, l'accesso all'oggetto viene autenticato con i parametri della query URL prefirmata. Segui i passaggi seguenti per configurare la connessione a. AWS

Iscriviti per un Account AWS

Se non ne hai uno Account AWS, completa i seguenti passaggi per crearne uno.

Per iscriverti a un Account AWS
  1. Apri la https://portal.aws.amazon.com/billing/registrazione.

  2. Segui le istruzioni online.

    Parte della procedura di registrazione prevede la ricezione di una telefonata o di un messaggio di testo e l'immissione di un codice di verifica sulla tastiera del telefono.

    Quando ti iscrivi a un Account AWS, Utente root dell'account AWSviene creato un. L'utente root dispone dell'accesso a tutte le risorse e tutti i Servizi AWS nell'account. Come best practice di sicurezza, assegna l'accesso amministrativo a un utente e utilizza solo l'utente root per eseguire attività che richiedono l'accesso di un utente root.

AWS ti invia un'email di conferma dopo il completamento della procedura di registrazione. In qualsiasi momento, puoi visualizzare l'attività corrente del tuo account e gestirlo accedendo a https://aws.amazon.com/e scegliendo Il mio account.

Crea un utente con accesso amministrativo

Dopo esserti registrato Account AWS, proteggi Utente root dell'account AWS AWS IAM Identity Center, abilita e crea un utente amministrativo in modo da non utilizzare l'utente root per le attività quotidiane.

Proteggi i tuoi Utente root dell'account AWS
  1. Accedi AWS Management Consolecome proprietario dell'account scegliendo Utente root e inserendo il tuo indirizzo Account AWS email. Nella pagina successiva, inserisci la password.

    Per informazioni sull'accesso utilizzando un utente root, consulta la pagina Signing in as the root user della Guida per l'utente di Accedi ad AWS .

  2. Abilita l'autenticazione a più fattori (MFA) per l'utente root.

    Per istruzioni, consulta Abilitare un dispositivo MFA virtuale per l'utente Account AWS root (console) nella Guida per l'utente IAM.

Crea un utente con accesso amministrativo
  1. Abilita Centro identità IAM.

    Per istruzioni, consulta Abilitazione di AWS IAM Identity Center nella Guida per l'utente di AWS IAM Identity Center .

  2. In IAM Identity Center, assegna l'accesso amministrativo a un utente.

    Per un tutorial sull'utilizzo di IAM Identity Center directory come fonte di identità, consulta Configurare l'accesso utente con l'impostazione predefinita IAM Identity Center directory nella Guida per l'AWS IAM Identity Center utente.

Accesso come utente amministratore
  • Per accedere con l'utente IAM Identity Center, utilizza l'URL di accesso che è stato inviato al tuo indirizzo e-mail quando hai creato l'utente IAM Identity Center.

    Per informazioni sull'accesso utilizzando un utente IAM Identity Center, consulta AWS Accedere al portale di accesso nella Guida per l'Accedi ad AWS utente.

Assegna l'accesso a ulteriori utenti
  1. In IAM Identity Center, crea un set di autorizzazioni conforme alla best practice dell'applicazione di autorizzazioni con il privilegio minimo.

    Segui le istruzioni riportate nella pagina Creazione di un set di autorizzazioni nella Guida per l'utente di AWS IAM Identity Center .

  2. Assegna al gruppo prima gli utenti e poi l'accesso con autenticazione unica (Single Sign-On).

    Per istruzioni, consulta Aggiungere gruppi nella Guida per l'utente di AWS IAM Identity Center .

Per fornire l'accesso, aggiungi autorizzazioni agli utenti, gruppi o ruoli:

  • Utenti e gruppi in AWS IAM Identity Center:

    Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina Create a permission set (Creazione di un set di autorizzazioni) nella Guida per l'utente di AWS IAM Identity Center .

  • Utenti gestiti in IAM tramite un provider di identità:

    Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina Create a role for a third-party identity provider (federation) della Guida per l'utente IAM.

  • Utenti IAM:

  1. Crea un bucket in S3 seguendo i passaggi in Come si crea un bucket S3? nella Guida per l'utente della console di Amazon Simple Storage Service.

  2. Carica un file su S3 seguendo la procedura descritta in Come faccio a caricare file e cartelle in un bucket S3? .

  3. Genera un URL prefirmato utilizzando lo script che si trova inFreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/presigned_urls_gen.py. Per istruzioni d'uso, vedereFreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/README.md.

Funzionalità

La demo recupera innanzitutto la dimensione del file. Quindi richiede ogni intervallo di byte in sequenza, in un ciclo, con dimensioni dell'intervallo di. democonfigRANGE_REQUEST_LENGTH

Il codice sorgente per la demo è disponibile sul sito Web. GitHub

Connessione al server HTTP Amazon S3

La funzione connectToServerWithBackoffRetries() tenta di stabilire una connessione TCP al server HTTP. Se la connessione fallisce, riprova dopo un timeout. Il valore di timeout aumenterà esponenzialmente fino al raggiungimento del numero massimo di tentativi o al raggiungimento del valore di timeout massimo. connectToServerWithBackoffRetries()restituisce uno stato di errore se la connessione TCP al server non può essere stabilita dopo il numero di tentativi configurato.

La funzione prvConnectToServer() dimostra come stabilire una connessione al server HTTP Amazon S3 utilizzando solo l'autenticazione del server. Utilizza l'interfaccia di trasporto basata su MbeDTLS implementata nel file FreerTOS- _mbedtls.c. Plus/Source/Application-Protocols/network_transport/freertos_plus_tcp/using_mbedtls/using

Il codice prvConnectToServer() sorgente GitHubdi è disponibile su.

Creazione di una richiesta di intervallo

La funzione API HTTPClient_AddRangeHeader() supporta la serializzazione di un intervallo di byte nelle intestazioni della richiesta HTTP per formare una richiesta di intervallo. Le richieste di intervallo vengono utilizzate in questa demo per recuperare la dimensione del file e per richiedere ogni sezione del file.

La funzione prvGetS3ObjectFileSize() recupera la dimensione del file nel bucket S3. L'Connection: keep-aliveintestazione viene aggiunta in questa prima richiesta ad Amazon S3 per mantenere aperta la connessione dopo l'invio della risposta. Il server HTTP S3 attualmente non supporta le richieste HEAD che utilizzano un URL prefirmato, quindi è richiesto il byte 0. La dimensione del file è contenuta nel campo di intestazione della risposta. Content-Range È prevista una 206 Partial Content risposta dal server; qualsiasi altro codice di stato della risposta ricevuto è un errore.

Il codice sorgente di prvGetS3ObjectFileSize() è disponibile su. GitHub

Dopo aver recuperato la dimensione del file, questa demo crea una nuova richiesta di intervallo per ogni intervallo di byte del file da scaricare. Viene utilizzato HTTPClient_AddRangeHeader() per ogni sezione del file.

Invio di richieste di intervallo e ricezione di risposte

La funzione prvDownloadS3ObjectFile() invia le richieste di intervallo in un ciclo fino al download dell'intero file. La funzione API HTTPClient_Send() invia una richiesta e riceve la risposta in modo sincrono. Quando la funzione ritorna, la risposta viene ricevuta in unxResponse. Viene quindi verificato che il codice di stato sia valido 206 Partial Content e il numero di byte scaricati finora viene incrementato del valore dell'intestazione. Content-Length

Il codice sorgente di è disponibile su. prvDownloadS3ObjectFile() GitHub