risingwave_connector/source/filesystem/s3/
mod.rs1pub mod enumerator;
15use phf::{Set, phf_set};
16use risingwave_common::util::env_var::env_var_is_true;
17use serde::Deserialize;
18
19use crate::connector_common::DISABLE_DEFAULT_CREDENTIAL;
20use crate::deserialize_optional_bool_from_string;
21use crate::enforce_secret::EnforceSecret;
22use crate::source::SourceProperties;
23use crate::source::util::dummy::{
24 DummyProperties, DummySourceReader, DummySplit, DummySplitEnumerator,
25};
26
27pub const LEGACY_S3_CONNECTOR: &str = "s3";
29
30#[derive(Clone, Debug, Deserialize, PartialEq, with_options::WithOptions)]
32pub struct S3PropertiesCommon {
33 #[serde(rename = "s3.region_name")]
34 pub region_name: String,
35 #[serde(rename = "s3.bucket_name")]
36 pub bucket_name: String,
37 #[serde(rename = "match_pattern", default)]
38 pub match_pattern: Option<String>,
39 #[serde(rename = "s3.credentials.access", default)]
40 pub access: Option<String>,
41 #[serde(rename = "s3.credentials.secret", default)]
42 pub secret: Option<String>,
43 #[serde(default, deserialize_with = "deserialize_optional_bool_from_string")]
44 pub enable_config_load: Option<bool>,
45 #[serde(rename = "s3.endpoint_url")]
46 pub endpoint_url: Option<String>,
47}
48
49impl S3PropertiesCommon {
50 pub fn enable_config_load(&self) -> bool {
51 if env_var_is_true(DISABLE_DEFAULT_CREDENTIAL) {
53 return false;
54 }
55 self.enable_config_load.unwrap_or(false)
56 }
57}
58
59impl EnforceSecret for S3PropertiesCommon {
60 const ENFORCE_SECRET_PROPERTIES: Set<&'static str> = phf_set! {
61 "s3.credentials.access",
62 "s3.credentials.secret",
63 };
64}
65
66#[derive(Debug, Clone, PartialEq)]
67pub struct LegacyS3;
68
69pub type LegacyS3Properties = DummyProperties<LegacyS3>;
72
73pub type LegacyS3SplitEnumerator = DummySplitEnumerator<LegacyS3>;
76
77pub type LegacyFsSplit = DummySplit<LegacyS3>;
78
79impl SourceProperties for LegacyS3Properties {
80 type Split = LegacyFsSplit;
81 type SplitEnumerator = LegacyS3SplitEnumerator;
82 type SplitReader = DummySourceReader<LegacyS3>;
83
84 const SOURCE_NAME: &'static str = LEGACY_S3_CONNECTOR;
85}