Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Demo unduhan dasar CoreHTTP S3
penting
Ini adalah versi arsip dari Panduan Pengguna FreerTOS untuk digunakan dengan rilis FreerTOS 202210.00. Untuk versi terbaru dari dokumen ini, lihat Panduan Pengguna FreeRTOS.
Pengantar
Demo ini menunjukkan cara menggunakan permintaan rentangHTTPClient_AddRangeHeader
untuk membuat permintaan HTTP. Untuk lingkungan mikrokontroler, permintaan jangkauan sangat dianjurkan. Dengan mengunduh file besar dalam rentang terpisah, alih-alih dalam satu permintaan, setiap bagian file dapat diproses tanpa memblokir soket jaringan. Permintaan jangkauan menurunkan risiko paket yang jatuh, yang memerlukan transmisi ulang pada koneksi TCP, sehingga meningkatkan konsumsi daya perangkat.
Contoh ini menggunakan antarmuka transportasi jaringan
catatan
Untuk mengatur dan menjalankan demo FreeRTOS, ikuti langkah-langkahnya. Memulai dengan FreeRTOS
Berulir tunggal versus multi ulir
Ada dua model penggunaan CoreHTTP, single threaded dan multithreaded (multitasking). Meskipun demo di bagian ini menjalankan perpustakaan HTTP di utas, ini sebenarnya menunjukkan cara menggunakan CoreHTTP dalam satu lingkungan berulir (hanya satu tugas yang menggunakan API HTTP dalam demo). Meskipun aplikasi single threaded harus berulang kali memanggil perpustakaan HTTP, aplikasi multithreaded malah dapat mengirim permintaan HTTP di latar belakang dalam tugas agen (atau daemon).
Organisasi kode sumber
Proyek demo diberi nama http_demo_s3_download.c
dan dapat ditemukan di
direktori dan di GitHubfreertos
/demos/coreHTTP/
Mengkonfigurasi koneksi server HTTP Amazon S3
Demo ini menggunakan URL yang telah ditandatangani sebelumnya untuk terhubung ke server HTTP Amazon S3 dan mengotorisasi akses ke objek untuk diunduh. Koneksi TLS server HTTP Amazon S3 hanya menggunakan otentikasi server. Pada tingkat aplikasi, akses ke objek diautentikasi dengan parameter dalam kueri URL yang telah ditandatangani sebelumnya. Ikuti langkah-langkah di bawah ini untuk mengonfigurasi koneksi Anda AWS.
Mendaftar untuk Akun AWS
Jika Anda tidak memiliki Akun AWS, selesaikan langkah-langkah berikut untuk membuatnya.
Untuk mendaftar untuk Akun AWS
Ikuti petunjuk online.
Bagian dari prosedur pendaftaran melibatkan menerima panggilan telepon atau pesan teks dan memasukkan kode verifikasi pada keypad telepon.
Saat Anda mendaftar untuk sebuah Akun AWS, sebuah Pengguna root akun AWSdibuat. Pengguna root memiliki akses ke semua Layanan AWS dan sumber daya di akun. Sebagai praktik keamanan terbaik, tetapkan akses administratif ke pengguna, dan gunakan hanya pengguna root untuk melakukan tugas yang memerlukan akses pengguna root.
AWS mengirimi Anda email konfirmasi setelah proses pendaftaran selesai. Kapan saja, Anda dapat melihat aktivitas akun Anda saat ini dan mengelola akun Anda dengan masuk https://aws.amazon.comke/
Buat pengguna dengan akses administratif
Setelah Anda mendaftar Akun AWS, amankan Pengguna root akun AWS, aktifkan AWS IAM Identity Center, dan buat pengguna administratif sehingga Anda tidak menggunakan pengguna root untuk tugas sehari-hari.
Amankan Anda Pengguna root akun AWS
-
Masuk ke AWS Management Console
sebagai pemilik akun dengan memilih pengguna Root dan memasukkan alamat Akun AWS email Anda. Di laman berikutnya, masukkan kata sandi. Untuk bantuan masuk dengan menggunakan pengguna root, lihat Masuk sebagai pengguna root di AWS Sign-In Panduan Pengguna.
-
Mengaktifkan autentikasi multi-faktor (MFA) untuk pengguna root Anda.
Untuk petunjuk, lihat Mengaktifkan perangkat MFA virtual untuk pengguna Akun AWS root (konsol) Anda di Panduan Pengguna IAM.
Buat pengguna dengan akses administratif
-
Aktifkan Pusat Identitas IAM.
Untuk mendapatkan petunjuk, silakan lihat Mengaktifkan AWS IAM Identity Center di Panduan Pengguna AWS IAM Identity Center .
-
Di Pusat Identitas IAM, berikan akses administratif ke pengguna.
Untuk tutorial tentang menggunakan Direktori Pusat Identitas IAM sebagai sumber identitas Anda, lihat Mengkonfigurasi akses pengguna dengan default Direktori Pusat Identitas IAM di Panduan AWS IAM Identity Center Pengguna.
Masuk sebagai pengguna dengan akses administratif
-
Untuk masuk dengan pengguna Pusat Identitas IAM, gunakan URL masuk yang dikirim ke alamat email saat Anda membuat pengguna Pusat Identitas IAM.
Untuk bantuan masuk menggunakan pengguna Pusat Identitas IAM, lihat Masuk ke portal AWS akses di Panduan AWS Sign-In Pengguna.
Tetapkan akses ke pengguna tambahan
-
Di Pusat Identitas IAM, buat set izin yang mengikuti praktik terbaik menerapkan izin hak istimewa paling sedikit.
Untuk petunjuknya, lihat Membuat set izin di Panduan AWS IAM Identity Center Pengguna.
-
Tetapkan pengguna ke grup, lalu tetapkan akses masuk tunggal ke grup.
Untuk petunjuk, lihat Menambahkan grup di Panduan AWS IAM Identity Center Pengguna.
Untuk memberikan akses dan menambahkan izin bagi pengguna, grup, atau peran Anda:
-
Pengguna dan grup di AWS IAM Identity Center:
Buat rangkaian izin. Ikuti instruksi di Buat rangkaian izin di Panduan Pengguna AWS IAM Identity Center .
-
Pengguna yang dikelola di IAM melalui penyedia identitas:
Buat peran untuk federasi identitas. Ikuti instruksi dalam Buat peran untuk penyedia identitas pihak ketiga (federasi) dalam Panduan Pengguna IAM.
-
Pengguna IAM:
-
Buat peran yang dapat diambil pengguna Anda. Ikuti instruksi dalam Buat peran untuk pengguna IAM dalam Panduan Pengguna IAM.
-
(Tidak disarankan) Lampirkan kebijakan langsung ke pengguna atau tambahkan pengguna ke grup pengguna. Ikuti petunjuk dalam Menambahkan izin ke pengguna (konsol) dalam Panduan Pengguna IAM.
-
-
Buat bucket di S3 dengan mengikuti langkah-langkah di Bagaimana cara membuat Bucket S3? di Panduan Pengguna Konsol Layanan Penyimpanan Sederhana Amazon.
-
Unggah file ke S3 dengan mengikuti langkah-langkah di Bagaimana cara mengunggah file dan folder ke bucket S3? .
-
Hasilkan URL yang telah ditandatangani sebelumnya menggunakan skrip yang terletak di
FreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/presigned_urls_gen.py
. Untuk petunjuk penggunaan, lihatFreeRTOS-Plus/Demo/coreHTTP_Windows_Simulator/Common/presigned_url_generator/README.md
.
Fungsionalitas
Demo mengambil ukuran file terlebih dahulu. Kemudian ia meminta setiap rentang byte secara berurutan, dalam satu lingkaran, dengan ukuran rentang. democonfigRANGE_REQUEST_LENGTH
Kode sumber untuk demo dapat ditemukan di situs GitHub
Menghubungkan ke server HTTP Amazon S3
Fungsi connectToServerWithBackoffRetries()connectToServerWithBackoffRetries()
mengembalikan status kegagalan jika koneksi TCP ke server tidak dapat dibuat setelah jumlah upaya yang dikonfigurasi.
Fungsi ini prvConnectToServer()
menunjukkan cara membuat koneksi ke server HTTP Amazon S3 hanya menggunakan otentikasi server. Ini menggunakan antarmuka transport berbasis MBEDTLS yang diimplementasikan dalam file FreerTos- _mbedtls.c. Plus/Source/Application-Protocols/network_transport/freertos_plus_tcp/using_mbedtls/using
Kode sumber untuk prvConnectToServer()
dapat ditemukan di GitHub
Membuat permintaan rentang
Fungsi API HTTPClient_AddRangeHeader()
mendukung serialisasi rentang byte ke header permintaan HTTP untuk membentuk permintaan rentang. Rentang permintaan digunakan dalam demo ini untuk mengambil ukuran file dan untuk meminta setiap bagian dari file.
Fungsi prvGetS3ObjectFileSize()
mengambil ukuran file di bucket S3. Connection: keep-alive
Header ditambahkan dalam permintaan pertama ini ke Amazon S3 untuk menjaga koneksi tetap terbuka setelah respons dikirim. Server HTTP S3 saat ini tidak mendukung permintaan HEAD menggunakan URL yang telah ditandatangani sebelumnya, sehingga byte ke-0 diminta. Ukuran file terkandung dalam bidang Content-Range
header respon. 206 Partial Content
Respons diharapkan dari server; kode status respons lain yang diterima adalah kesalahan.
Kode sumber untuk prvGetS3ObjectFileSize()
dapat ditemukan di GitHub
Setelah mengambil ukuran file, demo ini membuat permintaan rentang baru untuk setiap rentang byte file yang akan diunduh. Ini digunakan HTTPClient_AddRangeHeader()
untuk setiap bagian file.
Mengirim permintaan jangkauan dan menerima tanggapan
Fungsi prvDownloadS3ObjectFile()
mengirimkan permintaan rentang dalam satu lingkaran hingga seluruh file diunduh. Fungsi API HTTPClient_Send()
mengirimkan permintaan dan menerima respons secara sinkron. Ketika fungsi kembali, respon diterima dalam filexResponse
. Kode status kemudian diverifikasi menjadi 206 Partial Content
dan jumlah byte yang diunduh sejauh ini ditambah dengan nilai header. Content-Length
Kode sumber untuk prvDownloadS3ObjectFile()
dapat ditemukan di GitHub