{"id":47820151,"url":"https://github.com/udhos/eks-auto-pod-id-assoc","last_synced_at":"2026-04-22T06:05:59.440Z","repository":{"id":340887918,"uuid":"1167897364","full_name":"udhos/eks-auto-pod-id-assoc","owner":"udhos","description":"eks-auto-pod-id-assoc automatically synchronizes EKS Pod Identity Associations from Service Accounts.","archived":false,"fork":false,"pushed_at":"2026-03-13T23:49:05.000Z","size":212,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-14T09:53:03.828Z","etag":null,"topics":["aws","eks","eks-pod-identity","go","golang","k8s","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/udhos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-26T20:00:00.000Z","updated_at":"2026-03-13T23:49:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/udhos/eks-auto-pod-id-assoc","commit_stats":null,"previous_names":["udhos/eks-auto-pod-id-assoc"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/udhos/eks-auto-pod-id-assoc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Feks-auto-pod-id-assoc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Feks-auto-pod-id-assoc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Feks-auto-pod-id-assoc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Feks-auto-pod-id-assoc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/udhos","download_url":"https://codeload.github.com/udhos/eks-auto-pod-id-assoc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/udhos%2Feks-auto-pod-id-assoc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31371853,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T17:53:18.093Z","status":"ssl_error","status_checked_at":"2026-04-03T17:53:17.617Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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","eks","eks-pod-identity","go","golang","k8s","kubernetes"],"created_at":"2026-04-03T19:05:34.509Z","updated_at":"2026-04-03T19:05:34.587Z","avatar_url":"https://github.com/udhos.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![license](http://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/udhos/eks-auto-pod-id-assoc/blob/main/LICENSE)\n[![Go Report Card](https://goreportcard.com/badge/github.com/udhos/eks-auto-pod-id-assoc)](https://goreportcard.com/report/github.com/udhos/eks-auto-pod-id-assoc)\n[![Go Reference](https://pkg.go.dev/badge/github.com/udhos/eks-auto-pod-id-assoc.svg)](https://pkg.go.dev/github.com/udhos/eks-auto-pod-id-assoc)\n[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/eks-auto-pod-id-assoc)](https://artifacthub.io/packages/search?repo=eks-auto-pod-id-assoc)\n[![Docker Pulls](https://img.shields.io/docker/pulls/udhos/eks-auto-pod-id-assoc)](https://hub.docker.com/r/udhos/eks-auto-pod-id-assoc)\n\n# eks-auto-pod-id-assoc\n\n[eks-auto-pod-id-assoc](https://github.com/udhos/eks-auto-pod-id-assoc) automatically synchronizes EKS Pod Identity Associations from Service Accounts.\n\n* [Why](#why)\n* [Building and running](#building-and-running)\n* [Quick Start](#quick-start)\n  * [Prerequisites](#prerequisites)\n  * [Installation](#installation)\n  * [Configuration](#configuration)\n  * [Run](#run)\n  * [Verify](#verify)\n* [How it works](#how-it-works)\n* [Configuration file](#configuration-file)\n* [Regular expressions](#regular-expressions)\n* [Environment variables](#environment-variables)\n* [Permissions](#permissions)\n* [Topologies](#topologies)\n  * [Topology example 1: Running within single cluster](#topology-example-1-running-within-single-cluster)\n  * [Topology example 2: Running in a server with ~/\\.kube/config managing one cluster](#topology-example-2-running-in-a-server-with-kubeconfig-managing-one-cluster)\n  * [Topology example 3: Running in a server with AWS credentials managing multiple clusters](#topology-example-3-running-in-a-server-with-aws-credentials-managing-multiple-clusters)\n* [Metrics](#metrics)\n* [Docker Hub](#docker-hub)\n* [Helm chart](#helm-chart)\n  * [Using the helm repository](#using-the-helm-repository)\n  * [Using local chart](#using-local-chart)\n* [Contributing](#contributing)\n* [References](#references)\n\nCreated by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc.go)\n\n# Why\n\n- **Eliminate manual sync work** - Stop managing Pod Identity Associations in AWS Console; define everything in Kubernetes.\n- **Zero drift guarantee** - Kubernetes is the source of truth; no more mismatches between ServiceAccounts and EKS associations.\n- **Scale effortlessly** - Manage 1 cluster or multiple with a single config; regex-based discovery scales automatically.\n- **Built-in security guardrails** - Declare which roles each ServiceAccount can use; prevent privilege escalation across applications.\n- **GitOps ready** - Codify your entire infrastructure as Kubernetes manifests; works with any CI/CD pipeline.\n- **No CRDs required** - Just annotate ServiceAccounts, run the tool, and it syncs associations automatically.\n- **Ephemeral cluster friendly** - Works well with clusters that are recreated frequently; associations are re-synced automatically whenever the cluster is rebuilt.\n- **Flexible deployment** - Run inside the cluster, on a management host, or across multiple AWS accounts without code changes.\n\n# Building and running\n\nQuick build:\n\n```bash\ngo install github.com/udhos/eks-auto-pod-id-assoc/cmd/eks-auto-pod-id-assoc@latest\n```\n\nFull build for development, including linting etc:\n\n```bash\ngit clone https://github.com/udhos/eks-auto-pod-id-assoc\ncd eks-auto-pod-id-assoc\n./build.sh\n```\n\nJust run the binary:\n\n```bash\neks-auto-pod-id-assoc\n```\n\nRunning Docker image:\n\n```bash\ndocker run --rm -v ./config.yaml:/config.yaml udhos/eks-auto-pod-id-assoc:latest\n```\n\n# Quick Start\n\n## Prerequisites\n\n- An EKS cluster with Pod Identity enabled\n- AWS credentials with permissions to manage Pod Identity Associations (see [Permissions](#permissions))\n\n## Installation\n\nInstall via Go:\n\n```bash\ngo install github.com/udhos/eks-auto-pod-id-assoc/cmd/eks-auto-pod-id-assoc@latest\n```\n\nOr use Docker:\n\n```bash\ndocker pull udhos/eks-auto-pod-id-assoc:latest\n```\n\n## Configuration\n\nCreate a `config.yaml` file with your cluster details:\n\n```yaml\nclusters:\n  - region: us-east-1\n    cluster_name: my-cluster\n    self: true\n```\n\nReplace `us-east-1` with your AWS region and `my-cluster` with your EKS cluster name.\n\n## Run\n\nWith Go install:\n\n```bash\nexport DRY=false ;# apply changes\n\neks-auto-pod-id-assoc\n```\n\nWith Docker:\n\n```bash\n# dry:\ndocker run --rm -v ./config.yaml:/config.yaml udhos/eks-auto-pod-id-assoc:latest\n\n# apply changes:\ndocker run --rm -e DRY=false -v ./config.yaml:/config.yaml udhos/eks-auto-pod-id-assoc:latest\n```\n\nThe tool will start monitoring Service Accounts and, if `DRY=false` (it defaults to `true`), automatically create/delete Pod Identity Associations based on the `eks.amazonaws.com/role-arn` annotation.\n\nFor production deployments, consider using the [Helm chart](#helm-chart) or see [Topologies](#topologies) for advanced configurations.\n\n## Verify\n\n```bash\naws eks list-pod-identity-associations --cluster-name my-cluster\n```\n\n# How it works\n\n`eks-auto-pod-id-assoc` automatically synchronizes [EKS Pod Identity Associations](https://docs.aws.amazon.com/eks/latest/eksctl/pod-identity-associations.html) from K8s Service Accounts:\n\n- If a ServiceAccount is created with annotation `eks.amazonaws.com/role-arn`, an Association is also created.\n\n- If a ServiceAccount is deleted or the annotation `eks.amazonaws.com/role-arn` is removed, the Association is removed.\n\nIn order to react quickly, the tool watches Kubernetes API server for any changes in Service Accounts, and takes action immediately.\n\nHowever to reconcile changes applied to EKS Pod Identity Associations, the tool queries the EKS API periodically (configurable; default 1min).\n\nExample of a ServiceAccount that causes the creation of an Association:\n\n```yaml\napiVersion: v1\nkind: ServiceAccount\nmetadata:\n  annotations:\n    eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/my-role\n  name: test\n  namespace: default\n```\n\n# Configuration file\n\nThe configuration file is a YAML document declaring a list of clusters.\n\nExample:\n\n```yaml\nclusters:\n  - role_arn: arn:aws:iam::123456789012:role/AnotherRole\n    region: us-east-1\n    cluster_name: ^example-cluster-2$\n    self: false\n    annotation: eks.amazonaws.com/role-arn\n    exclude_service_accounts:\n      - name: ^sa1$\n        namespace: ^default$\n      - namespace: ^kube-system$\n    restrict_roles:\n      - role_arn: ^arn:aws:iam::123456789012:role/role1$\n        allow:\n          - name: ^sa3$\n            namespace: ^default$\n          - name: ^sa4$\n            namespace: ^kube-system$\n      - role_arn: ^arn:aws:iam::123456789012:role/role2$\n        allow:\n          - name: ^sa5$\n    pod_identity_association_tags:\n      managed-by: eks-auto-pod-id-assoc\n    max_concurrency: 5\n    purge_external_stale_associations: false\n    force_iterative_association_discovery: false\n```\n\nfield | description\n-- | --\nrole_arn | The role that must be used to make AWS API calls. If not provided, the default behavior is to use the credentials chain.\nregion | The region to make AWS API calls.\ncluster_name | Regular expression for the cluster name. If you want to specify one specific cluster, anchor it like this: `^my-cluster$`. An empty/undefined `cluster_name` will match ALL clusters in the region. NOTICE: When `self=true`, cluster_name is no longer a regex and must be specified as an exact cluster name.\nself | `self=true` means the tool must get API server credentials from local environment (`~/.kube/config` or in-cluster). Use `self=false` (default) when the tool must acquire Kubernetes credentials directly from each targeted cluster; it will need permission to perform `eks:ListClusters` and `eks:DescribeCluster` on the clusters; this is useful when the tool does not have local credentials (`~/.kube/config` or in-cluster). Set `self=true` to use local credentials (`~/.kube/config` or in-cluster) instead of generating Kubernetes credentials by querying `DescribeCluster`.\nannotation | The annotation used in Service Accounts that must be synced. Default is `eks.amazonaws.com/role-arn`.\nexclude_service_accounts | List of service accounts to exclude from synchronization. This option is useful if you want to exclude some Service Accounts from auto synchronization because they are managed elsewhere. Fields `name` and `namespace` are regular expressions. Empty/undefined fields match anything. Matching for exclusion requires BOTH fields (AND operation). A match removes the Service Account and the Association from synchronization. The tool will skip creation and deletion of Association for a match.\nrestrict_roles | Define a list of roles that are restricted. A restricted role can only be used by Service Accounts that are allowed under the field `allow`. The tool will ignore a Service Account attempting to use a restricted role without being allowed. The roles are processed in the order listed under `restrict_roles`. Only the first matching role regex is used.\npod_identity_association_tags | Tags added to Associations. Default is `managed-by=eks-auto-pod-id-assoc`. **CAUTION** You can safely change this field before running the tool against a cluster. However once the tool has created associations with tagging in a cluster, you should **NOT** modify the tagging afterwards. If you do change the tagging, the associations created with previous tagging will linger in the cluster and the tool will be unable to delete or to update the old associations. If you did change the tagging in a cluster under synchronization, and now you need to restore the tool operation, you must manually delete all associations lingering with previous tagging.\nmax_concurrency | Limit concurrency level for EKS API operations (create/delete/describe) over multiple Associations. Default is 5.\npurge_external_stale_associations | Default is `false`. **false**: Only manages associations created and tagged by this tool. **true**: Manages all associations in the cluster. **Warning**: If enabled, any association (including those created by Terraform/Console) that lacks a corresponding Kubernetes Service Account will be deleted. **NOTE**: This flag controls only external associations. The tool always cleans internal self-created associations as soon as they become stale (orphan from Service Account).\nforce_iterative_association_discovery | Default is `false`. **false**: Faster option. Performs a bulk lookup of all tagged associations in a single request using `tag:GetResources`. **true**: Slower option. It will call `eks:DescribePodIdentityAssociation` for every association. If the EKS cluster has 500 associations, it means 500 additional API calls. This is slower and recommended only in environments that block usage of `tag:GetResources`.\n\n# Regular expressions\n\nSYNOPSIS\n\n```yaml\nclusters:\n  - cluster_name: ^example-cluster-2$                     # \u003c--- regex (only if self=false)\n    exclude_service_accounts:\n      - name: ^sa1$                                       # \u003c--- regex\n        namespace: ^default$                              # \u003c--- regex\n    restrict_roles:\n      - role_arn: ^arn:aws:iam::123456789012:role/role1$  # \u003c--- regex\n        allow:\n          - name: ^sa3$                                   # \u003c--- regex\n            namespace: ^default$                          # \u003c--- regex\n```\n\nSome fields must be given regular expressions.\n\nThe full regex syntax is described here: https://github.com/google/re2/wiki/Syntax\n\nIf you need exact match, anchor the value like this: `^example$`\n\nThe field `cluster_name` is not a regex when the field `self` is set to `true`.\n\n**NEGATION**\n\nYou can negate, or invert, a regex by prefixing it with `_` (underscore).\n\nThe negation underscore only works as the first character in the expression.\nIn any other position the underscore is literal.\n\nThis negation is a special extension for regex matching that is not available elsewhere.\n\nExample:\n\n```yaml\ncluster_name: ^test # matches anything starting with 'test'\n\ncluster_name: _^test # matches anything NOT starting with 'test'\n```\n\n**EMPTY EXPRESSIONS**\n\nEmpty expressions match *anything*. See some examples below.\n\n```yaml\n#namespace: \"\"  # if you omit a regex field, it becomes empty, so it matches anything\n\nnamespace: \"\"   # an empty regex field matches anything\n\nnamespace: _    # this negates the empty regex, thus it matches NOTHING\n\nnamespace: ^$   # this matches only the empty namespace, impossible in Kubernetes, so it matches NOTHING\n\nnamespace: _^$  # negates the previous rule, so it matches anything\n```\n\n# Environment variables\n\nThese environment variables are available for customization.\n\nVar | Default | Description\n-- | -- | --\nLOG_LEVEL | info | Set log level: debug, info, warn, error\nLOG_JSON | false | Enable JSON logging.\nCONFIG_FILE | config.yaml | Path to configuration file.\nINTERVAL | 1m | Interval between reconciliations. In order to react quickly, the tool watches the Kubernetes API server for any changes in Service Accounts, and takes action immediately. However, to reconcile changes applied to EKS Pod Identity Associations, the tool queries the EKS API periodically.\nRUN_ONCE | false | If enabled, the tool executes once and exits.\nDRY | true | If enabled, the tool does NOT modify anything on AWS EKS. If disabled, the tool will create and delete Associations on AWS EKS as needed to synchronize with Service Accounts.\nADDR | :8080 | Listen address used for health check and metrics.\nHEALTH_PATH | /health | Health check path.\nMETRICS_PATH | /metrics | Metrics path.\nMETRICS_NAMESPACE | \"\" | Metrics namespace.\nLATENCY_BUCKETS_SECONDS | \".005, .01, .025, .05, .1, .25, .5, 1, 2.5\" | Prometheus histogram latency buckets in seconds.\nDOGSTATSD_SAMPLE_RATE | 1.0 | Dogstatsd sample rate.\nDOGSTATSD_ENABLE | false | Enable Dogstatsd metrics.\nDD_AGENT_HOST | localhost | Dogstatsd agent hostname.\nDD_SERVICE | undefined | Set service name for Datadog.\n\n# Permissions\n\nThe tool needs these permissions on every cluster it should synchronize.\n\nPermission | Comment\n-- | --\nK8s RBAC: apiGroups:[\"\"] resources:[\"serviceaccounts\"] verbs:[\"get\",\"list\",\"watch\"] | Discovery of existing Service Accounts.\n`eks:ListClusters` and `eks:DescribeCluster` | When `self=false` (default), the tool uses these API calls to generate Kubernetes credentials for the K8s API server.\n`eks:ListPodIdentityAssociations`, `eks:DescribePodIdentityAssociation` `tag:GetResources` | Discovery of existing Associations.\n`eks:CreatePodIdentityAssociation` and `eks:DeletePodIdentityAssociation` | Calls needed to create/destroy Associations on AWS EKS.\n`iam:PassRole`, `iam:GetRole` and `eks:TagResource` | Permissions required to create Associations on AWS EKS.\n\nSee examples:\n\n- K8s clusterrole in [examples/clusterrole_example.yaml](examples/clusterrole_example.yaml).\n\n- K8s clusterrolebinding in [examples/clusterrolebinding_example.yaml](examples/clusterrolebinding_example.yaml).\n\n- AWS policy in [examples/aws_iam_policy_example.json](examples/aws_iam_policy_example.json).\n\n# Topologies\n\nSeveral topologies are possible. Find some examples below.\n\n## Topology example 1: Running within single cluster\n\nThere is one single EKS cluster running on region \"us-east-1\" and the tool runs on one of its nodes.\n\nUse `self=true` to enable in-cluster behavior and set the exact cluster name with `cluster_name`.\n\nYou will need to use some other method to give the Pod permission to call AWS APIs in order to create/delete Associations on EKS. That's because the Pod will not be able to manage its own Association.\nOne option is to create the Association manually or using some Infrastructure-as-Code like Terraform.\n\n```yaml\nclusters:\n  - region: us-east-1\n    cluster_name: my-cluster # self=true requires exact cluster name\n    self: true\n```\n\n## Topology example 2: Running in a server with ~/.kube/config managing one cluster\n\nInstall the tool on a server properly configured with `~/.kube/config`.\n\nUse `self=true` to enable `~/.kube/config` and set the exact cluster name with `cluster_name`.\n\nYou will need to start the tool with the proper AWS credentials to allow AWS calls to EKS APIs.\nYou could use `~/.aws/config` or `AWS_PROFILE` or credentials in env vars.\n\n```yaml\nclusters:\n  - #role_arn: arn:aws:iam::123456789012:role/role1 # if AssumeRole is needed\n    region: us-east-1\n    cluster_name: my-cluster # self=true requires exact cluster name\n    self: true\n```\n\n## Topology example 3: Running in a server with AWS credentials managing multiple clusters\n\nInstall the tool on a server. It does NOT have `~/.kube/config`.\n\n`self=false` (default) will generate credentials for K8s api server using `eks:DescribeCluster`.\n\nWith `self=false`, `cluster_name` must be set to a regex. If you want an exact match,\nanchor it like this: `cluster_name: ^my-cluster$`\n\nRun the tool with usual AWS credentials (You could use `~/.aws/config` or `AWS_PROFILE` or credentials in env vars.)\n\n```yaml\nclusters:\n\n- #role_arn: arn:aws:iam::123456789012:role/AnotherRole # if AssumeRole is needed\n  region: sa-east-1\n  cluster_name: ^my-cluster$ # exact cluster\n\n- #role_arn: arn:aws:iam::123456789012:role/AnotherRole # if AssumeRole is needed\n  region: us-east-1\n  cluster_name: ^my- # auto discover all clusters with name my-\n```\n\n# Metrics\n\nThe metrics are available both for Prometheus and for Datadog Dogstatsd.\n\nIf you want to enable the metrics for Datadog/Dogstatsd, configure these env vars:\n\n```bash\nDOGSTATSD_ENABLE=true            ;# enable this\nDD_AGENT_HOST=datadog.datadog    ;# point to actual agent hostname\nDD_SERVICE=eks-auto-pod-id-assoc ;# you can customize this as you want\n```\n\n\nMetric                    | Prometheus | Datadog      | Dimensions             | Comment\n-- | -- | -- | -- | --\nservice_accounts          | gauge      | gauge        | cluster, ignore_reason | Number of service accounts.\npod_identity_associations | gauge      | gauge        | cluster, ignore_reason | Number of associations.\ndiscover_latency_seconds  | gauge      | distribution | cluster                | Discover latency.\nreconcile_latency_seconds | gauge      | distribution | cluster                | Reconcile latency.\napi_latency_seconds       | histogram  | distribution | cluster, api, status   | API latency.\n\nPossible dimensions values:\n\n- ignore_reason: not_ignored, excluded, restricted_role\n- status: ok, error\n- api: serviceaccounts.list, eks:ListClusters, eks:DescribeCluster, eks:ListPodIdentityAssociations, eks:DescribePodIdentityAssociation, eks:CreatePodIdentityAssociation, eks:DeletePodIdentityAssociation, tag:GetResources\n\n# Docker Hub\n\nWe provide some built container images in Docker Hub:\n\nhttps://hub.docker.com/r/udhos/eks-auto-pod-id-assoc\n\n```bash\ndocker run --rm -v ./config.yaml:/config.yaml udhos/eks-auto-pod-id-assoc:latest\n```\n\n# Helm chart\n\n## Using the helm repository\n\nSee: https://udhos.github.io/eks-auto-pod-id-assoc/\n\n## Using local chart\n\n```bash\n# render chart to stdout\nhelm template eks-auto-pod-id-assoc ./charts/eks-auto-pod-id-assoc\n\n# install chart\nhelm upgrade --install eks-auto-pod-id-assoc ./charts/eks-auto-pod-id-assoc\n\n# logs\nkubectl logs deploy/eks-auto-pod-id-assoc -f\n```\n\n# Contributing\n\nContributions are welcome!\n\n- [Discussions](https://github.com/udhos/eks-auto-pod-id-assoc/discussions): For \"how-to\" questions or architectural brainstorming.\n\n- [Issues](https://github.com/udhos/eks-auto-pod-id-assoc/issues): To report reproducible bugs or request specific features.\n\n- [Pull Requests](https://github.com/udhos/eks-auto-pod-id-assoc/pulls): Please ensure ./build.sh passes (including linting) before submitting.\n\n# References\n\n- Create Pod Identity Associations based on annotations on ServiceAccounts\n  https://github.com/aws/containers-roadmap/issues/2291","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fudhos%2Feks-auto-pod-id-assoc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fudhos%2Feks-auto-pod-id-assoc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fudhos%2Feks-auto-pod-id-assoc/lists"}