awslib

module
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 28, 2026 License: AGPL-3.0

README

AWS Library

awslib wraps aws-sdk-go-v2 for tools that read AWS across many accounts and regions at once. It does not replace the SDK — the underlying client is always one call away (ec2.GetClient(client)) — it supplies the plumbing such a tool ends up writing by hand:

  • Multi-account, multi-region fanoutv3.ClientPool builds the whole account × region matrix concurrently, caching assumed-role credentials per role.
  • Caching on every repositoryrepo.WithCache(dc), namespaced per account, region and service, written only on success, in-memory or file-backed.
  • Pagination handled internallyList*All() returns complete, flattened slices, including for APIs that ship no SDK paginator at all.
  • One interface over unrelated resources — 23 service packages implement service.ResourceInterface, so heterogeneous resource types flow through the same channels, cache and reports.
  • Any type, without a repository — the Cloud Control path serves any AWS::Service::Resource with a LIST handler and no per-type code.
  • Observability — 11 Prometheus metrics across API calls, fetching and cache.

See docs/why-awslib.md for the full comparison against the raw SDK, and what the cache and the parallel fetcher are worth in dollars and wall-clock time.

Installation

go get github.com/imunhatep/awslib

Quick start

ctx := context.Background()

client, err := v3.NewClient(ctx)
if err != nil {
    return err
}

instances, err := ec2.NewEc2Repository(ctx, client).ListInstancesAll()
if err != nil {
    return err
}

for _, instance := range instances {
    fmt.Printf("%s %s %s\n", instance.GetId(), instance.GetRegion(), instance.GetName())
}

Documentation

Document What's in it
docs/provider.md clients, client pools, cross-account role assumption, log verbosity
docs/repositories.md ResourceInterface, cached repositories, RepoProxy fanout
docs/cloudcontrol.md fetching any resource type without a repository
docs/savingsplans.md Savings Plans inventory and offering rates
docs/monitoring.md the Prometheus metrics and how to read them
docs/code-generation.md the generators, and when to re-run them
docs/why-awslib.md the case against hand-rolling this on the SDK
CLAUDE.md architecture in depth: layers, invariants and the reasoning behind them

AWS service list

Services whose entities implement the normalized service.ResourceInterface, and so are reachable through proxy.RepoProxy and the parallel fetcher:

athena, autoscaling, batch, cloudfront, cloudtrail, cloudwatchlogs, dynamodb, ec2, ecs, efs, eks, elb, emr, emrserverless, glue, iam, lambda, rds, route53, s3, secretmanager, sns, sqs

Services exposing typed, service-specific APIs instead — cost figures, health events, price lists, savings plans and bulk tags are not resources, so they are fetched through their own repositories rather than the RepoProxy fanout:

costexplorer, health, pricing, savingsplans, resourcegroupstagging

resourcegroupstagging is the odd one there: it answers about tags rather than resources, in bulk. One GetResources page carries up to 100 ARN-and-tag pairs regardless of type, so filling in tags for a whole region costs a handful of calls instead of one per resource — which is the difference between a usable and an unusable Cloud Control sweep, since most Cloud Control LIST handlers omit tags entirely. It reports only resources that are currently tagged or that ever held a tag, so it enriches a resource list and must never be one.

And cloudcontrol, which is not a service in the same sense: one generic repository serving any resource type through the AWS Cloud Control API, with no per-type code. Use it for types the list above does not cover — see docs/cloudcontrol.md.

Contributing

Repositories, cached wrappers and gob registrations are partly generated — run the generators after adding or removing a service or an entity type, see docs/code-generation.md.

make test          # go test -v ./...
make test-cover    # go test -cover ./...

Directories

