Skip to content

Commit b1cce72

Browse files
authored
Merge pull request #16 from viant/fix-ssm-irsa-credentials
fix: use LoadDefaultConfig for SSM client to enable IRSA/Pod Identity credential chain
2 parents 682bf90 + bfd95da commit b1cce72

4 files changed

Lines changed: 25 additions & 8 deletions

File tree

aws/ssm/list.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ func (s *Storager) List(ctx context.Context, resourceID string, options ...stora
1919
if err != nil {
2020
return nil, err
2121
}
22-
client := s.systemManager(resource.Region)
22+
client, err := s.systemManager(ctx, resource.Region)
23+
if err != nil {
24+
return nil, err
25+
}
2326

2427
var info []os.FileInfo
2528
for {

aws/ssm/open.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ func (s *Storager) Open(ctx context.Context, resourceID string, options ...stora
1616
if err != nil {
1717
return nil, err
1818
}
19-
client := s.systemManager(resource.Region)
19+
client, err := s.systemManager(ctx, resource.Region)
20+
if err != nil {
21+
return nil, err
22+
}
2023
parameter, err := s.getParameter(ctx, client, resource)
2124
if err != nil {
2225
return nil, err

aws/ssm/storager.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"os"
77
"sync"
88

9+
"github.com/aws/aws-sdk-go-v2/config"
910
"github.com/aws/aws-sdk-go-v2/service/ssm"
1011
"github.com/viant/afs/storage"
1112
)
@@ -22,7 +23,10 @@ func (s *Storager) Exists(ctx context.Context, resourceID string, options ...sto
2223
if err != nil {
2324
return false, err
2425
}
25-
client := s.systemManager(resource.Region)
26+
client, err := s.systemManager(ctx, resource.Region)
27+
if err != nil {
28+
return false, err
29+
}
2630
param, _ := s.getParameter(ctx, client, resource)
2731
return param != nil, nil
2832
}
@@ -49,15 +53,19 @@ func (s *Storager) Close() error {
4953
return nil
5054
}
5155

52-
func (s *Storager) systemManager(region string) *ssm.Client {
56+
func (s *Storager) systemManager(ctx context.Context, region string) (*ssm.Client, error) {
5357
s.mux.Lock()
5458
defer s.mux.Unlock()
5559
if s.region == "" || s.region != region {
5660
s.region = region
57-
s.client = ssm.New(ssm.Options{Region: region})
58-
return s.client
61+
cfg, err := config.LoadDefaultConfig(ctx, config.WithRegion(region))
62+
if err != nil {
63+
return nil, fmt.Errorf("failed to load AWS config: %w", err)
64+
}
65+
s.client = ssm.NewFromConfig(cfg)
66+
return s.client, nil
5967
}
60-
return s.client
68+
return s.client, nil
6169
}
6270

6371
// NewStorager create a new secret manager storager

aws/ssm/upload.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ func (s *Storager) Upload(ctx context.Context, resourceID string, mode os.FileMo
1717
}
1818
data, _ := io.ReadAll(reader)
1919
stringValue := string(data)
20-
client := s.systemManager(resource.Region)
20+
client, err := s.systemManager(ctx, resource.Region)
21+
if err != nil {
22+
return err
23+
}
2124
overwrite := true
2225
_, err = client.PutParameter(ctx, &ssm.PutParameterInput{
2326
Name: &resource.Name,

0 commit comments

Comments
 (0)