翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
coreHTTP 基本 Amazon S3 アップロードのデモ
重要
このデモは、非推奨の Amazon-FreeRTOS リポジトリでホストされています。新しいプロジェクトを作成するときは、ここから始めることをお勧めします。現在非推奨の Amazon-FreeRTOS リポジトリをベースにした既存の FreeRTOS プロジェクトが既にある場合は、「Amazon-FreeRTOS Github リポジトリ移行ガイド」を参照してください。
序章
この例では、Amazon Simple Storage Service (Amazon S3) HTTP サーバーに PUT リクエストを送信し、小さなファイルをアップロードする方法を示します。また、アップロード後に GET リクエストを実行して、ファイルのサイズを確認します。この例で使用するネットワークトランスポートインターフェイス
注記
FreeRTOS デモをセットアップして実行するには、無料利用開始RTOS の手順に従います。
シングルスレッドとマルチスレッド
coreHTTP には、シングルスレッドとマルチスレッド (マルチタスク) の 2 つの使用モデルがあります。このデモは、このセクションでは 1 つのスレッドで HTTP ライブラリを実行しますが、実際にはシングルスレッド環境で coreHTTP を使用する方法を示しています。このデモでは、1 つのタスクのみが HTTP API を使用します。シングルスレッドアプリケーションは HTTP ライブラリを繰り返し呼び出す必要がありますが、マルチスレッドアプリケーションは、代わりにエージェント (またはデーモン) タスク内でバックグラウンドで HTTP リクエストを送信できます。
ソースコードの編成
デモソースファイルの名前は http_demo_s3_upload.c
で、
ディレクトリと GitHubfreertos
/demos/coreHTTP/
Amazon S3 HTTP サーバー接続の設定
このデモでは、署名付き URL を使用して Amazon S3 HTTP サーバーに接続し、ダウンロードするオブジェクトへのアクセスを許可します。Amazon S3 HTTP サーバーの TLS 接続では、サーバー認証のみが使用されます。アプリケーションレベルでは、オブジェクトへのアクセスは、署名付き URL クエリのパラメータを使用して認証されます。以下のステップに従って、 AWSへの接続を設定します。
-
AWS アカウントをセットアップします。
-
まだ作成していない場合は、 AWS アカウント を作成します
。 -
アカウントとアクセス許可は AWS Identity and Access Management (IAM) を使用して設定されます。IAM は、アカウント内の各ユーザーのアクセス権限の管理に使用します。デフォルトでは、ルート所有者によって付与されるまで、ユーザーにはアクセス権限がありません。
-
AWS アカウントにユーザーを追加するには、IAM ユーザーガイド を参照してください。
-
このポリシーを追加して、FreeRTOS および にアクセスするためのアクセス許可 AWS IoT を AWS アカウントに付与します。
-
AmazonS3FullAccess
-
-
-
-
Amazon Simple Storage Service ユーザーガイドの S3 バケットを作成する方法に従って、Amazon S3 にバケットを作成します。
-
S3 バケットにファイルとフォルダをアップロードする方法のステップに従って、Amazon S3 にファイルをアップロードします。
-
FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/presigned_urls_gen.py
ファイルにあるスクリプトを使用して、署名付き URL を生成します。使用手順については、
FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/README.md
ファイルを参照してください。
機能
このデモでは、まず TLS サーバー認証を使用して Amazon S3 HTTP サーバーに接続します。次に、HTTP リクエストを作成して、democonfigDEMO_HTTP_UPLOAD_DATA
に指定されているデータをアップロードします。ファイルをアップロードした後、ファイルのサイズをリクエストして、ファイルが正常にアップロードされたことを確認します。デモのソースコードは、 GitHub
Amazon S3 HTTP サーバーに接続する
connectToServerWithBackoff再試行connectToServerWithBackoffRetries
関数は、設定された試行回数に達してもサーバーへの TCP 接続を確立できない場合に、失敗ステータスを返します。
prvConnectToServer
関数は、サーバー認証のみを使用して Amazon S3 HTTP サーバーへの接続を確立する方法を示します。この関数は、FreeRTOS-Plus/Source/Application-Protocols/network_transport/freertos_plus_tcp/using_mbedtls/using_mbedtls.c
ファイルで実装されている mbedTLS ベースのインターフェイスを使用します。の定義はprvConnectToServer
、 GitHub
データをアップロードする
prvUploadS3ObjectFile
関数は、PUT リクエストの作成方法とアップロードするファイルの指定方法を示します。ファイルのアップロード先の Amazon S3 バケットと、アップロードするファイルの名前は、署名付き URL に指定されます。メモリを節約するために、リクエストヘッダーとレスポンスの受信の両方に同じバッファが使用されます。レスポンスは、HTTPClient_Send
API 関数を使用して同期的に受信されます。200 OK
レスポンスステータスコードが Amazon S3 HTTP サーバーから返されることが想定されます。その他のステータスコードはエラーです。
のソースコードprvUploadS3ObjectFile()
は、 GitHub
アップロードを検証する
prvVerifyS3ObjectFileSize
関数は、prvGetS3ObjectFileSize
を呼び出して S3 バケットのオブジェクトのサイズを取得します。Amazon S3 HTTP サーバーは、現在署名付き URL を使用した HEAD リクエストをサポートしていないため、0 番目のバイトがリクエストされます。ファイルのサイズは、レスポンスの Content-Range
ヘッダーフィールドに含まれています。206 Partial Content
レスポンスがサーバーから返されることが想定されます。その他のレスポンスステータスコードはエラーです。
のソースコードprvGetS3ObjectFileSize()
は、 GitHub