Mengkonfigurasi AWS SDK for C++ klien layanan dalam kode - AWS SDK untuk C++

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengkonfigurasi AWS SDK for C++ klien layanan dalam kode

Ketika konfigurasi ditangani langsung dalam kode, lingkup konfigurasi terbatas pada aplikasi yang menggunakan kode itu. Di dalam aplikasi itu, ada opsi untuk konfigurasi global semua klien layanan, konfigurasi untuk semua klien dari Layanan AWS jenis tertentu, atau konfigurasi ke instance klien layanan tertentu.

AWS SDK untuk C++ Termasuk kelas Layanan AWS klien yang menyediakan fungsionalitas untuk berinteraksi dengan Layanan AWS yang Anda gunakan dalam aplikasi Anda. Dalam SDK for C++, Anda dapat mengubah konfigurasi klien default, yang sangat membantu ketika Anda ingin melakukan hal-hal seperti:

  • Connect ke Internet melalui proxy

  • Ubah pengaturan transport HTTP, seperti batas waktu koneksi dan permintaan percobaan ulang

  • Tentukan petunjuk ukuran buffer soket TCP

ClientConfigurationadalah struktur dalam SDK for C++ yang dapat Anda buat dan gunakan dalam kode Anda. Cuplikan berikut menggambarkan penggunaan kelas ini untuk mengakses Amazon S3 melalui proxy.

Aws::Client::ClientConfiguration clientConfig; clientConfig.proxyHost = "localhost"; clientConfig.proxyPort = 1234; clientConfig.proxyScheme = Aws::Http::Scheme::HTTPS; Aws::S3::S3Client(clientConfig);

Deklarasi variabel konfigurasi

ClientConfigurationStruct mendeklarasikan variabel anggota berikut:

Aws::String accountId; Aws::String accountIdEndpointMode = "preferred"; bool allowSystemProxy = false; Aws::String appId; Aws::String caPath; Aws::String caFile; struct { RequestChecksumCalculation requestChecksumCalculation = RequestChecksumCalculation::WHEN_SUPPORTED; ResponseChecksumValidation responseChecksumValidation = ResponseChecksumValidation::WHEN_SUPPORTED; } checksumConfig; ProviderFactories configFactories = ProviderFactories::defaultFactories; long connectTimeoutMs = 1000; struct CredentialProviderConfiguration { Aws::String profile; Aws::String region; struct { long metadataServiceNumAttempts = 1; long metadataServiceTimeout = 1; std::shared_ptr<RetryStrategy> imdsRetryStrategy; bool disableImdsV1; bool disableImds; } imdsConfig; struct STSCredentialsCredentialProviderConfiguration { Aws::String roleArn; Aws::String sessionName; Aws::String tokenFilePath; std::chrono::milliseconds retrieveCredentialsFutureTimeout = std::chrono::seconds(10); } stsCredentialsProviderConfig; } credentialProviderConfig; bool disableExpectHeader = false; bool disableIMDS = false; bool disableImdsV1 = false; bool enableClockSkewAdjustment = true; Aws::Crt::Optional<bool> enableEndpointDiscovery; bool enableHostPrefixInjection = true; bool enableHttpClientTrace = false; bool enableTcpKeepAlive = true; Aws::String endpointOverride; std::shared_ptr<Aws::Utils::Threading::Executor> executor = nullptr; FollowRedirectsPolicy followRedirects; Aws::Http::TransferLibType httpLibOverride; Aws::Http::TransferLibPerformanceMode httpLibPerfMode = Http::TransferLibPerformanceMode::LOW_LATENCY; long httpRequestTimeoutMs = 0; unsigned long lowSpeedLimit = 1; unsigned maxConnections = 25; Aws::Utils::Array<Aws::String> nonProxyHosts; Aws::String profileName; Aws::String proxyCaFile; Aws::String proxyCaPath; Aws::Http::Scheme proxyScheme; Aws::String proxyHost; unsigned proxyPort = 0; Aws::String proxyUserName; Aws::String proxyPassword; Aws::String proxySSLCertPath; Aws::String proxySSLCertType; Aws::String proxySSLKeyPath; Aws::String proxySSLKeyType; Aws::String proxySSLKeyPassword; std::shared_ptr<Aws::Utils::RateLimits::RateLimiterInterface> readRateLimiter = nullptr; Aws::String region; Aws::Client::RequestCompressionConfig requestCompressionConfig; long requestTimeoutMs = 0; std::shared_ptr<RetryStrategy> retryStrategy = nullptr; Aws::Http::Scheme scheme; unsigned long tcpKeepAliveIntervalMs = 30000; std::shared_ptr<smithy::components::tracing::TelemetryProvider> telemetryProvider; Aws::String userAgent; bool useDualStack = false; bool useFIPS = false; bool verifySSL = true; Aws::Http::Version version = Http::Version::HTTP_VERSION_2TLS; struct WinHTTPOptions { bool useAnonymousAuth = false; } winHTTPOptions; std::shared_ptr<Aws::Utils::RateLimits::RateLimiterInterface> writeRateLimiter = nullptr; static Aws::String LoadConfigFromEnvOrProfile(const Aws::String& envKey, const Aws::String& profile, const Aws::String& profileProperty, const Aws::Vector<Aws::String>& allowedValues, const Aws::String& defaultValue);

