Untitled
unknown
plain_text
9 months ago
1.1 kB
16
Indexable
package sharedcreds
import (
"context"
"fmt"
"time"
"github.com/aws/aws-sdk-go-v2/aws"
)
type ForceRefreshProvider struct {
Provider aws.CredentialsProvider
}
func (p *ForceRefreshProvider) Retrieve(ctx context.Context) (aws.Credentials, error) {
creds, err := p.Provider.Retrieve(ctx)
if err != nil {
return aws.Credentials{}, fmt.Errorf("failed to retrieve credentials: %w", err)
}
// Markiere die Credentials als abgelaufen, damit SDK immer neu lädt
creds.CanExpire = true
creds.Expires = time.Now().Add(-1 * time.Second)
return creds, nil
}
// Zum Beispiel: Shared Credentials Provider (aus Datei)
sharedProvider := credentials.NewSharedCredentialsProvider("", "default")
// Oder jeder andere aws.CredentialsProvider, z.B. Env, STS, etc.
// Wrappe ihn mit ForceRefreshProvider
provider := &sharedcreds.ForceRefreshProvider{
Provider: sharedProvider,
}
cfg, err := config.LoadDefaultConfig(context.TODO(),
config.WithCredentialsProvider(provider),
)
if err != nil {
log.Fatal(err)
}
s3Client := s3.NewFromConfig(cfg)
Editor is loading...
Leave a Comment