{"id":44556157,"url":"https://github.com/app-net-interface/awi-infra-guard","last_synced_at":"2026-02-13T21:43:15.350Z","repository":{"id":232678030,"uuid":"758173033","full_name":"app-net-interface/awi-infra-guard","owner":"app-net-interface","description":"Infra guard provides visibility and monitoring of infrastructure resources for AWS, GCP and Azure. It can watch resource tags for changes across multiple cloud providers.","archived":false,"fork":false,"pushed_at":"2025-08-09T19:14:44.000Z","size":1745,"stargazers_count":3,"open_issues_count":5,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-09T21:09:45.595Z","etag":null,"topics":["aws","aws-ec2","azure","cloudops","gcp","kubernetes","kubernetes-cluster","multicloud","netops"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/app-net-interface.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-02-15T19:08:42.000Z","updated_at":"2025-06-09T23:51:10.000Z","dependencies_parsed_at":"2024-08-13T20:48:30.573Z","dependency_job_id":"2e9d5e56-c286-41e9-a50d-277511925eeb","html_url":"https://github.com/app-net-interface/awi-infra-guard","commit_stats":null,"previous_names":["app-net-interface/awi-infra-guard"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/app-net-interface/awi-infra-guard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/app-net-interface%2Fawi-infra-guard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/app-net-interface%2Fawi-infra-guard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/app-net-interface%2Fawi-infra-guard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/app-net-interface%2Fawi-infra-guard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/app-net-interface","download_url":"https://codeload.github.com/app-net-interface/awi-infra-guard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/app-net-interface%2Fawi-infra-guard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29419008,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","aws-ec2","azure","cloudops","gcp","kubernetes","kubernetes-cluster","multicloud","netops"],"created_at":"2026-02-13T21:43:14.627Z","updated_at":"2026-02-13T21:43:15.341Z","avatar_url":"https://github.com/app-net-interface.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# awi-infra-guard\n\nSDK/GRPC service to fetch infrastructure resource information and push updates to multiple infrastructure provider such as AWS, GCP, AZURE, VMWare and ACI.\n\n## Supported infrastructure providers\n\nCurrently supported providers:\n\n- AWS\n- Google Cloud Platform (GCP).\n- Azure\n\n## Kubernetes support\n\nKubernetes clusters operations are supported. Optionally, clusters information can be provided in kube config file present in\nHOME/.kube/config. EKS and GKE clusters should be discovered automatically.\n\n## awi-infra-guard as a library or as a service\n\nawi-infra-guard can be used an imported Go library or as a standalone GRPC service.\n\n### Credentials configuration\n\n#### AWS credentials\n\nSetup .aws/configuration file in your home directory or specify environment variables based on instruction from AWS\n[guide](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials).\n\nMultiple accounts are supported, they can be configured using profiles in credentials file, instructions can be found in\n\"Specifying profiles\" section in [guide](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials).\n\n#### GCP credentials\n\nSetup application default credentials based on instructions from GCP [guide](https://cloud.google.com/docs/authentication/application-default-credentials).\nMultiple projects are supported, for instructions how to specify them check \"awi-infra-guard as a library\" and \"awi-infra-guard as a service\"\nsections.\n\n### awi-infra-guard as a library\n\nTo use awi-infra-guard as a library import github.com/app-net-interface/awi-infra-guard package:\n\n```sh\ngo get github.com/app-net-interface/awi-infra-guard@develop\n```\n\nInitialize provider strategy and use it for calling requests as in an example below:\n\n```go\npackage main\n\nimport (\n    \"context\"\n    \"fmt\"\n\n    \"github.com/sirupsen/logrus\"\n    \"github.com/app-net-interface/awi-infra-guard/provider\"\n)\n\nfunc main() {\n    ctx := context.Background()\n    providerStrategy := provider.NewRealProviderStrategy(ctx, logrus.New(), \"\")\n\n    awsProvider, err := providerStrategy.GetProvider(context.TODO(), \"aws\")\n    if err != nil {\n        panic(err)\n    }\n    instances, err := awsProvider.ListInstances(context.TODO(), \u0026infrapb.ListInstancesRequest{})\n    if err != nil {\n        panic(err)\n    }\n    fmt.Println(\"Instances in AWS:\")\n    for _, instance := range instances {\n        fmt.Println(instance.VPCID, instance.Name)\n    }\n\n    gcpProvider, err := providerStrategy.GetProvider(context.TODO(), \"gcp\")\n    if err != nil {\n        panic(err)\n    }\n    instances, err = gcpProvider.ListInstances(context.TODO(), \u0026infrapb.ListInstancesRequest{})\n    if err != nil {\n        panic(err)\n    }\n    fmt.Println(\"Instances in GCP:\")\n    for _, instance := range instances {\n        fmt.Println(instance.VPCID, instance.Name)\n    }\n}\n```\n\n### awi-infra-guard as a service\n\nTo run awi-infra-guard as a separate service you can start it using `make run` command.\n\nExample:\n\n```sh\n$ make run\ngo run main.go\nINFO[0000] server listening at [::]:50052\n```\n\nYou can connect to this server using [grpc_cli tool](https://github.com/grpc/grpc/blob/master/doc/command_line_tool.md).\nExample:\n\n```sh\n$ grpc_cli call localhost:50052 ListInstances \"provider: 'aws', vpc_id: 'vpc-04a1eaad3aa81310f'\"\nconnecting to localhost:50052\ninstances {\n  id: \"i-07cedcd7c771da56e\"\n  name: \"machine-learning-dataset-vm-1\"\n  privateIP: \"10.60.1.186\"\n  subnetID: \"subnet-0fac44e425b433ef4\"\n  vpcId: \"vpc-04a1eaad3aa81310f\"\n}\ninstances {\n  id: \"i-0ea4ada9d758c0d4a\"\n  name: \"dataset-database\"\n  privateIP: \"10.60.1.193\"\n  subnetID: \"subnet-0fac44e425b433ef4\"\n  vpcId: \"vpc-04a1eaad3aa81310f\"\n}\nRpc succeeded with OK status\n\n$ grpc_cli call localhost:50052 ListClusters \"\"\nconnecting to localhost:50052\nclusters {\n  name: \"gke-demo-cluster\"\n}\nclusters {\n  name: \"eks-awi-demo\"\n}\nclusters {\n  name: \"kind-awi\"\n}\n\n$ grpc_cli call localhost:50052 ListPods \"cluster_name: 'eks-awi-demo'\"\nconnecting to localhost:50052\npods {\n  cluster: \"eks-awi-demo\"\n  namespace: \"kube-system\"\n  name: \"coredns-6ff9c46cd8-m8lwv\"\n  labels {\n    key: \"eks.amazonaws.com/component\"\n    value: \"coredns\"\n  }\n  labels {\n    key: \"k8s-app\"\n    value: \"kube-dns\"\n  }\n  labels {\n    key: \"pod-template-hash\"\n    value: \"6ff9c46cd8\"\n  }\n}\npods {\n  cluster: \"eks-awi-demo\"\n  namespace: \"kube-system\"\n  name: \"coredns-6ff9c46cd8-s4b95\"\n  labels {\n    key: \"eks.amazonaws.com/component\"\n    value: \"coredns\"\n  }\n  labels {\n    key: \"k8s-app\"\n    value: \"kube-dns\"\n  }\n  labels {\n    key: \"pod-template-hash\"\n    value: \"6ff9c46cd8\"\n  }\n}\nRpc succeeded with OK status\n```\n\nExample Go client usage can be found in example/client directory:\n\n```sh\n$ cd example/client\n$ go run main.go\nconnecting to localhost:50052\nconnected\ninstance ID:\"4894037167304189131\" Name:\"development-dashboard-1\" PublicIP:\"35.212.252.162\" PrivateIP:\"10.150.0.2\" SubnetID:\"development-subnet-1\" VPCID:\"development\"\ninstance ID:\"8825713928722555929\" Name:\"development-database-1\" PublicIP:\"35.212.129.188\" PrivateIP:\"10.150.0.3\" SubnetID:\"development-subnet-1\" VPCID:\"development\"\ninstance ID:\"7411617185127835047\" Name:\"development-database-2\" PublicIP:\"35.212.176.237\" PrivateIP:\"10.150.0.4\" SubnetID:\"development-subnet-1\" VPCID:\"development\"\ninstance ID:\"258418092159915173\" Name:\"development-database-3\" PublicIP:\"35.212.218.134\" PrivateIP:\"10.150.0.7\" SubnetID:\"development-subnet-1\" VPCID:\"development\"\nadding inbound rule to instances in development VPC with label app_type:database\nrule id 3114023319057261683\nmatched instances IDs [8825713928722555929 7411617185127835047 258418092159915173]\n```\n\n## Docker instructions\n\n### Building and pushing image\n\nTo build your image:\n\n```sh\nmake docker-build IMG=\u003cyour-repo\u003e/\u003cname\u003e\n```\n\nTo push it to your repository:\n\n```sh\nmake docker-push IMG=\u003cyour-repo\u003e/\u003cname\u003e\n```\n\n\u003e ℹ️ Info: You can also do both steps at once with\n\u003e `make docker-build docker-push IMG=\u003cyour-repo\u003e/\u003cname\u003e`\n\n### Running docker image\n\nThe awi-infra-guard accepts following files:\n\n- `/root/config/config.yaml` - the configuration file\n- `/root/.aws/credentials` - the credentials for AWS\n- `/app/gcp-key/gcp-key.json` - the credentials for GCP\n- `/root/.kube/config` - configuration and credentials for k8s cluster\n\nIn order tp configure and gain access for different providers for awi-infra-guard\none need to mount these files while starting container.\n\n## Contributing\n\nThank you for interest in contributing! Please refer to our\n[contributing guide](CONTRIBUTING.md).\n\n## License\n\nawi-infra-guard is released under the Apache 2.0 license. See\n[LICENSE](./LICENSE).\n\nawi-infra-guard is also made possible thanks to\n[third party open source projects](NOTICE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapp-net-interface%2Fawi-infra-guard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapp-net-interface%2Fawi-infra-guard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapp-net-interface%2Fawi-infra-guard/lists"}