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.
This commit is contained in:
Andrew Mayorov 2024-02-08 22:08:30 +01:00
parent 82850b5894
commit a5266f68ec
No known key found for this signature in database
GPG Key ID: 2837C62ACFBFED5D
2 changed files with 3 additions and 18 deletions

View File

@ -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, #{}).

View File

@ -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(