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 S3 Demo herunterladen
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
Diese Demo zeigt, wie Sie BereichsanforderungenHTTPClient_AddRangeHeader
zur Erstellung der HTTP-Anfrage verwenden. In einer Mikrocontroller-Umgebung werden Bereichsanfragen dringend empfohlen. Durch das Herunterladen einer großen Datei in separaten Bereichen statt in einer einzigen Anfrage kann jeder Abschnitt der Datei verarbeitet werden, ohne den Netzwerk-Socket zu blockieren. Bereichsanfragen verringern das Risiko, dass Pakete verworfen werden, was erneute Übertragungen über die TCP-Verbindung erfordert, und verbessern so den Stromverbrauch des Geräts.
In diesem Beispiel wird eine Netzwerktransportschnittstelle
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 verwendet die HTTP-API in der Demo). Obwohl Singlethread-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
Das Demo-Projekt hat einen Namen http_demo_s3_download.c
und ist im
Verzeichnis und auf der GitHubfreertos
/demos/coreHTTP/
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
Öffnen Sie https://portal.aws.amazon.com/billing/die Anmeldung.
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/
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
-
Melden Sie sich AWS Management Console
als 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.
-
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
-
Aktivieren Sie das IAM Identity Center.
Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center im AWS IAM Identity Center Benutzerhandbuch.
-
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
-
Um sich mit Ihrem IAM-Identity-Center-Benutzer anzumelden, verwenden Sie die Anmelde-URL, die an Ihre E-Mail-Adresse gesendet wurde, als Sie den IAM-Identity-Center-Benutzer erstellt haben.
Hilfe bei der Anmeldung mit einem IAM Identity Center-Benutzer finden Sie im AWS-Anmeldung Benutzerhandbuch unter Anmeldung beim AWS Access-Portal.
Weiteren Benutzern Zugriff zuweisen
-
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.
-
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:
-
Benutzer und Gruppen in AWS IAM Identity Center:
Erstellen Sie einen Berechtigungssatz. Befolgen Sie die Anweisungen unter Erstellen eines Berechtigungssatzes im AWS IAM Identity Center -Benutzerhandbuch.
-
Benutzer, die in IAM über einen Identitätsanbieter verwaltet werden:
Erstellen Sie eine Rolle für den Identitätsverbund. Befolgen Sie die Anleitung unter Eine Rolle für einen externen Identitätsanbieter (Verbund) erstellen im IAM-Benutzerhandbuch.
-
IAM-Benutzer:
-
Erstellen Sie eine Rolle, die Ihr Benutzer annehmen kann. Befolgen Sie die Anleitung unter Eine Rolle für einen IAM-Benutzer erstellen im IAM-Benutzerhandbuch.
-
(Nicht empfohlen) Weisen Sie einem Benutzer eine Richtlinie direkt zu oder fügen Sie einen Benutzer zu einer Benutzergruppe hinzu. Befolgen Sie die Anweisungen unter Hinzufügen von Berechtigungen zu einem Benutzer (Konsole) im IAM-Benutzerhandbuch.
-
-
Erstellen Sie einen Bucket in S3, indem Sie den Schritten unter Wie erstelle ich einen S3-Bucket? folgen im Amazon Simple Storage Service Console-Benutzerhandbuch.
-
Laden Sie eine Datei auf S3 hoch, indem Sie den Schritten unter Wie lade ich Dateien und Ordner in einen S3-Bucket hoch? folgen. .
-
Generieren Sie eine vorsignierte URL mithilfe des Skripts unter
FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/presigned_urls_gen.py
. Anweisungen zur Verwendung finden Sie unterFreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/README.md
.
Funktionalität
Die Demo ruft zuerst die Größe der Datei ab. Dann fordert sie jeden Bytebereich sequentiell, in einer Schleife, mit einer Bereichsgröße von an. democonfigRANGE_REQUEST_LENGTH
Der Quellcode für die Demo ist auf der GitHub
Verbindung zum Amazon S3 S3-HTTP-Server herstellen
Die Funktion connectToServerWithBackoffRetries()connectToServerWithBackoffRetries()
gibt einen Fehlerstatus zurück, wenn die TCP-Verbindung zum Server nach der konfigurierten Anzahl von Versuchen nicht hergestellt werden kann.
Die Funktion prvConnectToServer()
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 FreeRTOS- _mbedtls.c implementiert ist. Plus/Source/Application-Protocols/network_transport/freertos_plus_tcp/using_mbedtls/using
Den prvConnectToServer()
Quellcode für finden Sie unter. GitHub
Eine Bereichsanfrage erstellen
Die API-Funktion HTTPClient_AddRangeHeader()
unterstützt die Serialisierung eines Bytebereichs in die HTTP-Anforderungsheader, um eine Bereichsanforderung zu bilden. Bereichsanfragen werden in dieser Demo verwendet, um die Dateigröße abzurufen und jeden Abschnitt der Datei anzufordern.
Die Funktion prvGetS3ObjectFileSize()
ruft die Größe der Datei im S3-Bucket ab. Der Connection: keep-alive
Header wird in dieser ersten Anfrage zu Amazon S3 hinzugefügt, um die Verbindung nach dem Senden der Antwort aufrechtzuerhalten. Der S3-HTTP-Server unterstützt derzeit keine HEAD-Anfragen, die eine vorsignierte URL verwenden, daher wird das 0-te Byte angefordert. 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 empfangene Antwortstatuscode ist ein Fehler.
Den Quellcode für prvGetS3ObjectFileSize()
finden Sie unter. GitHub
Nach dem Abrufen der Dateigröße erstellt diese Demo eine neue Bereichsanforderung für jeden Bytebereich der herunterzuladenden Datei. Es wird HTTPClient_AddRangeHeader()
für jeden Abschnitt der Datei verwendet.
Senden von Bereichsanfragen und Empfangen von Antworten
Die Funktion prvDownloadS3ObjectFile()
sendet die Bereichsanfragen in einer Schleife, bis die gesamte Datei heruntergeladen ist. Die API-Funktion HTTPClient_Send()
sendet eine Anfrage und empfängt die Antwort synchron. Wenn die Funktion zurückkehrt, wird die Antwort in einer xResponse
empfangen. Anschließend wird überprüft, ob der Statuscode korrekt ist, 206 Partial Content
und die Anzahl der bisher heruntergeladenen Byte wird um den Content-Length
Header-Wert erhöht.
Den Quellcode für prvDownloadS3ObjectFile()
finden Sie unter. GitHub