client/client.go (47 lines of code) (raw):

package client import ( "context" "log" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/dynamodb" "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/guardian/cq-source-image-packages/store" "github.com/rs/zerolog" ) type Client struct { logger zerolog.Logger Spec Spec S3Store store.S3 BakesTable store.DynamoDb RecipesTable store.DynamoDb BaseImagesTable store.DynamoDb } func (c *Client) ID() string { return "guardian/image-packages" } func (c *Client) Logger() *zerolog.Logger { return &c.logger } func New(ctx context.Context, logger zerolog.Logger, s *Spec) (Client, error) { // Loads credentials from the default credential chain. // Locally, set the AWS_PROFILE environment variable, or run `make serve`. // See https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials. cfg, err := config.LoadDefaultConfig( ctx, config.WithRegion("eu-west-1"), ) if err != nil { log.Fatalf("unable to load AWS config, %v", err) } s3Client := s3.NewFromConfig(cfg) s3Store := store.NewS3(s3Client, s.AmigoBucketName, "packagelists") dynamoDbClient := dynamodb.NewFromConfig(cfg) bakesTable := store.NewDynamoDb(dynamoDbClient, s.AmigoBakesTableName) recipesTable := store.NewDynamoDb(dynamoDbClient, s.AmigoRecipesTableName) baseImagesTable := store.NewDynamoDb(dynamoDbClient, s.AmigoBaseImagesTableName) return Client{ logger: logger, Spec: *s, S3Store: s3Store, BakesTable: bakesTable, RecipesTable: recipesTable, BaseImagesTable: baseImagesTable, }, nil }