Path Synopsis
v3
v3/clients/accessanalyzer
Package accessanalyzer provides AccessAnalyzer service access for v3 client This file is auto-generated.
Package accessanalyzer provides AccessAnalyzer service access for v3 client This file is auto-generated.
v3/clients/acm
Package acm provides ACM service access for v3 client This file is auto-generated.
Package acm provides ACM service access for v3 client This file is auto-generated.
v3/clients/apigateway
Package apigateway provides APIGateway service access for v3 client This file is auto-generated.
Package apigateway provides APIGateway service access for v3 client This file is auto-generated.
v3/clients/athena
Package athena provides Athena service access for v3 client This file is auto-generated.
Package athena provides Athena service access for v3 client This file is auto-generated.
v3/clients/autoscaling
Package autoscaling provides AutoScaling service access for v3 client This file is auto-generated.
Package autoscaling provides AutoScaling service access for v3 client This file is auto-generated.
v3/clients/batch
Package batch provides Batch service access for v3 client This file is auto-generated.
Package batch provides Batch service access for v3 client This file is auto-generated.
v3/clients/cloudcontrol
Package cloudcontrol provides CloudControl service access for v3 client This file is auto-generated.
Package cloudcontrol provides CloudControl service access for v3 client This file is auto-generated.
v3/clients/cloudformation
Package cloudformation provides CloudFormation service access for v3 client This file is auto-generated.
Package cloudformation provides CloudFormation service access for v3 client This file is auto-generated.
v3/clients/cloudfront
Package cloudfront provides CloudFront service access for v3 client This file is auto-generated.
Package cloudfront provides CloudFront service access for v3 client This file is auto-generated.
v3/clients/cloudtrail
Package cloudtrail provides CloudTrail service access for v3 client This file is auto-generated.
Package cloudtrail provides CloudTrail service access for v3 client This file is auto-generated.
v3/clients/cloudwatch
Package cloudwatch provides CloudWatch service access for v3 client This file is auto-generated.
Package cloudwatch provides CloudWatch service access for v3 client This file is auto-generated.
v3/clients/cloudwatchlogs
Package cloudwatchlogs provides CloudWatchLogs service access for v3 client This file is auto-generated.
Package cloudwatchlogs provides CloudWatchLogs service access for v3 client This file is auto-generated.
v3/clients/configservice
Package configservice provides ConfigService service access for v3 client This file is auto-generated.
Package configservice provides ConfigService service access for v3 client This file is auto-generated.
v3/clients/costexplorer
Package costexplorer provides CostExplorer service access for v3 client This file is auto-generated.
Package costexplorer provides CostExplorer service access for v3 client This file is auto-generated.
v3/clients/dynamodb
Package dynamodb provides DynamoDB service access for v3 client This file is auto-generated.
Package dynamodb provides DynamoDB service access for v3 client This file is auto-generated.
v3/clients/ec2
Package ec2 provides EC2 service access for v3 client This file is auto-generated.
Package ec2 provides EC2 service access for v3 client This file is auto-generated.
v3/clients/ecs
Package ecs provides ECS service access for v3 client This file is auto-generated.
Package ecs provides ECS service access for v3 client This file is auto-generated.
v3/clients/efs
Package efs provides EFS service access for v3 client This file is auto-generated.
Package efs provides EFS service access for v3 client This file is auto-generated.
v3/clients/eks
Package eks provides EKS service access for v3 client This file is auto-generated.
Package eks provides EKS service access for v3 client This file is auto-generated.
v3/clients/elasticache
Package elasticache provides ElastiCache service access for v3 client This file is auto-generated.
Package elasticache provides ElastiCache service access for v3 client This file is auto-generated.
v3/clients/elasticloadbalancingv2
Package elasticloadbalancingv2 provides ElasticLoadBalancingV2 service access for v3 client This file is auto-generated.
Package elasticloadbalancingv2 provides ElasticLoadBalancingV2 service access for v3 client This file is auto-generated.
v3/clients/emr
Package emr provides EMR service access for v3 client This file is auto-generated.
Package emr provides EMR service access for v3 client This file is auto-generated.
v3/clients/emrserverless
Package emrserverless provides EMRServerless service access for v3 client This file is auto-generated.
Package emrserverless provides EMRServerless service access for v3 client This file is auto-generated.
v3/clients/glue
Package glue provides Glue service access for v3 client This file is auto-generated.
Package glue provides Glue service access for v3 client This file is auto-generated.
v3/clients/health
Package health provides Health service access for v3 client This file is auto-generated.
Package health provides Health service access for v3 client This file is auto-generated.
v3/clients/iam
Package iam provides IAM service access for v3 client This file is auto-generated.
Package iam provides IAM service access for v3 client This file is auto-generated.
v3/clients/lambda
Package lambda provides Lambda service access for v3 client This file is auto-generated.
Package lambda provides Lambda service access for v3 client This file is auto-generated.
v3/clients/pricing
Package pricing provides Pricing service access for v3 client This file is auto-generated.
Package pricing provides Pricing service access for v3 client This file is auto-generated.
v3/clients/rds
Package rds provides RDS service access for v3 client This file is auto-generated.
Package rds provides RDS service access for v3 client This file is auto-generated.
v3/clients/resourcegroupstaggingapi
Package resourcegroupstaggingapi provides ResourceGroupsTaggingAPI service access for v3 client This file is auto-generated.
Package resourcegroupstaggingapi provides ResourceGroupsTaggingAPI service access for v3 client This file is auto-generated.
v3/clients/route53
Package route53 provides Route53 service access for v3 client This file is auto-generated.
Package route53 provides Route53 service access for v3 client This file is auto-generated.
v3/clients/route53domains
Package route53domains provides Route53Domains service access for v3 client This file is auto-generated.
Package route53domains provides Route53Domains service access for v3 client This file is auto-generated.
v3/clients/s3
Package s3 provides S3 service access for v3 client This file is auto-generated.
Package s3 provides S3 service access for v3 client This file is auto-generated.
v3/clients/s3control
Package s3control provides S3Control service access for v3 client This file is auto-generated.
Package s3control provides S3Control service access for v3 client This file is auto-generated.
v3/clients/s3outposts
Package s3outposts provides S3Outposts service access for v3 client This file is auto-generated.
Package s3outposts provides S3Outposts service access for v3 client This file is auto-generated.
v3/clients/savingsplans
Package savingsplans provides SavingsPlans service access for v3 client This file is auto-generated.
Package savingsplans provides SavingsPlans service access for v3 client This file is auto-generated.
v3/clients/secretsmanager
Package secretsmanager provides SecretsManager service access for v3 client This file is auto-generated.
Package secretsmanager provides SecretsManager service access for v3 client This file is auto-generated.
v3/clients/securityhub
Package securityhub provides SecurityHub service access for v3 client This file is auto-generated.
Package securityhub provides SecurityHub service access for v3 client This file is auto-generated.
v3/clients/servicecatalog
Package servicecatalog provides ServiceCatalog service access for v3 client This file is auto-generated.
Package servicecatalog provides ServiceCatalog service access for v3 client This file is auto-generated.
v3/clients/servicediscovery
Package servicediscovery provides ServiceDiscovery service access for v3 client This file is auto-generated.
Package servicediscovery provides ServiceDiscovery service access for v3 client This file is auto-generated.
v3/clients/servicequotas
Package servicequotas provides ServiceQuotas service access for v3 client This file is auto-generated.
Package servicequotas provides ServiceQuotas service access for v3 client This file is auto-generated.
v3/clients/ses
Package ses provides SES service access for v3 client This file is auto-generated.
Package ses provides SES service access for v3 client This file is auto-generated.
v3/clients/sfn
Package sfn provides StepFunctions service access for v3 client This file is auto-generated.
Package sfn provides StepFunctions service access for v3 client This file is auto-generated.
v3/clients/shield
Package shield provides Shield service access for v3 client This file is auto-generated.
Package shield provides Shield service access for v3 client This file is auto-generated.
v3/clients/signer
Package signer provides Signer service access for v3 client This file is auto-generated.
Package signer provides Signer service access for v3 client This file is auto-generated.
v3/clients/sns
Package sns provides SNS service access for v3 client This file is auto-generated.
Package sns provides SNS service access for v3 client This file is auto-generated.
v3/clients/sqs
Package sqs provides SQS service access for v3 client This file is auto-generated.
Package sqs provides SQS service access for v3 client This file is auto-generated.
v3/clients/ssm
Package ssm provides SSM service access for v3 client This file is auto-generated.
Package ssm provides SSM service access for v3 client This file is auto-generated.
v3/clients/storagegateway
Package storagegateway provides StorageGateway service access for v3 client This file is auto-generated.
Package storagegateway provides StorageGateway service access for v3 client This file is auto-generated.
v3/clients/swf
Package swf provides SWF service access for v3 client This file is auto-generated.
Package swf provides SWF service access for v3 client This file is auto-generated.
v3/clients/synthetics
Package synthetics provides Synthetics service access for v3 client This file is auto-generated.
Package synthetics provides Synthetics service access for v3 client This file is auto-generated.
v3/clients/timestreamwrite
Package timestreamwrite provides TimestreamWrite service access for v3 client This file is auto-generated.
Package timestreamwrite provides TimestreamWrite service access for v3 client This file is auto-generated.
v3/clients/transfer
Package transfer provides Transfer service access for v3 client This file is auto-generated.
Package transfer provides Transfer service access for v3 client This file is auto-generated.
v3/clients/waf
Package waf provides WAF service access for v3 client This file is auto-generated.
Package waf provides WAF service access for v3 client This file is auto-generated.
v3/clients/wafregional
Package wafregional provides WAFRegional service access for v3 client This file is auto-generated.
Package wafregional provides WAFRegional service access for v3 client This file is auto-generated.
v3/clients/wafv2
Package wafv2 provides WAFv2 service access for v3 client This file is auto-generated.
Package wafv2 provides WAFv2 service access for v3 client This file is auto-generated.
athena
Code generated by generate-cached.
Code generated by generate-cached.
autoscaling
Code generated by generate-cached.
Code generated by generate-cached.
batch
Code generated by generate-cached.
Code generated by generate-cached.
cfg
cloudcontrol
Code generated by generate-cached.
Code generated by generate-cached.
cloudfront
Code generated by generate-cached.
Code generated by generate-cached.
cloudtrail
Code generated by generate-cached.
Code generated by generate-cached.
cloudwatchlogs
Code generated by generate-cached.
Code generated by generate-cached.
costexplorer
Code generated by generate-cached.
Code generated by generate-cached.
dynamodb
Code generated by generate-cached.
Code generated by generate-cached.
ec2
Code generated by generate-cached.
Code generated by generate-cached.
ecs
Code generated by generate-cached.
Code generated by generate-cached.
efs
Code generated by generate-cached.
Code generated by generate-cached.
eks
Code generated by generate-cached.
Code generated by generate-cached.
elb
Code generated by generate-cached.
Code generated by generate-cached.
emr
Code generated by generate-cached.
Code generated by generate-cached.
emrserverless
Code generated by generate-cached.
Code generated by generate-cached.
glue
Code generated by generate-cached.
Code generated by generate-cached.
health
Code generated by generate-cached.
Code generated by generate-cached.
iam
Code generated by generate-cached.
Code generated by generate-cached.
lambda
Code generated by generate-cached.
Code generated by generate-cached.
pricing
Code generated by generate-cached.
Code generated by generate-cached.
rds
Code generated by generate-cached.
Code generated by generate-cached.
resourcegroupstagging
Code generated by generate-cached.
Code generated by generate-cached.
route53
Code generated by generate-cached.
Code generated by generate-cached.
s3
Code generated by generate-cached.
Code generated by generate-cached.
savingsplans
Code generated by generate-cached.
Code generated by generate-cached.
secretmanager
Code generated by generate-cached.
Code generated by generate-cached.
sns
Code generated by generate-cached.
Code generated by generate-cached.
sqs
Code generated by generate-cached.
Code generated by generate-cached.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL