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 intervalloHTTPClient_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
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
directory e sul GitHubfreertos
/demos/coreHTTP/
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
Apri la https://portal.aws.amazon.com/billing/registrazione.
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/
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
-
Accedi AWS Management Console
come 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 .
-
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
-
Abilita Centro identità IAM.
Per istruzioni, consulta Abilitazione di AWS IAM Identity Center nella Guida per l'utente di AWS IAM Identity Center .
-
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
-
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 .
-
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:
-
Crea un ruolo che l'utente possa assumere. Segui le istruzioni riportate nella pagina Create a role for an IAM user della Guida per l'utente IAM.
-
(Non consigliato) Collega una policy direttamente a un utente o aggiungi un utente a un gruppo di utenti. Segui le istruzioni riportate nella pagina Aggiunta di autorizzazioni a un utente (console) nella Guida per l'utente IAM.
-
-
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.
-
Carica un file su S3 seguendo la procedura descritta in Come faccio a caricare file e cartelle in un bucket S3? .
-
Genera un URL prefirmato utilizzando lo script che si trova in
FreeRTOS-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()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 GitHub
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-alive
intestazione 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