Skip to content

Commit 292ebe0

Browse files
authored
Merge pull request #440 from drone-plugins/CI-12566
Fixed 'error getting ECR auth: WebIdentityErr: unable to read file at…' issue
2 parents 11015f0 + 49e9dde commit 292ebe0

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

cmd/drone-ecr/main.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func main() {
4242
assumeRole = getenv("PLUGIN_ASSUME_ROLE")
4343
externalId = getenv("PLUGIN_EXTERNAL_ID")
4444
scanOnPush = parseBoolOrDefault(false, getenv("PLUGIN_SCAN_ON_PUSH"))
45-
idToken = os.Getenv("PLUGIN_OIDC_TOKEN_ID")
45+
idToken = os.Getenv("PLUGIN_OIDC_TOKEN_ID")
4646
)
4747

4848
// set the region
@@ -218,9 +218,24 @@ func getECRClient(sess *session.Session, role string, externalId string, idToken
218218
if role == "" {
219219
return ecr.New(sess)
220220
}
221-
// Use STS AssumeRoleWithWebIdentity when idToken is provided
221+
222222
if idToken != "" {
223-
creds := stscreds.NewWebIdentityCredentials(sess, role, "", idToken)
223+
tempFile, err := os.CreateTemp("/tmp", "idToken-*.jwt")
224+
if err != nil {
225+
log.Fatalf("Failed to create temporary file: %v", err)
226+
}
227+
defer tempFile.Close()
228+
229+
if err := os.Chmod(tempFile.Name(), 0600); err != nil {
230+
log.Fatalf("Failed to set file permissions: %v", err)
231+
}
232+
233+
if _, err := tempFile.WriteString(idToken); err != nil {
234+
log.Fatalf("Failed to write ID token to temporary file: %v", err)
235+
}
236+
237+
// Create credentials using the path to the ID token file
238+
creds := stscreds.NewWebIdentityCredentials(sess, role, "", tempFile.Name())
224239
return ecr.New(sess, &aws.Config{Credentials: creds})
225240
} else if externalId != "" {
226241
return ecr.New(sess, &aws.Config{

0 commit comments

Comments
 (0)