Help us shape the future of Go! Take the 2026 Go Developer Survey

awslib

module
v0.11.3 Latest Latest
Warning

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

Go to latest
Published: Oct 13, 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 fanout — v3.ClientPool builds the whole account × region matrix concurrently, caching assumed-role credentials per role.
  • Caching on every repository — repo.WithCache(dc), namespaced per account, region and service, written only on success, in-memory or file-backed.
  • Pagination handled internally — List*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, regions, cross-account role assumption, the 56 ready-made service clients, IAM policies, log verbosity
docs/repositories.md ResourceInterface, cached repositories, RepoProxy fanout
docs/observer.md the observer, the middleware chain, AwsBlame, CloudTrail lookups
docs/cloudcontrol.md fetching any resource type without a repository
docs/costexplorer.md cost and usage queries, the filter DSL, forecasts
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:

acm, 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.
acm
Package acm wraps AWS Certificate Manager: requesting, reading, tagging and deleting public certificates.
Package acm wraps AWS Certificate Manager: requesting, reading, tagging and deleting public certificates.
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