Browse Source

fix(dynamo): fix terminology erros

- Changed `username` to `aws_access_key_id`
- Changed `password` to `aws_secret_access_key`
firest 2 năm trước cách đây
mục cha
commit
e89f4d4565

+ 4 - 2
changes/ee/fix-10438.en.md

@@ -1,3 +1,5 @@
-Fix a configuration item name error in the DynamoDB data bridge.
+Fix some configuration item terminology errors in the DynamoDB data bridge:
 
-Changed `database` to `table`, because there is no term like `database` in DynamoDB, the correct concept should be `table`
+- Changed `database` to `table`
+- Changed `username` to `aws_access_key_id`
+- Changed `password` to `aws_secret_access_key`

+ 2 - 2
lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_dynamo.erl

@@ -45,8 +45,8 @@ values(_Method) ->
         url => <<"http://127.0.0.1:8000">>,
         table => <<"mqtt">>,
         pool_size => 8,
-        username => <<"root">>,
-        password => <<"******">>,
+        aws_access_key_id => <<"root">>,
+        aws_secret_access_key => <<"******">>,
         template => ?DEFAULT_TEMPLATE,
         local_topic => <<"local/topic/#">>,
         resource_opts => #{

+ 8 - 8
lib-ee/emqx_ee_bridge/test/emqx_ee_bridge_dynamo_SUITE.erl

@@ -14,8 +14,8 @@
 % DB defaults
 -define(TABLE, "mqtt").
 -define(TABLE_BIN, to_bin(?TABLE)).
--define(USERNAME, "root").
--define(PASSWORD, "public").
+-define(ACCESS_KEY_ID, "root").
+-define(SECRET_ACCESS_KEY, "public").
 -define(HOST, "dynamo").
 -define(PORT, 8000).
 -define(SCHEMA, "http://").
@@ -159,8 +159,8 @@ dynamo_config(BridgeType, Config) ->
             "  enable = true\n"
             "  url = ~p\n"
             "  table = ~p\n"
-            "  username = ~p\n"
-            "  password = ~p\n"
+            "  aws_access_key_id = ~p\n"
+            "  aws_secret_access_key = ~p\n"
             "  resource_opts = {\n"
             "    request_timeout = 500ms\n"
             "    batch_size = ~b\n"
@@ -172,8 +172,8 @@ dynamo_config(BridgeType, Config) ->
                 Name,
                 Url,
                 ?TABLE,
-                ?USERNAME,
-                ?PASSWORD,
+                ?ACCESS_KEY_ID,
+                ?SECRET_ACCESS_KEY,
                 BatchSize,
                 QueryMode
             ]
@@ -244,10 +244,10 @@ delete_table(_Config) ->
 setup_dynamo(Config) ->
     Host = ?GET_CONFIG(host, Config),
     Port = ?GET_CONFIG(port, Config),
-    erlcloud_ddb2:configure(?USERNAME, ?PASSWORD, Host, Port, ?SCHEMA).
+    erlcloud_ddb2:configure(?ACCESS_KEY_ID, ?SECRET_ACCESS_KEY, Host, Port, ?SCHEMA).
 
 directly_setup_dynamo() ->
-    erlcloud_ddb2:configure(?USERNAME, ?PASSWORD, ?HOST, ?PORT, ?SCHEMA).
+    erlcloud_ddb2:configure(?ACCESS_KEY_ID, ?SECRET_ACCESS_KEY, ?HOST, ?PORT, ?SCHEMA).
 
 directly_query(Query) ->
     directly_setup_dynamo(),

+ 24 - 32
lib-ee/emqx_ee_connector/src/emqx_ee_connector_dynamo.erl

