instance_provider.go raw
1 package credentials
2
3 import (
4 "os"
5 "strings"
6
7 "github.com/alibabacloud-go/tea/tea"
8 )
9
10 type instanceCredentialsProvider struct{}
11
12 var providerInstance = new(instanceCredentialsProvider)
13
14 func newInstanceCredentialsProvider() Provider {
15 return &instanceCredentialsProvider{}
16 }
17
18 func (p *instanceCredentialsProvider) resolve() (*Config, error) {
19 roleName, ok := os.LookupEnv(ENVEcsMetadata)
20 if !ok {
21 return nil, nil
22 }
23 enableIMDSv2, _ := os.LookupEnv(ENVEcsMetadataIMDSv2Enable)
24
25 config := &Config{
26 Type: tea.String("ecs_ram_role"),
27 RoleName: tea.String(roleName),
28 EnableIMDSv2: tea.Bool(strings.ToLower(enableIMDSv2) == "true"),
29 }
30 return config, nil
31 }
32