Deskripsi variabel konfigurasi

Daftar berikut menjelaskan variabel ClientConfiguration anggota yang dapat Anda gunakan untuk menyesuaikan perilaku klien.

accountId

Menentukan Akun AWS ID untuk routing endpoint berbasis akun. Gunakan format 111122223333. Perutean endpoint berbasis akun meningkatkan kinerja permintaan untuk beberapa layanan.

accountIdEndpointModus

Mengontrol perilaku routing endpoint berbasis akun. Nilai yang valid adalah “wajib”, “dinonaktifkan”, atau “disukai”. Nilai default adalah “disukai”. Setel ke “dinonaktifkan” untuk mematikan perutean titik akhir berbasis akun bila perlu.

allowSystemProxy

Mengontrol apakah klien HTTP menemukan pengaturan proxy sistem. Pengaturan default adalah false. Setel ke true untuk mengaktifkan penemuan proxy otomatis.

appId

Menentukan identifier khusus aplikasi opsional. Saat diatur, nilai ini ditambahkan ke User-Agent header dalam formatApp/{appId}. Anda dapat mengatur nilai ini menggunakan variabel AWS_SDK_UA_APP_ID lingkungan atau atribut profil konfigurasi sdk_ua_app_id bersama.

Capath, Cafile

Menginstruksikan klien HTTP di mana menemukan toko kepercayaan sertifikat SSL Anda. Contoh trust store mungkin merupakan direktori yang disiapkan dengan utilitas OpenSSLc_rehash. Variabel-variabel ini tidak perlu disetel kecuali lingkungan Anda menggunakan symlink. Variabel-variabel ini tidak berpengaruh pada sistem Windows dan macOS.

CheckSumConfig

Berisi perhitungan checksum dan pengaturan validasi. Termasuk requestChecksumCalculation dan responseChecksumValidation dengan nilai default WHEN_SUPPORTED.

ConfigFactories

Menentukan metode pabrik untuk menginisialisasi kelas utilitas klien seperti Executor dan. RetryStrategy Menggunakan pabrik default kecuali diganti.

requestTimeoutMs dan connectTimeoutMs

Menentukan jumlah waktu dalam milidetik untuk menunggu sebelum waktu keluar permintaan HTTP. Misalnya, pertimbangkan untuk meningkatkan waktu-waktu ini saat mentransfer file besar.

credentialProviderConfig

Berisi pengaturan konfigurasi untuk penyedia kredensi. Gunakan struktur ini untuk menyesuaikan cara SDK memperoleh AWS kredensyal.

disableExpectHeader

Hanya berlaku untuk klien HTTP CURL. Secara default, CURL menambahkan header “Expect: 100-Continue” dalam permintaan HTTP untuk menghindari pengiriman payload HTTP dalam situasi di mana server merespons dengan kesalahan segera setelah menerima header. Perilaku ini dapat menghemat perjalanan pulang pergi dan berguna dalam situasi di mana muatannya kecil dan latensi jaringan relevan. Pengaturan default variabel adalah false. Jika disetel ke true, CURL diinstruksikan untuk mengirim header permintaan HTTP dan muatan tubuh bersama-sama.

