in credentials/providers/profile.go [44:120]
func (provider *ProfileCredentialsProvider) getCredentialsProvider(ini *ini.File) (credentialsProvider CredentialsProvider, err error) {
section, err := ini.GetSection(provider.profileName)
if err != nil {
err = errors.New("ERROR: Can not load section" + err.Error())
return
}
value, err := section.GetKey("type")
if err != nil {
err = errors.New("ERROR: Can not find credential type" + err.Error())
return
}
switch value.String() {
case "access_key":
value1, err1 := section.GetKey("access_key_id")
value2, err2 := section.GetKey("access_key_secret")
if err1 != nil || err2 != nil {
err = errors.New("ERROR: Failed to get value")
return
}
if value1.String() == "" || value2.String() == "" {
err = errors.New("ERROR: Value can't be empty")
return
}
credentialsProvider, err = NewStaticAKCredentialsProviderBuilder().
WithAccessKeyId(value1.String()).
WithAccessKeySecret(value2.String()).
Build()
case "ecs_ram_role":
value1, err1 := section.GetKey("role_name")
if err1 != nil {
err = errors.New("ERROR: Failed to get value")
return
}
credentialsProvider, err = NewECSRAMRoleCredentialsProviderBuilder().WithRoleName(value1.String()).Build()
case "ram_role_arn":
value1, err1 := section.GetKey("access_key_id")
value2, err2 := section.GetKey("access_key_secret")
value3, err3 := section.GetKey("role_arn")
value4, err4 := section.GetKey("role_session_name")
if err1 != nil || err2 != nil || err3 != nil || err4 != nil {
err = errors.New("ERROR: Failed to get value")
return
}
if value1.String() == "" || value2.String() == "" || value3.String() == "" || value4.String() == "" {
err = errors.New("ERROR: Value can't be empty")
return
}
previous, err5 := NewStaticAKCredentialsProviderBuilder().
WithAccessKeyId(value1.String()).
WithAccessKeySecret(value2.String()).
Build()
if err5 != nil {
err = errors.New("get previous credentials provider failed")
return
}
rawPolicy, _ := section.GetKey("policy")
policy := ""
if rawPolicy != nil {
policy = rawPolicy.String()
}
credentialsProvider, err = NewRAMRoleARNCredentialsProviderBuilder().
WithCredentialsProvider(previous).
WithRoleArn(value3.String()).
WithRoleSessionName(value4.String()).
WithPolicy(policy).
WithDurationSeconds(3600).
Build()
default:
err = errors.New("ERROR: Failed to get credential")
}
return
}