package storage import ( "context" "fmt" awsconfig "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/s3" ) func NewUnversionedS3(ctx context.Context, bucket, prefix string) (*S3, error) { if bucket == "" { return nil, fmt.Errorf("storage: s3 backend requires a bucket") } sdkConfig, err := awsconfig.LoadDefaultConfig(ctx) if err != nil { return nil, fmt.Errorf("storage: load s3 config: %w", err) } client := s3.NewFromConfig(sdkConfig) versioning, err := client.GetBucketVersioning(ctx, &s3.GetBucketVersioningInput{ Bucket: &bucket, }) if err != nil { return nil, fmt.Errorf("storage: check s3 bucket versioning: %w", err) } if versioning.Status != "" { return nil, fmt.Errorf("storage: s3 cache bucket must not use versioning") } return NewS3(client, bucket, prefix) }