CoreHTTP Basic Amazon S3 S3-Upload-Demo - FreeRTOS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CoreHTTP Basic Amazon S3 S3-Upload-Demo

Wichtig

Dies ist eine archivierte Version des FreeRTOS-Benutzerhandbuchs zur Verwendung mit der FreeRTOS-Version 202210.00. Die neueste Version dieses Dokuments finden Sie im FreeRTOS-Benutzerhandbuch.

Einführung

Dieses Beispiel zeigt, wie Sie eine PUT-Anfrage an den Amazon Simple Storage Service (Amazon S3) HTTP-Server senden und eine kleine Datei hochladen. Außerdem wird eine GET-Anfrage ausgeführt, um die Größe der Datei nach dem Upload zu überprüfen. In diesem Beispiel wird eine Netzwerktransportschnittstelle verwendet, die MbedTLS verwendet, um eine gegenseitig authentifizierte Verbindung zwischen einem IoT-Geräteclient, auf dem CoreHTTP ausgeführt wird, und dem Amazon S3 S3-HTTP-Server herzustellen.

Anmerkung

Folgen Sie den Schritten unter, um die FreeRTOS-Demos einzurichten und auszuführen. Erste Schritte mit FreeRTOS

Single-Thread versus Multi-Threading

Es gibt zwei CoreHTTP-Nutzungsmodelle: Singlethread und Multithread (Multitasking). Die Demo in diesem Abschnitt führt zwar die HTTP-Bibliothek in einem Thread aus, zeigt aber tatsächlich, wie CoreHTTP in einer Single-Thread-Umgebung verwendet wird. Nur eine Aufgabe in dieser Demo verwendet die HTTP-API. Obwohl Single-Thread-Anwendungen die HTTP-Bibliothek wiederholt aufrufen müssen, können Multithread-Anwendungen stattdessen HTTP-Anfragen im Hintergrund innerhalb einer Agenten- (oder Daemon-) Aufgabe senden.

Organisation des Quellcodes

Die Demo-Quelldatei ist benannt http_demo_s3_upload.c und befindet sich im freertos/demos/coreHTTP/ Verzeichnis und auf der GitHubWebsite.

Konfiguration der Amazon S3 S3-HTTP-Serververbindung

Diese Demo verwendet eine vorsignierte URL, um eine Verbindung zum Amazon S3 S3-HTTP-Server herzustellen und den Zugriff auf das herunterzuladende Objekt zu autorisieren. Die TLS-Verbindung des Amazon S3 S3-HTTP-Servers verwendet nur die Serverauthentifizierung. Auf Anwendungsebene wird der Zugriff auf das Objekt mit Parametern in der vorsignierten URL-Abfrage authentifiziert. Gehen Sie wie folgt vor, um Ihre Verbindung zu zu konfigurieren. AWS

Melde dich an für eine AWS-Konto

Wenn Sie noch keine haben AWS-Konto, führen Sie die folgenden Schritte aus, um eine zu erstellen.

Um sich für eine anzumelden AWS-Konto
  1. Öffnen Sie https://portal.aws.amazon.com/billing/die Anmeldung.

  2. Folgen Sie den Online-Anweisungen.

    Ein Teil des Anmeldevorgangs umfasst den Empfang eines Telefonanrufs oder einer Textnachricht und die Eingabe eines Bestätigungscodes auf der Telefontastatur.

    Wenn Sie sich für eine anmelden AWS-Konto, wird eine Root-Benutzer des AWS-Kontoserstellt. Der Root-Benutzer hat Zugriff auf alle AWS-Services und Ressourcen des Kontos. Als bewährte Sicherheitsmethode weisen Sie einem Administratorbenutzer Administratorzugriff zu und verwenden Sie nur den Root-Benutzer, um Aufgaben auszuführen, die Root-Benutzerzugriff erfordern.

AWS sendet Ihnen nach Abschluss des Anmeldevorgangs eine Bestätigungs-E-Mail. Sie können Ihre aktuellen Kontoaktivitäten jederzeit einsehen und Ihr Konto verwalten, indem Sie zu https://aws.amazon.com/gehen und Mein Konto auswählen.

Erstellen eines Benutzers mit Administratorzugriff

Nachdem Sie sich für einen angemeldet haben AWS-Konto, sichern Sie Ihren Root-Benutzer des AWS-Kontos AWS IAM Identity Center, aktivieren und erstellen Sie einen Administratorbenutzer, sodass Sie den Root-Benutzer nicht für alltägliche Aufgaben verwenden.

Sichern Sie Ihre Root-Benutzer des AWS-Kontos
  1. Melden Sie sich AWS Management Consoleals Kontoinhaber an, indem Sie Root-Benutzer auswählen und Ihre AWS-Konto E-Mail-Adresse eingeben. Geben Sie auf der nächsten Seite Ihr Passwort ein.

    Hilfe bei der Anmeldung mit dem Root-Benutzer finden Sie unter Anmelden als Root-Benutzer im AWS-Anmeldung Benutzerhandbuch zu.

  2. Aktivieren Sie die Multi-Faktor-Authentifizierung (MFA) für den Root-Benutzer.

    Anweisungen finden Sie unter Aktivieren eines virtuellen MFA-Geräts für Ihren AWS-Konto Root-Benutzer (Konsole) im IAM-Benutzerhandbuch.

