Demo di caricamento di base di CoreHTTP su Amazon 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à.

Demo di caricamento di base di CoreHTTP su Amazon 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

Questo esempio dimostra come inviare una richiesta PUT al server HTTP Amazon Simple Storage Service (Amazon S3) e caricare un file di piccole dimensioni. Esegue anche una richiesta GET per verificare la dimensione del file dopo il caricamento. 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à in questa demo utilizza l'API HTTP. 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 file sorgente della demo è denominato http_demo_s3_upload.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 Amazon S3 seguendo la procedura descritta in Come si crea un bucket S3? nella Guida per l'utente di Amazon Simple Storage Service.

  2. Carica un file su Amazon S3 seguendo la procedura descritta in Come si caricano file e cartelle in un bucket S3? .

  3. Genera un URL prefirmato utilizzando lo script che si trova nel FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/presigned_urls_gen.py file.

    Per istruzioni sull'uso, consulta il FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/README.md file.

Funzionalità

La demo si connette innanzitutto al server HTTP Amazon S3 con l'autenticazione del server TLS. Quindi, crea una richiesta HTTP per caricare i dati specificati in. democonfigDEMO_HTTP_UPLOAD_DATA Dopo aver caricato il file, verifica che il file sia stato caricato correttamente richiedendo la dimensione del file. Il codice sorgente della demo è disponibile sul sito web. GitHub

Connessione al server HTTP Amazon S3

La connectToServerWithBackoffRetriesfunzione 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. La connectToServerWithBackoffRetries funzione restituisce uno stato di errore se non è possibile stabilire la connessione TCP al server dopo il numero di tentativi configurato.

La prvConnectToServer funzione 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-Plus/Source/Application-Protocols/network_transport/freertos_plus_tcp/using_mbedtls/using_mbedtls.c La definizione di prvConnectToServer può essere trovata sul sito web. GitHub

Caricare dati

La prvUploadS3ObjectFile funzione dimostra come creare una richiesta PUT e specificare il file da caricare. Il bucket Amazon S3 in cui viene caricato il file e il nome del file da caricare sono specificati nell'URL prefirmato. Per risparmiare memoria, viene utilizzato lo stesso buffer sia per le intestazioni della richiesta che per ricevere la risposta. La risposta viene ricevuta in modo sincrono utilizzando la HTTPClient_Send funzione API. È previsto un codice di stato della 200 OK risposta dal server HTTP Amazon S3. Qualsiasi altro codice di stato è un errore.

Il codice sorgente di prvUploadS3ObjectFile() è disponibile sul GitHubsito Web.

Verifica del caricamento

La prvVerifyS3ObjectFileSize funzione chiama prvGetS3ObjectFileSize per recuperare la dimensione dell'oggetto nel bucket S3. Il server HTTP Amazon 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 è un errore.

Il codice sorgente di prvGetS3ObjectFileSize() è disponibile sul GitHubsito Web.