public void CommonSetUp() { var privateKey = Encoding.UTF8.GetString(Convert.FromBase64String("LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlDWEFJQkFBS0JnUUNxR0t1a08xRGU3emhaajYrSDBxdGpUa1Z4d1RDcHZLZTRlQ1owRlBxcmkwY2IySlpmWEovRGdZU0Y2dlVwCndtSkc4d1ZRWktqZUdjakRPTDVVbHN1dXNGbmNDeldCUTdSS05VU2VzbVFSTVNHa1ZiMS8zaitza1o2VXRXKzV1MDlsSE5zajZ0UTUKMXMxU1ByQ0JrZWRiTmYwVHAwR2JNSkR5UjRlOVQwNFpad0lEQVFBQkFvR0FGaWprbzU2K3FHeU44TTBSVnlhUkFYeisreFRxSEJMaAozdHg0VmdNdHJRK1dFZ0NqaG9Ud28yM0tNQkF1SkdTWW5SbW9CWk0zbE1mVEtldklrQWlkUEV4dllDZG01ZFlxM1hUb0xra0x2NUwyCnBJSVZPRk1ERytLRVNuQUZWN2wyYytjbnpSTVcwK2I2ZjhtUjFDSnpadXhWTEw2UTAyZnZMaTU1L21iU1l4RUNRUURlQXc2ZmlJUVgKR3VrQkk0ZU1aWnQ0bnNjeTJvMTJLeVluZXIzVnBvZUUrTnAycStaM3B2QU1kL2FOelEvVzlXYUkrTlJmY3hVSnJtZlB3SUdtNjNpbApBa0VBeENMNUhRYjJiUXI0QnlvcmNNV20vaEVQMk1aelJPVjczeUY0MWhQc1JDOW02NktyaGVPOUhQVEp1bzMvOXM1cCtzcUd4T2xGCkwwTkR0NFNrb3NqZ0d3SkFGa2x5UjF1Wi93UEpqajYxMWNkQmN6dGxQZHFveHNzUUduaDg1QnpDai91M1dxQnBFMnZqdnl5dnlJNWsKWDZ6azdTMGxqS3R0MmpueTIrMDBWc0JlclFKQkFKR0MxTWc1T3lkbzVOd0Q2QmlST3JQeEdvMmJwVGJ1L2ZoclQ4ZWJIa1R6MmVwbApVOVZRUVNRelkxb1pNVlg4aTFtNVdVVExQejJ5TEpJQlFWZFhxaE1DUUJHb2l1U29TamFmVWhWN2kxY0VHcGI4OGg1TkJZWnpXWEdaCjM3c0o1UXNXK3NKeW9OZGUzeEg4dmRYaHpVN2VUODJENlgvc2N3OVJaeisvNnJDSjRwMD0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=")); var cf = new AmazonCloudFrontClient(RegionEndpoint.EUNorth1); _urlSigner = new UrlSigner(cf, privateKey, "ABCD3FGH1JKLM"); }
public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonCloudFrontConfig config = new AmazonCloudFrontConfig(); config.RegionEndpoint = region; ConfigureClient(config); AmazonCloudFrontClient client = new AmazonCloudFrontClient(creds, config); ListStreamingDistributionsResponse resp = new ListStreamingDistributionsResponse(); do { ListStreamingDistributionsRequest req = new ListStreamingDistributionsRequest { Marker = resp.StreamingDistributionListNextMarker , MaxItems = maxItems }; resp = client.ListStreamingDistributions(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.StreamingDistributionListItems) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.StreamingDistributionListNextMarker)); }
/// <summary> /// Allow only few updations to cloudfront like SSL /// </summary> /// <param name="distributionId"></param> /// <param name="etag"></param> /// <returns></returns> public static UpdateDistributionResponse UpdateCloudFront(string distributionId, string etag, ViewerCertificate viewerCertificate = null) { try { if (String.IsNullOrEmpty(distributionId) || String.IsNullOrEmpty(etag)) { return(null); } var client = new AmazonCloudFrontClient(RegionEndpoint.APSouth1); var request = new UpdateDistributionRequest() { Id = distributionId, IfMatch = etag, DistributionConfig = new DistributionConfig() { } }; if (viewerCertificate != null) { request.DistributionConfig.ViewerCertificate = viewerCertificate; } return(client.UpdateDistributionAsync(request).Result); } catch (Exception ex) { //TODO - log the exception } return(null); }
public S3Util(string key, string secret, string region) { _s3client = new AmazonS3Client(key, secret, RegionEndpoint.GetBySystemName(region)); _cfclient = new AmazonCloudFrontClient(key, secret, RegionEndpoint.GetBySystemName(region)); }
private static void UploadWeb() { var path = "../../../Web/"; try { var m = Directory.GetFiles(path); Console.WriteLine("Starting Web Upload"); TransferUtility directoryTransferUtility = new TransferUtility(new AmazonS3Client(Amazon.RegionEndpoint.USWest2), new TransferUtilityConfig() { ConcurrentServiceRequests = 50, }); var transferUtilityUploadDirectoryRequest = new TransferUtilityUploadDirectoryRequest() { Directory = path, BucketName = "socialwargames.com", SearchPattern = "*.*", SearchOption = SearchOption.AllDirectories, UploadFilesConcurrently = true, CannedACL = S3CannedACL.PublicRead }; transferUtilityUploadDirectoryRequest.UploadDirectoryProgressEvent += (sender, e) => { Console.WriteLine("Files Uploaded: " + e.NumberOfFilesUploaded); }; directoryTransferUtility.UploadDirectory(transferUtilityUploadDirectoryRequest); Console.WriteLine("Starting Invalidate"); AmazonCloudFrontClient oClient = new AmazonCloudFrontClient(Amazon.RegionEndpoint.USWest2); CreateInvalidationRequest oRequest = new CreateInvalidationRequest(); oRequest.DistributionId = "E34LW6CB5ZCWQU"; oRequest.InvalidationBatch = new InvalidationBatch { CallerReference = DateTime.Now.Ticks.ToString(), Paths = new Paths() { Items = new List <string>() { "/*" }, Quantity = 1 } }; CreateInvalidationResponse oResponse = oClient.CreateInvalidation(oRequest); oClient.Dispose(); Console.WriteLine("Done Web Upload"); } catch (AmazonS3Exception e) { Console.WriteLine(e.Message, e.InnerException); } }
/// <summary> /// Default constructor. This constructor is used by Lambda to construct the instance. When invoked in a Lambda environment /// the AWS credentials will come from the IAM role associated with the function and the AWS region will be set to the /// region the Lambda function is executed in. /// </summary> public Function() { S3Client = new AmazonS3Client(); distribuitionCloudFrontId = Environment.GetEnvironmentVariable("CloudFrontDistribution"); if (!string.IsNullOrWhiteSpace(distribuitionCloudFrontId)) { cfClient = new AmazonCloudFrontClient(); } }
public static string AddDomainToDistribution(string AWSAccesKey, string AWSSecretKey, string distributionId, string domainName) { try { if (String.IsNullOrEmpty(distributionId)) { throw new Exception("distributionId cannot be null"); } if (String.IsNullOrEmpty(domainName)) { throw new Exception("domain name cannnot be null"); } domainName = domainName.Trim(' '); domainName = domainName.ToLower(); using (AmazonCloudFrontClient cfClient = new AmazonCloudFrontClient(AWSAccesKey, AWSSecretKey, RegionEndpoint.APSouth1)) { GetDistributionConfigRequest distributionConfig = new GetDistributionConfigRequest { Id = distributionId }; var config = cfClient.GetDistributionConfigAsync(distributionConfig).Result; // Set a new config DistributionConfig newConfig = config.DistributionConfig; if (newConfig.Aliases.Items.Contains(domainName)) { return("already present"); } newConfig.Aliases.Items.Add(domainName); newConfig.Aliases.Quantity += 1; // Update UpdateDistributionRequest req = new UpdateDistributionRequest { Id = distributionId, IfMatch = config.ETag, DistributionConfig = newConfig }; var response = cfClient.UpdateDistributionAsync(req).Result; } return("success"); } catch (Exception ex) { throw new Exception(ex.Message); } }
protected IAmazonCloudFront CreateClient(AWSCredentials credentials, RegionEndpoint region) { var config = new AmazonCloudFrontConfig { RegionEndpoint = region }; Amazon.PowerShell.Utils.Common.PopulateConfig(this, config); this.CustomizeClientConfig(config); var client = new AmazonCloudFrontClient(credentials, config); client.BeforeRequestEvent += RequestEventHandler; client.AfterResponseEvent += ResponseEventHandler; return(client); }
/// <summary> /// Config is required while updating a Distribution /// </summary> /// <param name="distributionId"></param> /// <returns></returns> public static GetDistributionConfigResponse GetDistributionConfigResponse(string distributionId) { try { if (String.IsNullOrEmpty(distributionId)) { return(null); } var client = new AmazonCloudFrontClient(RegionEndpoint.APSouth1); var request = new GetDistributionConfigRequest() { Id = distributionId }; return(client.GetDistributionConfigAsync(request).Result); } catch (Exception ex) { //TODO - log the exception } return(null); }
/// <summary> /// Invalidates objects from a CloudFront distribution. /// </summary> /// <param name="distributionId">The distribution to invalidate objects from.</param> /// <param name="items">The path of the objects to invalidate.</param> /// <param name="reference">A unique name that ensures the request can't be replayed.</param> /// <param name="settings">The <see cref="CloudFrontSettings"/> required to connect to Amazon CloudFront.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> public async Task <string> CreateInvalidation(string distributionId, IList <string> items, string reference, CloudFrontSettings settings, CancellationToken cancellationToken = default(CancellationToken)) { //Get Reference if (String.IsNullOrEmpty(reference)) { reference = DateTime.Now.Ticks.ToString(); } //Correct Paths List <string> paths = new List <string>(); foreach (string item in items) { if (!item.StartsWith("/")) { paths.Add("/" + item); } else { paths.Add(item); } } //Create Request InvalidationBatch batch = new InvalidationBatch() { Paths = new Paths() { Items = paths.ToList(), Quantity = items.Count }, CallerReference = reference }; CreateInvalidationRequest request = new CreateInvalidationRequest() { DistributionId = distributionId, InvalidationBatch = batch }; //Send Request _Log.Verbose("Create Invalidation {0}", distributionId); AmazonCloudFrontClient client = this.GetClient(settings); CreateInvalidationResponse response = await client.CreateInvalidationAsync(request); if (response.HttpStatusCode == System.Net.HttpStatusCode.Created) { return(response.Invalidation.Id); } else { _Log.Error("Error invalidating object {0}", distributionId); return(""); } }
public CloudFrontMain(BasicAWSCredentials credentials, string awsregion) { RegionEndpoint region = RegionEndpoint.GetBySystemName(awsregion); _Client = new AmazonCloudFrontClient(credentials, region); }
public AWSCloudFrontAPI(AWSCloudFrontOptions awsCloudFrontOptions) { this.awsCloudFrontOptions = awsCloudFrontOptions; basicAWSCredentials = new BasicAWSCredentials(awsCloudFrontOptions.Key, awsCloudFrontOptions.Secret); amazonCloudFrontClient = new AmazonCloudFrontClient(basicAWSCredentials, RegionEndpoint.GetBySystemName(awsCloudFrontOptions.Region)); }
/// <summary> /// TODO: change OriginProtocolPolicy to matchViewer /// Save complete request and response in logCollection /// </summary> /// <param name="customerId"></param> public static CreateDistributionWithTagsResponse CreateCloudFront(string customerId, string domainName) { try { var client = new AmazonCloudFrontClient(RegionEndpoint.APSouth1); DistributionConfigWithTags distributionConfig = new DistributionConfigWithTags() { DistributionConfig = new DistributionConfig() { Aliases = new Aliases() { Items = new List <string>() { domainName }, Quantity = 1 }, Comment = customerId, Enabled = true, Logging = new LoggingConfig() { Enabled = true, Bucket = CloudFrontLogBucketName, Prefix = CloudFrontLogBucketPrefixName, IncludeCookies = false }, DefaultCacheBehavior = new DefaultCacheBehavior() { TargetOriginId = KitsuneLoadBalancerOriginId, AllowedMethods = new AllowedMethods() { Items = new List <string>() { "GET", "HEAD", "OPTIONS", "PUT", "POST", "PATCH", "DELETE" }, Quantity = 7 }, Compress = false, DefaultTTL = 86400, MaxTTL = 259200, MinTTL = 86400, ViewerProtocolPolicy = new ViewerProtocolPolicy("allow-all"), ForwardedValues = new ForwardedValues() { Headers = new Headers() { Items = new List <string>() { "CloudFront-Forwarded-Proto", "CloudFront-Is-Desktop-Viewer", "CloudFront-Is-Mobile-Viewer", "CloudFront-Viewer-Country", "Host", "Origin", "Referer" }, Quantity = 7 }, QueryString = true, Cookies = new CookiePreference() { Forward = new ItemSelection("all") } }, TrustedSigners = new TrustedSigners() { Enabled = false, Items = new List <string>() { }, Quantity = 0 } }, Origins = new Origins() { Items = new List <Origin>() { new Origin() { CustomOriginConfig = new CustomOriginConfig() { HTTPPort = 80, HTTPSPort = 443, OriginKeepaliveTimeout = 5, OriginReadTimeout = 30, OriginProtocolPolicy = OriginProtocolPolicy.HttpOnly, OriginSslProtocols = new OriginSslProtocols() { Items = new List <string>() { "TLSv1", "TLSv1.1", "TLSv1.2" }, Quantity = 3 } }, DomainName = KitsuneLoadBalancerAliasId, Id = KitsuneLoadBalancerOriginId } }, Quantity = 1 }, CallerReference = DateTime.Now.ToString() }, Tags = new Tags() { Items = new List <Tag>() { new Tag() { Key = "KITSUNE-CUSTOMERID", Value = customerId } } } }; var request = new CreateDistributionWithTagsRequest() { DistributionConfigWithTags = distributionConfig }; return(client.CreateDistributionWithTagsAsync(request).Result); } catch (Exception ex) { //TODO - log exception } return(null); }