zotregistry.dev/zot@v1.4.4-0.20240314164342-eec277e14d20/pkg/meta/dynamodb/parameters.go (about)

     1  package dynamodb
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/aws/aws-sdk-go-v2/aws"
     7  	"github.com/aws/aws-sdk-go-v2/config"
     8  	"github.com/aws/aws-sdk-go-v2/service/dynamodb"
     9  )
    10  
    11  type DBDriverParameters struct {
    12  	Endpoint, Region, RepoMetaTablename, RepoBlobsInfoTablename, ImageMetaTablename,
    13  	UserDataTablename, APIKeyTablename, VersionTablename string
    14  }
    15  
    16  func GetDynamoClient(params DBDriverParameters) (*dynamodb.Client, error) {
    17  	customResolver := aws.EndpointResolverWithOptionsFunc(
    18  		func(service, region string, options ...interface{}) (aws.Endpoint, error) {
    19  			return aws.Endpoint{
    20  				PartitionID:   "aws",
    21  				URL:           params.Endpoint,
    22  				SigningRegion: region,
    23  			}, nil
    24  		})
    25  
    26  	// Using the SDK's default configuration, loading additional config
    27  	// and credentials values from the environment variables, shared
    28  	// credentials, and shared configuration files
    29  	cfg, err := config.LoadDefaultConfig(context.Background(), config.WithRegion(params.Region),
    30  		config.WithEndpointResolverWithOptions(customResolver))
    31  	if err != nil {
    32  		return nil, err
    33  	}
    34  
    35  	return dynamodb.NewFromConfig(cfg), nil
    36  }