@@ -52,32 +52,21 @@ roots() ->
 fields(config) ->
     [
         {url, mk(binary(), #{required => true, desc => ?DESC("url")})},
-        {table, mk(binary(), #{required => true, desc => ?DESC("table")})}
-        | override_schemas(
-            emqx_connector_schema_lib:relational_db_fields()
-        )
+        {table, mk(binary(), #{required => true, desc => ?DESC("table")})},
+        {aws_access_key_id,
+            mk(
+                binary(),
+                #{required => true, desc => ?DESC("aws_access_key_id")}
+            )},
+        {aws_secret_access_key,
+            mk(
+                binary(),
+                #{required => true, desc => ?DESC("aws_secret_access_key")}
+            )},
+        {pool_size, fun emqx_connector_schema_lib:pool_size/1},
+        {auto_reconnect, fun emqx_connector_schema_lib:auto_reconnect/1}
     ].
 
-override_schemas(Fields) ->
-    lists:foldr(
-        fun
-            ({username, OrigUsernameFn}, Acc) ->
-                [{username, add_default_fn(OrigUsernameFn, <<"root">>)} | Acc];
-            ({database, _}, Acc) ->
-                Acc;
-            (Field, Acc) ->
-                [Field | Acc]
-        end,
-        [],
-        Fields
-    ).
-
-add_default_fn(OrigFn, Default) ->
-    fun
-        (default) -> Default;
-        (Field) -> OrigFn(Field)
-    end.
-
 %%========================================================================================
 %% `emqx_resource' API
 %%========================================================================================
@@ -90,8 +79,8 @@ on_start(
     InstanceId,
     #{
         url := Url,
-        username := Username,
-        password := Password,
+        aws_access_key_id := AccessKeyID,
+        aws_secret_access_key := SecretAccessKey,
         table := Table,
         pool_size := PoolSize
     } = Config
@@ -99,7 +88,7 @@ on_start(
     ?SLOG(info, #{
         msg => "starting_dynamo_connector",
         connector => InstanceId,
-        config => emqx_utils:redact(Config)
+        config => redact(Config)
     }),
 
     {Schema, Server} = get_host_schema(to_str(Url)),
@@ -109,8 +98,8 @@ on_start(
         {config, #{
             host => Host,
             port => Port,
-            username => to_str(Username),
-            password => to_str(Password),
+            aws_access_key_id => to_str(AccessKeyID),
+            aws_secret_access_key => to_str(SecretAccessKey),
             schema => Schema
         }},
         {pool_size, PoolSize}
@@ -251,13 +240,13 @@ execute([{put, _} | _] = Msgs, Table) ->
 
 connect(Opts) ->
     #{
-        username := Username,
-        password := Password,
+        aws_access_key_id := AccessKeyID,
+        aws_secret_access_key := SecretAccessKey,
         host := Host,
         port := Port,
         schema := Schema
     } = proplists:get_value(config, Opts),
-    erlcloud_ddb2:configure(Username, Password, Host, Port, Schema),
+    erlcloud_ddb2:configure(AccessKeyID, SecretAccessKey, Host, Port, Schema),
 
     %% The dynamodb driver uses caller process as its connection process
     %% so at here, the connection process is the ecpool worker self
@@ -342,3 +331,6 @@ convert2binary(Value) when is_map(Value) ->
 
 do_async_reply(Result, {ReplyFun, [Context]}) ->
     ReplyFun(Context, Result).
+
+redact(Data) ->
+    emqx_utils:redact(Data, fun(Any) -> Any =:= aws_secret_access_key end).

+ 30 - 4
rel/i18n/emqx_ee_connector_dynamo.hocon

@@ -11,10 +11,36 @@ emqx_ee_connector_dynamo {
             }
     }
 
-table.desc:
-"""DynamoDB Table."""
+    table {
+        desc {
+          en: """DynamoDB Table."""
+          zh: """DynamoDB 的表。"""
+        }
+        label: {
+              en: "Table "
+              zh: "表"
+            }
+    }
 
-table.label:
-"""DynamoDB Table"""
+    aws_access_key_id {
+        desc {
+          en: """Access Key ID for connecting to DynamoDB."""
+          zh: """DynamoDB 的访问 ID。"""
+        }
+        label: {
+             en: "AWS Access Key ID"
+             zh: "连接访问 ID"
+            }
+    }
 
+    aws_secret_access_key {
+        desc {
+          en: """AWS Secret Access Key for connecting to DynamoDB."""
+          zh: """DynamoDB 的访问密钥。"""
+        }
+        label: {
+              en: "AWS Secret Access Key"
+              zh: "连接访问密钥"
+            }
+    }
 }