From 9f27bde36a9295a3c78a147446ad0e0285af7176 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Laignel?= Date: Tue, 26 Mar 2024 17:13:53 +0100 Subject: [PATCH] aws: use fixed BehaviorVersion Quoting [`BehaviorVersion` documentation]: > Over time, new best-practice behaviors are introduced. However, these > behaviors might not be backwards compatible. For example, a change which > introduces new default timeouts or a new retry-mode for all operations might > be the ideal behavior but could break existing applications. This commit uses `BehaviorVersion::v2023_11_09()`, which is the latest major version at the moment. When a new major version is released, the method will be deprecated, which will warn us of the new version and let us decide when to upgrade, after any changes if required. This is safer that using `latest()` which would silently use a different major version, possibly breaking existing code. [`BehaviorVersion` documentation]: https://docs.rs/aws-config/1.1.8/aws_config/struct.BehaviorVersion.html Part-of: --- net/aws/src/lib.rs | 2 +- net/aws/src/s3utils.rs | 9 ++++++--- net/aws/src/transcriber/imp.rs | 7 +++++-- net/aws/tests/s3.rs | 4 ++-- net/webrtc/src/aws_kvs_signaller/imp.rs | 7 +++++-- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/net/aws/src/lib.rs b/net/aws/src/lib.rs index 09d3980e..e08753d0 100644 --- a/net/aws/src/lib.rs +++ b/net/aws/src/lib.rs @@ -18,7 +18,7 @@ mod s3hlssink; mod s3sink; mod s3src; mod s3url; -mod s3utils; +pub mod s3utils; mod transcribe_parse; mod transcriber; diff --git a/net/aws/src/s3utils.rs b/net/aws/src/s3utils.rs index 45d56625..24c8b4b9 100644 --- a/net/aws/src/s3utils.rs +++ b/net/aws/src/s3utils.rs @@ -20,7 +20,10 @@ use std::sync::Mutex; use std::time::Duration; use tokio::runtime; -const DEFAULT_S3_REGION: &str = "us-west-2"; +pub const DEFAULT_S3_REGION: &str = "us-west-2"; + +pub static AWS_BEHAVIOR_VERSION: Lazy = + Lazy::new(aws_config::BehaviorVersion::v2023_11_09); static RUNTIME: Lazy = Lazy::new(|| { runtime::Builder::new_multi_thread() @@ -111,12 +114,12 @@ pub fn wait_config( .or_default_provider() .or_else(Region::new(DEFAULT_S3_REGION)); let config_future = match credentials { - Some(cred) => aws_config::defaults(aws_config::BehaviorVersion::latest()) + Some(cred) => aws_config::defaults(AWS_BEHAVIOR_VERSION.clone()) .timeout_config(timeout_config) .region(region_provider) .credentials_provider(cred) .load(), - None => aws_config::defaults(aws_config::BehaviorVersion::latest()) + None => aws_config::defaults(AWS_BEHAVIOR_VERSION.clone()) .timeout_config(timeout_config) .region(region_provider) .load(), diff --git a/net/aws/src/transcriber/imp.rs b/net/aws/src/transcriber/imp.rs index 6f3430ef..ff6e4e76 100644 --- a/net/aws/src/transcriber/imp.rs +++ b/net/aws/src/transcriber/imp.rs @@ -47,6 +47,9 @@ static RUNTIME: Lazy = Lazy::new(|| { .unwrap() }); +static AWS_BEHAVIOR_VERSION: Lazy = + Lazy::new(aws_config::BehaviorVersion::v2023_11_09); + const DEFAULT_TRANSCRIBER_REGION: &str = "us-east-1"; // Deprecated in 0.11.0: due to evolutions of the transcriber element, @@ -545,7 +548,7 @@ impl Transcriber { let config_loader = match (access_key, secret_access_key) { (Some(key), Some(secret_key)) => { gst::debug!(CAT, imp: self, "Using settings credentials"); - aws_config::ConfigLoader::default().credentials_provider( + aws_config::defaults(AWS_BEHAVIOR_VERSION.clone()).credentials_provider( aws_transcribe::config::Credentials::new( key, secret_key, @@ -557,7 +560,7 @@ impl Transcriber { } _ => { gst::debug!(CAT, imp: self, "Attempting to get credentials from env..."); - aws_config::defaults(aws_config::BehaviorVersion::latest()) + aws_config::defaults(AWS_BEHAVIOR_VERSION.clone()) } }; diff --git a/net/aws/tests/s3.rs b/net/aws/tests/s3.rs index ba1b3d79..5d21d35c 100644 --- a/net/aws/tests/s3.rs +++ b/net/aws/tests/s3.rs @@ -14,7 +14,7 @@ mod tests { use gst::prelude::*; - const DEFAULT_S3_REGION: &str = "us-west-2"; + use gstaws::s3utils::{AWS_BEHAVIOR_VERSION, DEFAULT_S3_REGION}; fn init() { use std::sync::Once; @@ -40,7 +40,7 @@ mod tests { ) .or_default_provider(); - let config = aws_config::defaults(aws_config::BehaviorVersion::latest()) + let config = aws_config::defaults(AWS_BEHAVIOR_VERSION.clone()) .region(region_provider) .load() .await; diff --git a/net/webrtc/src/aws_kvs_signaller/imp.rs b/net/webrtc/src/aws_kvs_signaller/imp.rs index e46d0330..4f42fa8c 100644 --- a/net/webrtc/src/aws_kvs_signaller/imp.rs +++ b/net/webrtc/src/aws_kvs_signaller/imp.rs @@ -33,6 +33,9 @@ use std::time::{Duration, SystemTime}; const DEFAULT_AWS_REGION: &str = "us-east-1"; const DEFAULT_PING_TIMEOUT: i32 = 30; +pub static AWS_BEHAVIOR_VERSION: Lazy = + Lazy::new(aws_config::BehaviorVersion::v2023_11_09); + static CAT: Lazy = Lazy::new(|| { gst::DebugCategory::new( "webrtc-aws-kvs-signaller", @@ -233,7 +236,7 @@ impl Signaller { }; let client = Client::new( - &aws_config::defaults(aws_config::BehaviorVersion::latest()) + &aws_config::defaults(AWS_BEHAVIOR_VERSION.clone()) .credentials_provider(credentials.clone()) .load() .await, @@ -303,7 +306,7 @@ impl Signaller { ); let signaling_config = aws_sdk_kinesisvideosignaling::config::Builder::from( - &aws_config::defaults(aws_config::BehaviorVersion::latest()) + &aws_config::defaults(AWS_BEHAVIOR_VERSION.clone()) .credentials_provider(credentials.clone()) .load() .await,