Erstellen eines Benutzers mit Administratorzugriff
  1. Aktivieren Sie das IAM Identity Center.

    Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center im AWS IAM Identity Center Benutzerhandbuch.

  2. Gewähren Sie einem Administratorbenutzer im IAM Identity Center Benutzerzugriff.

    Ein Tutorial zur Verwendung von IAM-Identity-Center-Verzeichnis als Identitätsquelle finden Sie IAM-Identity-Center-Verzeichnis im Benutzerhandbuch unter Benutzerzugriff mit der Standardeinstellung konfigurieren.AWS IAM Identity Center

Anmelden als Administratorbenutzer
Weiteren Benutzern Zugriff zuweisen
  1. Erstellen Sie im IAM-Identity-Center einen Berechtigungssatz, der den bewährten Vorgehensweisen für die Anwendung von geringsten Berechtigungen folgt.

    Anweisungen hierzu finden Sie unter Berechtigungssatz erstellen im AWS IAM Identity Center Benutzerhandbuch.

  2. Weisen Sie Benutzer einer Gruppe zu und weisen Sie der Gruppe dann Single Sign-On-Zugriff zu.

    Eine genaue Anleitung finden Sie unter Gruppen hinzufügen im AWS IAM Identity Center Benutzerhandbuch.

Um Zugriff zu gewähren, fügen Sie Ihren Benutzern, Gruppen oder Rollen Berechtigungen hinzu:

  1. Erstellen Sie einen Bucket in Amazon S3, indem Sie den Schritten unter Wie erstelle ich einen S3-Bucket folgen? im Amazon Simple Storage Service-Benutzerhandbuch.

  2. Laden Sie eine Datei auf Amazon S3 hoch, indem Sie den Schritten unter Wie lade ich Dateien und Ordner in einen S3-Bucket hoch? folgen .

  3. Generieren Sie mithilfe des Skripts, das sich in der FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/presigned_urls_gen.py Datei befindet, eine vorsignierte URL.

    Anweisungen zur Verwendung finden Sie in der FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/README.md Datei.

Funktionalität

Die Demo stellt zunächst eine Verbindung zum Amazon S3 S3-HTTP-Server mit TLS-Serverauthentifizierung her. Anschließend wird eine HTTP-Anfrage zum Hochladen der in angegebenen Daten erstelltdemoconfigDEMO_HTTP_UPLOAD_DATA. Nach dem Hochladen der Datei wird überprüft, ob die Datei erfolgreich hochgeladen wurde, indem die Größe der Datei abgefragt wird. Den Quellcode für die Demo finden Sie auf der GitHubWebsite.

Verbindung zum Amazon S3 S3-HTTP-Server herstellen

Die connectToServerWithBackoffRetriesFunktion versucht, eine TCP-Verbindung zum HTTP-Server herzustellen. Wenn die Verbindung fehlschlägt, versucht sie es nach einem Timeout erneut. Der Timeout-Wert wird exponentiell erhöht, bis die maximale Anzahl von Versuchen oder der maximale Timeout-Wert erreicht ist. Die connectToServerWithBackoffRetries Funktion gibt einen Fehlerstatus zurück, wenn die TCP-Verbindung zum Server nach der konfigurierten Anzahl von Versuchen nicht hergestellt werden kann.

Die prvConnectToServer Funktion zeigt, wie eine Verbindung zum Amazon S3 S3-HTTP-Server ausschließlich mithilfe der Serverauthentifizierung hergestellt wird. Es verwendet die MbedTLS-basierte Transportschnittstelle, die in der Datei implementiert ist. FreeRTOS-Plus/Source/Application-Protocols/network_transport/freertos_plus_tcp/using_mbedtls/using_mbedtls.c Die Definition von prvConnectToServer finden Sie auf der Website. GitHub

Daten hochladen

Die prvUploadS3ObjectFile Funktion zeigt, wie Sie eine PUT-Anfrage erstellen und die hochzuladende Datei angeben. Der Amazon S3 S3-Bucket, in den die Datei hochgeladen wird, und der Name der hochzuladenden Datei sind in der vorsignierten URL angegeben. Um Speicherplatz zu sparen, wird derselbe Puffer sowohl für die Anforderungsheader als auch für den Empfang der Antwort verwendet. Die Antwort wird synchron mithilfe der HTTPClient_Send API-Funktion empfangen. Ein 200 OK Antwortstatuscode wird vom Amazon S3 S3-HTTP-Server erwartet. Jeder andere Statuscode ist ein Fehler.

Der Quellcode für prvUploadS3ObjectFile() kann auf der GitHubWebsite gefunden werden.

Überprüfung des Uploads

Die prvVerifyS3ObjectFileSize Funktion ruft prvGetS3ObjectFileSize auf, um die Größe des Objekts im S3-Bucket abzurufen. Der Amazon S3 S3-HTTP-Server unterstützt derzeit keine HEAD-Anfragen, die eine vorsignierte URL verwenden, sodass das 0-te Byte angefordert wird. Die Größe der Datei ist im Content-Range Header-Feld der Antwort enthalten. Eine 206 Partial Content Antwort wird vom Server erwartet. Jeder andere Antwortstatuscode ist ein Fehler.

Der Quellcode für prvGetS3ObjectFileSize() kann auf der GitHubWebsite gefunden werden.