diff --git a/pkg/cloudprovider/providers/aws/aws.go b/pkg/cloudprovider/providers/aws/aws.go index f13598bab99..13db9301a5b 100644 --- a/pkg/cloudprovider/providers/aws/aws.go +++ b/pkg/cloudprovider/providers/aws/aws.go @@ -480,6 +480,20 @@ func (p *awsSDKProvider) addHandlers(regionName string, h *request.Handlers) { Fn: delayer.AfterRetry, }) } + + p.addAPILoggingHandlers(h) +} + +func (p *awsSDKProvider) addAPILoggingHandlers(h *request.Handlers) { + h.Send.PushBackNamed(request.NamedHandler{ + Name: "k8s/api-request", + Fn: awsSendHandlerLogger, + }) + + h.ValidateResponse.PushFrontNamed(request.NamedHandler{ + Name: "k8s/api-validate-response", + Fn: awsValidateResponseHandlerLogger, + }) } // Get a CrossRequestRetryDelay, scoped to the region, not to the request. @@ -550,6 +564,7 @@ func (p *awsSDKProvider) Autoscaling(regionName string) (ASG, error) { func (p *awsSDKProvider) Metadata() (EC2Metadata, error) { client := ec2metadata.New(session.New(&aws.Config{})) + p.addAPILoggingHandlers(&client.Handlers) return client, nil } diff --git a/pkg/cloudprovider/providers/aws/log_handler.go b/pkg/cloudprovider/providers/aws/log_handler.go index f1c88fd1e42..86aa30628db 100644 --- a/pkg/cloudprovider/providers/aws/log_handler.go +++ b/pkg/cloudprovider/providers/aws/log_handler.go @@ -23,12 +23,26 @@ import ( // Handler for aws-sdk-go that logs all requests func awsHandlerLogger(req *request.Request) { + service, name := awsServiceAndName(req) + glog.V(4).Infof("AWS request: %s %s", service, name) +} + +func awsSendHandlerLogger(req *request.Request) { + service, name := awsServiceAndName(req) + glog.V(4).Infof("AWS API Send: %s %s %v %v", service, name, req.Operation, req.Params) +} + +func awsValidateResponseHandlerLogger(req *request.Request) { + service, name := awsServiceAndName(req) + glog.V(4).Infof("AWS API ValidateResponse: %s %s %v %v %s", service, name, req.Operation, req.Params, req.HTTPResponse.Status) +} + +func awsServiceAndName(req *request.Request) (string, string) { service := req.ClientInfo.ServiceName name := "?" if req.Operation != nil { name = req.Operation.Name } - - glog.V(4).Infof("AWS request: %s %s", service, name) + return service, name }