protected void LogMetrics(IExecutionContext executionContext) { RequestMetrics metrics = executionContext.RequestContext.Metrics; if (executionContext.RequestContext.ClientConfig.LogMetrics) { string errors = metrics.GetErrors(); if (!string.IsNullOrEmpty(errors)) { Logger.InfoFormat("Request metrics errors: {0}", errors); } Logger.InfoFormat("Request metrics: {0}", metrics); } }
/// <summary> /// Signs the specified request with the AWS2 signing protocol by using the /// AWS account credentials given in the method parameters. /// </summary> /// <param name="awsAccessKeyId">The AWS public key</param> /// <param name="awsSecretAccessKey">The AWS secret key used to sign the request in clear text</param> /// <param name="clientConfig">The configuration that specifies which hashing algorithm to use</param> /// <param name="request">The request to have the signature compute for</param> /// <param name="secureKey">The AWS secret key stored in a secure string</param> /// <param name="metrics">Request metrics</param> /// <exception cref="Amazon.Runtime.SignatureException">If any problems are encountered while signing the request</exception> public override void Sign(IRequest request, ClientConfig clientConfig, RequestMetrics metrics, string awsAccessKeyId, string awsSecretAccessKey, SecureString secureKey) { if (String.IsNullOrEmpty(awsAccessKeyId)) { throw new Exception("The AWS Access Key ID cannot be NULL or a Zero length string"); } request.Parameters["AWSAccessKeyId"] = awsAccessKeyId; request.Parameters["SignatureVersion"] = clientConfig.SignatureVersion; request.Parameters["SignatureMethod"] = clientConfig.SignatureMethod.ToString(); request.Parameters["Timestamp"] = AWSSDKUtils.FormattedCurrentTimestampISO8601; string toSign = AWSSDKUtils.CalculateStringToSignV2(request.Parameters, clientConfig.DetermineServiceURL()); metrics.AddProperty(RequestMetrics.Metric.StringToSign, toSign); string auth = ComputeHash(toSign, awsSecretAccessKey, secureKey, clientConfig.SignatureMethod); request.Parameters["Signature"] = auth; }
internal TimingEvent(RequestMetrics metrics, Metric metric) { this.metrics = metrics; this.metric = metric; }
public RequestContext(bool enableMetrics) { Metrics = new RequestMetrics(); Metrics.IsEnabled = enableMetrics; }