Cloudwatch: Fix issue with Grafana Assume Role (#84315)
This commit is contained in:
@@ -174,6 +174,23 @@ func (e *cloudWatchExecutor) getRequestContext(ctx context.Context, pluginCtx ba
|
||||
}, nil
|
||||
}
|
||||
|
||||
// getRequestContextOnlySettings is useful for resource endpoints that are called before auth has been configured such as external-id that need access to settings but nothing else
|
||||
func (e *cloudWatchExecutor) getRequestContextOnlySettings(ctx context.Context, pluginCtx backend.PluginContext, _ string) (models.RequestContext, error) {
|
||||
instance, err := e.getInstance(ctx, pluginCtx)
|
||||
if err != nil {
|
||||
return models.RequestContext{}, err
|
||||
}
|
||||
|
||||
return models.RequestContext{
|
||||
OAMAPIProvider: nil,
|
||||
MetricsClientProvider: nil,
|
||||
LogsAPIProvider: nil,
|
||||
EC2APIProvider: nil,
|
||||
Settings: instance.Settings,
|
||||
Logger: e.logger.FromContext(ctx),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (e *cloudWatchExecutor) CallResource(ctx context.Context, req *backend.CallResourceRequest, sender backend.CallResourceResponseSender) error {
|
||||
ctx = instrumentContext(ctx, "callResource", req.PluginContext)
|
||||
return e.resourceHandler.CallResource(ctx, req, sender)
|
||||
|
||||
@@ -25,7 +25,7 @@ func (e *cloudWatchExecutor) newResourceMux() *http.ServeMux {
|
||||
mux.HandleFunc("/accounts", routes.ResourceRequestMiddleware(routes.AccountsHandler, e.logger, e.getRequestContext))
|
||||
mux.HandleFunc("/namespaces", routes.ResourceRequestMiddleware(routes.NamespacesHandler, e.logger, e.getRequestContext))
|
||||
mux.HandleFunc("/log-group-fields", routes.ResourceRequestMiddleware(routes.LogGroupFieldsHandler, e.logger, e.getRequestContext))
|
||||
mux.HandleFunc("/external-id", routes.ResourceRequestMiddleware(routes.ExternalIdHandler, e.logger, e.getRequestContext))
|
||||
mux.HandleFunc("/external-id", routes.ResourceRequestMiddleware(routes.ExternalIdHandler, e.logger, e.getRequestContextOnlySettings))
|
||||
mux.HandleFunc("/regions", routes.ResourceRequestMiddleware(routes.RegionsHandler, e.logger, e.getRequestContext))
|
||||
// remove this once AWS's Cross Account Observability is supported in GovCloud
|
||||
mux.HandleFunc("/legacy-log-groups", handleResourceReq(e.handleGetLogGroups, e.logger))
|
||||
|
||||
@@ -14,8 +14,8 @@ type ExternalIdResponse struct {
|
||||
ExternalId string `json:"externalId"`
|
||||
}
|
||||
|
||||
func ExternalIdHandler(ctx context.Context, pluginCtx backend.PluginContext, reqCtxFactory models.RequestContextFactoryFunc, parameters url.Values) ([]byte, *models.HttpError) {
|
||||
reqCtx, err := reqCtxFactory(ctx, pluginCtx, "default")
|
||||
func ExternalIdHandler(ctx context.Context, pluginCtx backend.PluginContext, reqCtxBeforeAuth models.RequestContextFactoryFunc, parameters url.Values) ([]byte, *models.HttpError) {
|
||||
reqCtx, err := reqCtxBeforeAuth(ctx, pluginCtx, "")
|
||||
if err != nil {
|
||||
return nil, models.NewHttpError("error in ExternalIdHandler", http.StatusInternalServerError, err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user