Nonaktifkan IMDS

Mengontrol apakah panggilan Instance Metadata Service (IMDS) dinonaktifkan. Pengaturan default adalah false. Setel ke true untuk menonaktifkan panggilan IMDS saat berjalan di luar EC2 instance.

NonaktifkanIMDSv1

Mengontrol apakah IMDSv1 panggilan dinonaktifkan saat mengizinkan IMDSv2. Pengaturan default adalah false. Setel ke true untuk menonaktifkan hanya IMDSv1 panggilan untuk keamanan yang ditingkatkan.

enableClockSkewPenyesuaian

Mengontrol apakah kemiringan jam disesuaikan setelah setiap upaya HTTP. Pengaturan default adalah false.

enableEndpointDiscovery

Mengontrol apakah penemuan titik akhir digunakan. Secara default, endpoint regional atau overridden digunakan. Untuk mengaktifkan penemuan titik akhir, atur variabel ke true.

enableHostPrefixInjeksi

Mengontrol apakah host HTTP menambahkan awalan “data-” ke DiscoverInstances permintaan. Secara default, perilaku ini diaktifkan. Untuk menonaktifkannya, atur variabel ke false.

enableHttpClientJejak

Mengontrol apakah penelusuran klien HTTP diaktifkan untuk tujuan debugging. Pengaturan default adalah false. Setel ke true untuk mengaktifkan permintaan HTTP terperinci dan pencatatan respons.

enableTcpKeepHidup

Mengontrol apakah akan mengirim paket keep-alive TCP. Pengaturan default adalah benar. Gunakan dalam hubungannya dengan tcpKeepAliveIntervalMs variabel. Variabel ini tidak berlaku untuk Win INet dan IXMLHTTPRequest2 klien.

EndpointOverride

Menentukan endpoint HTTP utama yang dapat digunakan untuk berkomunikasi dengan layanan.

pelaksana

Referensi implementasi asynchronous Executor handler. Perilaku defaultnya adalah membuat dan melepaskan utas untuk setiap panggilan asinkron. Untuk mengubah perilaku ini, menerapkan subclass dari Executor kelas dan menetapkan instance untuk variabel ini.

FollowRedirects

Mengontrol perilaku saat menangani kode pengalihan HTTP 300.

httpLibOverride

Menentukan implementasi HTTP dikembalikan oleh pabrik HTTP default. Klien HTTP default untuk Windows adalah WinHTTP. Klien HTTP default untuk semua platform lainnya adalah CURL.

httpLibPerfModus

Menentukan modus kinerja perpustakaan HTTP. Pengaturan default adalah LOW_LATENCY. Anda dapat menyesuaikan pengaturan ini untuk mengoptimalkan karakteristik kinerja yang berbeda.

httpRequestTimeoutNona

Menentukan batas waktu permintaan HTTP dalam milidetik. Nilai default adalah 0 (tidak ada batas waktu). Pertimbangkan untuk meningkatkan nilai ini saat mentransfer file besar.

lowSpeedLimit

Menentukan kecepatan transfer minimum yang diizinkan dalam byte per detik. Jika kecepatan transfer turun di bawah kecepatan yang ditentukan, operasi transfer dibatalkan. Pengaturan default adalah 1 byte/detik. Variabel ini hanya berlaku untuk klien CURL.

MaxConnections

Menentukan jumlah maksimum koneksi HTTP ke server tunggal. Nilai default adalah 25. Tidak ada nilai maksimum yang diizinkan selain yang dapat didukung oleh bandwidth Anda secara wajar.

nonProxyHosts

Menentukan array nama host yang harus melewati pengaturan proxy. Gunakan pengaturan ini untuk mengecualikan host tertentu dari konfigurasi proxy.

ProfileName

Menentukan nama AWS profil yang akan digunakan untuk konfigurasi. SDK memuat pengaturan dari profil yang ditentukan dalam file AWS konfigurasi.

proxyCaFile

Menentukan jalur ke file otoritas sertifikat untuk koneksi proxy ketika berbeda dari default.

