From a5266f68ec8c874c57097c699fdebe559e378706 Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Thu, 8 Feb 2024 22:08:30 +0100 Subject: [PATCH] feat(s3): switch schema to use secrets with loader support This will make applications using `emqx_s3` follow the same conventions as bridges and support loading secrets from files at runtime. --- apps/emqx_s3/src/emqx_s3_schema.erl | 19 ++----------------- apps/emqx_s3/test/emqx_s3_schema_SUITE.erl | 2 +- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/apps/emqx_s3/src/emqx_s3_schema.erl b/apps/emqx_s3/src/emqx_s3_schema.erl index 5478f6416..405212984 100644 --- a/apps/emqx_s3/src/emqx_s3_schema.erl +++ b/apps/emqx_s3/src/emqx_s3_schema.erl @@ -14,9 +14,6 @@ -export([translate/1]). -export([translate/2]). --type secret_access_key() :: string() | function(). --reflect_type([secret_access_key/0]). - roots() -> [s3]. @@ -36,13 +33,9 @@ fields(s3) -> } )}, {secret_access_key, - mk( - typerefl:alias("string", secret_access_key()), + emqx_schema_secret:mk( #{ - desc => ?DESC("secret_access_key"), - required => false, - sensitive => true, - converter => fun secret/2 + desc => ?DESC("secret_access_key") } )}, {bucket, @@ -148,14 +141,6 @@ desc(s3) -> desc(transport_options) -> "Options for the HTTP transport layer used by the S3 client". -secret(undefined, #{}) -> - undefined; -secret(Secret, #{make_serializable := true}) -> - unicode:characters_to_binary(emqx_secret:unwrap(Secret)); -secret(Secret, #{}) -> - _ = is_binary(Secret) orelse throw({expected_type, string}), - emqx_secret:wrap(unicode:characters_to_list(Secret)). - translate(Conf) -> translate(Conf, #{}). diff --git a/apps/emqx_s3/test/emqx_s3_schema_SUITE.erl b/apps/emqx_s3/test/emqx_s3_schema_SUITE.erl index ad887d1a6..323dd05c2 100644 --- a/apps/emqx_s3/test/emqx_s3_schema_SUITE.erl +++ b/apps/emqx_s3/test/emqx_s3_schema_SUITE.erl @@ -132,7 +132,7 @@ t_sensitive_config_no_leak(_Config) -> Error = #{ kind := validation_error, path := "s3.secret_access_key", - reason := {expected_type, string} + reason := invalid_type } ]} when map_size(Error) == 3, emqx_s3_schema:translate(