Skip to content

Implement AWS Secrets Manager Client in Runner

Description

Create a client in GitLab Runner that can interact with AWS Secrets Manager to retrieve secrets.

Goals

  • Implement a client that can authenticate with AWS using OIDC tokens
  • Retrieve secrets from AWS Secrets Manager
  • Handle errors and edge cases appropriately

Implementation Plan

Step 1: Add AWS SDK Dependencies

Add the necessary AWS SDK dependencies to the Runner project

Step 2: Create AWS Secrets Manager Client

// helpers/secrets/aws/client.go



// Client is a client for interacting with AWS Secrets Manager


type Client struct {
    secretsClient *secretsmanager.Client
}

// ClientConfig holds configuration for the AWS Secrets Manager client


type ClientConfig struct {
    Region     string
    IDToken    string
    RoleARN    string
}

func (c *Client) GetSecret{}

Step 3: Integrate with Runner's Secret Resolver System

// helpers/secrets/resolver.go



// Add AWS Secrets Manager case to the resolver



// Add method to resolve AWS secrets


func (r *Resolver) resolveAWSSecret(ctx context.Context, secret Secret) (string, error) {}

```

## Testing Plan

### Step 1: Write Unit Tests for Client

```go
// helpers/secrets/aws/client_test.go

Step 2: Test AWS Secret Resolver Integration

// helpers/secrets/resolver_test.go 

Acceptance Criteria

  • AWS Secrets Manager client is properly implemented
  • Client can authenticate with AWS using OIDC tokens
  • Client can retrieve secrets from AWS Secrets Manager
  • Error handling is robust and informative
  • Integration with Runner's secret resolver system works correctly
  • All tests pass

Dependencies

None

Edited by Aditya Tiwari