proxyCaPath

Menentukan jalur ke penyimpanan kepercayaan otoritas sertifikat untuk koneksi proxy ketika berbeda dari default.

ProxyScheme, ProxyHost, ProxyPort, dan ProxyPassword proxyUserName

Digunakan untuk mengatur dan mengkonfigurasi proxy untuk semua komunikasi dengan AWS. Contoh kapan fungsi ini mungkin berguna termasuk debugging bersama dengan Burp suite, atau menggunakan proxy untuk terhubung ke Internet.

SSLCertJalur proxy

Menentukan jalur ke file sertifikat SSL untuk koneksi proxy yang memerlukan sertifikat klien.

SSLCertJenis proxy

Menentukan jenis sertifikat SSL untuk koneksi proxy. Jenis umum termasuk PEM dan DER.

SSLKeyKata Sandi proxy

Menentukan kata sandi untuk kunci pribadi SSL yang digunakan dalam koneksi proxy saat kunci dilindungi kata sandi.

SSLKeyJalur proxy

Menentukan jalur ke file kunci pribadi SSL untuk koneksi proxy yang memerlukan sertifikat klien.

SSLKeyJenis proxy

Menentukan jenis kunci pribadi SSL untuk koneksi proxy. Jenis umum termasuk PEM dan DER.

writeRateLimiter dan readRateLimiter

Referensi untuk implementasi pembatas kecepatan baca dan tulis yang digunakan untuk membatasi bandwidth yang digunakan oleh lapisan transport. Secara default, tingkat baca dan tulis tidak dibatasi. Untuk memperkenalkan throttling, implementasikan subclass dari RateLimiterInterface dan tetapkan instance ke variabel-variabel ini.

region

Menentukan AWS Wilayah yang akan digunakan, seperti us-east-1. Secara default, Region yang digunakan adalah Region default yang dikonfigurasi dalam AWS kredensi yang berlaku.

requestCompressionConfig

Berisi pengaturan konfigurasi untuk kompresi permintaan. Gunakan struktur ini untuk mengontrol kapan dan bagaimana permintaan dikompresi sebelum transmisi.

RetryStrategy

Referensi implementasi strategi coba lagi. Strategi default mengimplementasikan kebijakan backoff eksponensial. Untuk melakukan strategi yang berbeda, menerapkan subclass dari RetryStrategy kelas dan menetapkan instance untuk variabel ini.

skema

Menentukan skema pengalamatan URI, baik HTTP atau HTTPS. Skema default adalah HTTPS.

tcpKeepAliveIntervalMs

Menentukan interval waktu dalam milidetik untuk mengirim paket keep-alive melalui koneksi TCP. Interval default adalah 30 detik. Pengaturan minimum adalah 15 detik. Variabel ini tidak berlaku untuk Win INet dan IXMLHTTPRequest2 klien.

TeleMetryProvider

Mereferensikan implementasi penyedia telemetri untuk mengumpulkan metrik dan melacak data. Konfigurasikan pengaturan ini untuk mengaktifkan fitur observabilitas.

UserAgent

Untuk penggunaan internal saja. Jangan mengubah pengaturan variabel ini.

useDualStack

Mengontrol apakah akan menggunakan tumpukan ganda IPv4 dan IPv6 titik akhir. Perhatikan bahwa tidak semua AWS layanan mendukung IPv6 di semua Wilayah.

UseFIPS

Mengontrol apakah akan menggunakan Federal Information Processing Standards (FIPS) 140-2 modul kriptografi yang divalidasi. Pengaturan default adalah false. Setel ke true saat kepatuhan FIPS diperlukan.

VerifySSL

Mengontrol apakah akan memverifikasi sertifikat SSL. Secara default sertifikat SSL diverifikasi. Untuk menonaktifkan verifikasi, atur variabel ke false.

versi

Menentukan versi HTTP untuk digunakan untuk permintaan. Pengaturan default adalah HTTP_VERSION_2TLS (HTTP/2 melalui TLS).

menang HTTPOptions

Berisi opsi konfigurasi HTTP khusus Windows. Termasuk useAnonymousAuth dengan pengaturan default false.