public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonServiceDiscoveryConfig config = new AmazonServiceDiscoveryConfig(); config.RegionEndpoint = region; ConfigureClient(config); AmazonServiceDiscoveryClient client = new AmazonServiceDiscoveryClient(creds, config); ListNamespacesResponse resp = new ListNamespacesResponse(); do { ListNamespacesRequest req = new ListNamespacesRequest { NextToken = resp.NextToken , MaxResults = maxItems }; resp = client.ListNamespaces(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.Namespaces) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.NextToken)); }
private void DiscoverServiceUrl() { if (environment.IsDevelopment()) { SetDefaultUrl(); } else { var serviceDiscoveryClient = new AmazonServiceDiscoveryClient(Amazon.RegionEndpoint.EUWest2); var task = serviceDiscoveryClient.DiscoverInstancesAsync(new DiscoverInstancesRequest { ServiceName = "advertapi", NamespaceName = "WebAdvertisement", }); task.Wait(); var instances = task.Result.Instances; if (instances.Any()) { var ipv4 = instances[0].Attributes["AWS_INSTANCE_IPV4"]; var port = instances[0].Attributes["AWS_INSTANCE_PORT"]; baseAddress = $"http://{ipv4}:{port}"; } else { SetDefaultUrl(); } } }
public void ServiceDiscoveryCreateService() { #region example-create-service-1587235913584 var client = new AmazonServiceDiscoveryClient(); var response = client.CreateService(new CreateServiceRequest { CreatorRequestId = "567c1193-6b00-4308-bd57-ad38a8822d25", DnsConfig = new DnsConfig { DnsRecords = new List <DnsRecord> { new DnsRecord { TTL = 60, Type = "A" } }, NamespaceId = "ns-ylexjili4cdxy3xm", RoutingPolicy = "MULTIVALUE" }, Name = "myservice", NamespaceId = "ns-ylexjili4cdxy3xm" }); Service service = response.Service; #endregion }
public void ServiceDiscoveryUpdateService() { #region updateservice-example-1590117830880 var client = new AmazonServiceDiscoveryClient(); var response = client.UpdateService(new UpdateServiceRequest { Id = "srv-e4anhexample0004", Service = new ServiceChange { DnsConfig = new DnsConfigChange { DnsRecords = new List <DnsRecord> { new DnsRecord { TTL = 60, Type = "A" } } }, HealthCheckConfig = new HealthCheckConfig { FailureThreshold = 2, ResourcePath = "/", Type = "HTTP" } } }); string operationId = response.OperationId; #endregion }
public async Task <string> RegisterEc2Async(string serviceId, string instanceId, int port = 80) { const string ipv4Key = "AWS_INSTANCE_IPV4"; const string portKey = "AWS_INSTANCE_PORT"; if (string.IsNullOrEmpty(EC2InstanceMetadata.InstanceId)) { throw new InvalidEnvironmentException(); } var ipV4 = EC2InstanceMetadata.PrivateIpAddress; var serviceClient = new AmazonServiceDiscoveryClient ( new InstanceProfileAWSCredentials(), EC2InstanceMetadata.Region ); var registerResponse = await serviceClient.RegisterInstanceAsync(new RegisterInstanceRequest { InstanceId = instanceId, ServiceId = serviceId, Attributes = new Dictionary <string, string> { { ipv4Key, ipV4 }, { portKey, port.ToString() } } }); return(registerResponse.OperationId); }
public AdvertApiClient(IConfiguration configuration, HttpClient client, IMapper mapper) { this._client = client; this._mapper = mapper; var discoveryClient = new AmazonServiceDiscoveryClient(); var discoveryTask = discoveryClient.DiscoverInstancesAsync(new DiscoverInstancesRequest { ServiceName = "advertapi", NamespaceName = "WebAdvertisement" }); discoveryTask.Wait(); // This is just an example and it shouldnot be run from Constructor. best to have its own class /* * Service Discovery does not provide LB, so one thing you can do is to randomize * this list, you can try to linq expiration to randomize and randomly pick up * any instance just to scatter the load across all the instances */ var instances = discoveryTask.Result.Instances; // how to get Ip var ipv4 = instances[0].Attributes["AWS_INSTANCE_IPV4"]; var port = instances[0].Attributes["AWS_INSTANCE_PORT"]; // then use ipv4 and port to create base url _baseAddress = configuration.GetSection("AdvertApi").GetValue <string>("BaseUrl"); _client.BaseAddress = new Uri(_baseAddress); }
public BaseAmazonDiscoveryHttpClient(string serviceNamespace, string serviceName, AmazonConfiguration amazonConfiguration, HttpClient client) : base(client) { var discoverClient = new AmazonServiceDiscoveryClient(amazonConfiguration.Credentials, amazonConfiguration.RegionEndpoint); var discoverInstanceRequest = new DiscoverInstancesRequest { ServiceName = serviceName, NamespaceName = serviceNamespace, HealthStatus = HealthStatus.HEALTHY.Value }; var discoveryTask = discoverClient.DiscoverInstancesAsync(discoverInstanceRequest); discoveryTask.Wait(); var instances = discoveryTask.Result.Instances; var instance = instances.FirstOrDefault(); var ipv4 = instance.Attributes["AWS_INSTANCE_IPV4"]; var port = instance.Attributes["AWS_INSTANCE_PORT"]; _baseUrl = $"http://{ipv4}:{port}"; }
public void ServiceDiscoveryDeleteService() { #region example-delete-service-1587416462902 var client = new AmazonServiceDiscoveryClient(); var response = client.DeleteService(new DeleteServiceRequest { Id = "srv-p5zdwlg5uvvzjita" }); #endregion }
public void ServiceDiscoveryListServices() { #region example-list-services-1587236889840 var client = new AmazonServiceDiscoveryClient(); var response = client.ListServices(new ListServicesRequest { }); List <ServiceSummary> services = response.Services; #endregion }
public void ServiceDiscoveryListNamespaces() { #region example-list-namespaces-1587401553154 var client = new AmazonServiceDiscoveryClient(); var response = client.ListNamespaces(new ListNamespacesRequest { }); List <NamespaceSummary> namespaces = response.Namespaces; #endregion }
public void ServiceDiscoveryListTagsForResource() { #region listtagsforresource-example-1590093928416 var client = new AmazonServiceDiscoveryClient(); var response = client.ListTagsForResource(new ListTagsForResourceRequest { ResourceARN = "arn:aws:servicediscovery:us-east-1:123456789012:namespace/ns-ylexjili4cdxy3xm" }); List <Tag> tags = response.Tags; #endregion }
public void ServiceDiscoveryGetNamespace() { #region getnamespace-example-1590115383708 var client = new AmazonServiceDiscoveryClient(); var response = client.GetNamespace(new GetNamespaceRequest { Id = "ns-e4anhexample0004" }); Namespace awsNamespace = response.Namespace; #endregion }
protected IAmazonServiceDiscovery CreateClient(AWSCredentials credentials, RegionEndpoint region) { var config = new AmazonServiceDiscoveryConfig { RegionEndpoint = region }; Amazon.PowerShell.Utils.Common.PopulateConfig(this, config); this.CustomizeClientConfig(config); var client = new AmazonServiceDiscoveryClient(credentials, config); client.BeforeRequestEvent += RequestEventHandler; client.AfterResponseEvent += ResponseEventHandler; return(client); }
public void ServiceDiscoveryListInstances() { #region example-list-service-instances-1587236237008 var client = new AmazonServiceDiscoveryClient(); var response = client.ListInstances(new ListInstancesRequest { ServiceId = "srv-qzpwvt2tfqcegapy" }); List <InstanceSummary> instances = response.Instances; #endregion }
public void ServiceDiscoveryGetService() { #region getservice-example-1590117234294 var client = new AmazonServiceDiscoveryClient(); var response = client.GetService(new GetServiceRequest { Id = "srv-e4anhexample0004" }); Service service = response.Service; #endregion }
public void ServiceDiscoveryGetOperation() { #region example-get-operation-result-1587073807124 var client = new AmazonServiceDiscoveryClient(); var response = client.GetOperation(new GetOperationRequest { OperationId = "gv4g5meo7ndmeh4fqskygvk23d2fijwa-k9302yzd" }); Operation operation = response.Operation; #endregion }
public void ServiceDiscoveryDeleteNamespace() { #region example-delete-namespace-1587416093508 var client = new AmazonServiceDiscoveryClient(); var response = client.DeleteNamespace(new DeleteNamespaceRequest { Id = "ns-ylexjili4cdxy3xm" }); string operationId = response.OperationId; #endregion }
public void ServiceDiscoveryGetInstancesHealthStatus() { #region getinstanceshealthstatus-example-1590115176146 var client = new AmazonServiceDiscoveryClient(); var response = client.GetInstancesHealthStatus(new GetInstancesHealthStatusRequest { ServiceId = "srv-e4anhexample0004" }); Dictionary <string, string> status = response.Status; #endregion }
public void ServiceDiscoveryUpdateInstanceCustomHealthStatus() { #region updateinstancecustomhealthstatus-example-1590118408574 var client = new AmazonServiceDiscoveryClient(); var response = client.UpdateInstanceCustomHealthStatus(new UpdateInstanceCustomHealthStatusRequest { InstanceId = "i-abcd1234", ServiceId = "srv-e4anhexample0004", Status = "HEALTHY" }); #endregion }
public void ServiceDiscoveryDeregisterInstance() { #region example-deregister-a-service-instance-1587416305738 var client = new AmazonServiceDiscoveryClient(); var response = client.DeregisterInstance(new DeregisterInstanceRequest { InstanceId = "myservice-53", ServiceId = "srv-p5zdwlg5uvvzjita" }); string operationId = response.OperationId; #endregion }
public void ServiceDiscoveryGetInstance() { #region getinstance-example-1590115065598 var client = new AmazonServiceDiscoveryClient(); var response = client.GetInstance(new GetInstanceRequest { InstanceId = "i-abcd1234", ServiceId = "srv-e4anhexample0004" }); Instance instance = response.Instance; #endregion }
public void ServiceDiscoveryCreateHttpNamespace() { #region createhttpnamespace-example-1590114811304 var client = new AmazonServiceDiscoveryClient(); var response = client.CreateHttpNamespace(new CreateHttpNamespaceRequest { CreatorRequestId = "example-creator-request-id-0001", Description = "Example.com AWS Cloud Map HTTP Namespace", Name = "example-http.com" }); string operationId = response.OperationId; #endregion }
public void ServiceDiscoveryCreatePublicDnsNamespace() { #region createpublicdnsnamespace-example-1590114940910 var client = new AmazonServiceDiscoveryClient(); var response = client.CreatePublicDnsNamespace(new CreatePublicDnsNamespaceRequest { CreatorRequestId = "example-creator-request-id-0003", Description = "Example.com AWS Cloud Map Public DNS Namespace", Name = "example-public-dns.com" }); string operationId = response.OperationId; #endregion }
public void ServiceDiscoveryCreatePrivateDnsNamespace() { #region example-create-private-dns-namespace-1587058592930 var client = new AmazonServiceDiscoveryClient(); var response = client.CreatePrivateDnsNamespace(new CreatePrivateDnsNamespaceRequest { CreatorRequestId = "eedd6892-50f3-41b2-8af9-611d6e1d1a8c", Name = "example.com", Vpc = "vpc-1c56417b" }); string operationId = response.OperationId; #endregion }
public void ServiceDiscoveryDiscoverInstances() { #region example-discover-registered-instances-1587236343568 var client = new AmazonServiceDiscoveryClient(); var response = client.DiscoverInstances(new DiscoverInstancesRequest { HealthStatus = "ALL", MaxResults = 10, NamespaceName = "example.com", ServiceName = "myservice" }); List <HttpInstanceSummary> instances = response.Instances; #endregion }
public void ServiceDiscoveryUntagResource() { #region untagresource-example-1590094024672 var client = new AmazonServiceDiscoveryClient(); var response = client.UntagResource(new UntagResourceRequest { ResourceARN = "arn:aws:servicediscovery:us-east-1:123456789012:namespace/ns-ylexjili4cdxy3xm", TagKeys = new List <string> { "Project", "Department" } }); #endregion }
public void ServiceDiscoveryRegisterInstance() { #region example-register-instance-1587236116314 var client = new AmazonServiceDiscoveryClient(); var response = client.RegisterInstance(new RegisterInstanceRequest { Attributes = new Dictionary <string, string> { { "AWS_INSTANCE_IPV4", "172.2.1.3" }, { "AWS_INSTANCE_PORT", "808" } }, CreatorRequestId = "7a48a98a-72e6-4849-bfa7-1a458e030d7b", InstanceId = "myservice-53", ServiceId = "srv-p5zdwlg5uvvzjita" }); string operationId = response.OperationId; #endregion }
public AdvertApiClient(IConfiguration configuration, HttpClient client, IMapper mapper) { _client = client; _mapper = mapper; var discoveryClient = new AmazonServiceDiscoveryClient(); var discoveryTask = discoveryClient.DiscoverInstancesAsync(new DiscoverInstancesRequest() { ServiceName = "AdvertAPI", NamespaceName = "WebAdvertisement", }); discoveryTask.GetAwaiter(); var instances = discoveryTask.Result.Instances; var ipv4 = instances[0].Attributes["AWS_INSTANCE_IPV4"]; var port = instances[0].Attributes["AWS_INSTANCE_PORT"]; _baseAddress = configuration.GetSection("AdvertApi").GetValue <string>("BaseUrl"); }
private async Task RegisterToCloudMap() { const string serviceId = "srv-ym7ek4whzb5yspdc"; var instanceId = EC2InstanceMetadata.InstanceId; if (!string.IsNullOrEmpty(instanceId)) { var ipv4 = EC2InstanceMetadata.PrivateIpAddress; var client = new AmazonServiceDiscoveryClient(); await client.RegisterInstanceAsync(new RegisterInstanceRequest { InstanceId = instanceId, ServiceId = serviceId, Attributes = new Dictionary <string, string> { { "AWS_INSTANCE_IPV4", ipv4 }, { "AWS_INSTANCE_PORT", "80" } } }); } }
private async Task RegisterToCloudMap() { var instanceId = EC2InstanceMetadata.InstanceId; string serviceId = Configuration.GetValue <string>("ServiceId"); if (!string.IsNullOrEmpty(instanceId)) { var ipv4 = EC2InstanceMetadata.PrivateIpAddress; var client = new AmazonServiceDiscoveryClient(Amazon.RegionEndpoint.EUWest2); await client.RegisterInstanceAsync(new RegisterInstanceRequest { ServiceId = serviceId, InstanceId = instanceId, Attributes = new Dictionary <string, string>() { { "AWS_INSTANCE_IPV4", ipv4 }, { "AWS_INSTANCE_PORT", "80" } } }); } }