feat(bridge-s3): also map credentials / aggreg upload errors
This commit is contained in:
parent
fb9afd8313
commit
486a041adf
|
@ -274,7 +274,7 @@ channel_status(#{mode := aggregated, aggreg_id := AggregId, bucket := Bucket}, S
|
|||
check_bucket_accessible(Bucket, #{client_config := Config}) ->
|
||||
case emqx_s3_client:aws_config(Config) of
|
||||
{error, Reason} ->
|
||||
throw({unhealthy_target, Reason});
|
||||
throw({unhealthy_target, map_error_details(Reason)});
|
||||
AWSConfig ->
|
||||
try erlcloud_s3:list_objects(Bucket, [{max_keys, 1}], AWSConfig) of
|
||||
Props when is_list(Props) ->
|
||||
|
@ -293,8 +293,7 @@ check_aggreg_upload_errors(AggregId) ->
|
|||
%% TODO
|
||||
%% This approach means that, for example, 3 upload failures will cause
|
||||
%% the channel to be marked as unhealthy for 3 consecutive health checks.
|
||||
ErrorMessage = emqx_utils:format(Error),
|
||||
throw({unhealthy_target, ErrorMessage});
|
||||
throw({unhealthy_target, map_error_details(Error)});
|
||||
[] ->
|
||||
ok
|
||||
end.
|
||||
|
@ -399,6 +398,10 @@ map_error_details({socket_error, Reason}) ->
|
|||
emqx_utils:format("Socket error: ~s", [emqx_utils:readable_error_msg(Reason)]);
|
||||
map_error_details({http_error, _, _, _} = Error) ->
|
||||
emqx_utils:format("AWS error: ~s", [map_aws_error_details(Error)]);
|
||||
map_error_details({failed_to_obtain_credentials, Error}) ->
|
||||
emqx_utils:format("Unable to obtain AWS credentials: ~s", [map_error_details(Error)]);
|
||||
map_error_details({upload_failed, Error}) ->
|
||||
map_error_details(Error);
|
||||
map_error_details(Error) ->
|
||||
Error.
|
||||
|
||||
|
|
|
@ -134,6 +134,22 @@ action_config(Name, ConnectorId) ->
|
|||
t_start_stop(Config) ->
|
||||
emqx_bridge_v2_testlib:t_start_stop(Config, s3_bridge_stopped).
|
||||
|
||||
t_create_unavailable_credentials(Config) ->
|
||||
ConnectorName = ?config(connector_name, Config),
|
||||
ConnectorType = ?config(connector_type, Config),
|
||||
ConnectorConfig = maps:without(
|
||||
[<<"access_key_id">>, <<"secret_access_key">>],
|
||||
?config(connector_config, Config)
|
||||
),
|
||||
?assertMatch(
|
||||
{ok,
|
||||
{{_HTTP, 201, _}, _, #{
|
||||
<<"status_reason">> :=
|
||||
<<"Unable to obtain AWS credentials: Socket error:", _/bytes>>
|
||||
}}},
|
||||
emqx_bridge_v2_testlib:create_connector_api(ConnectorName, ConnectorType, ConnectorConfig)
|
||||
).
|
||||
|
||||
t_ignore_batch_opts(Config) ->
|
||||
{ok, {_Status, _, Bridge}} = emqx_bridge_v2_testlib:create_bridge_api(Config),
|
||||
?assertMatch(
|
||||
|
|
Loading…
Reference in New Issue