Skip to content

Commit

Permalink
Merge pull request kubernetes#8448 from bittopaz/automated-cherry-pic…
Browse files Browse the repository at this point in the history
…k-of-#8025-upstream-release-1.17

Automated cherry pick of kubernetes#8025: Alicloud: allow use RAM role for OSS client
  • Loading branch information
k8s-ci-robot authored Jan 31, 2020
2 parents cc63960 + 0dff6ee commit bf41d33
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 8 deletions.
1 change: 1 addition & 0 deletions util/pkg/vfs/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ go_library(
"//vendor/github.com/aws/aws-sdk-go/aws/session:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/service/ec2:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/service/s3:go_default_library",
"//vendor/github.com/denverdino/aliyungo/metadata:go_default_library",
"//vendor/github.com/denverdino/aliyungo/oss:go_default_library",
"//vendor/github.com/go-ini/ini:go_default_library",
"//vendor/github.com/gophercloud/gophercloud:go_default_library",
Expand Down
41 changes: 33 additions & 8 deletions util/pkg/vfs/osscontext.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"os"
"strings"

"github.com/denverdino/aliyungo/metadata"
"github.com/denverdino/aliyungo/oss"
)

Expand All @@ -29,6 +30,7 @@ type aliyunOSSConfig struct {
internal bool
accessKeyId string
accessKeySecret string
securityToken string
secure bool
}

Expand All @@ -50,23 +52,46 @@ func NewAliOSSClient() (*oss.Client, error) {
return nil, fmt.Errorf("error building aliyun oss client: %v", err)
}

if c.securityToken != "" {
return oss.NewOSSClientForAssumeRole(c.region, c.internal, c.accessKeyId, c.accessKeySecret, c.securityToken, c.secure), nil
}

return oss.NewOSSClient(c.region, c.internal, c.accessKeyId, c.accessKeySecret, c.secure), nil
}

func (c *aliyunOSSConfig) loadConfig() error {
meta := metadata.NewMetaData(nil)

c.region = oss.Region(os.Getenv("OSS_REGION"))
if c.region == "" {
// TODO: can we use default region?
return fmt.Errorf("OSS_REGION cannot be empty")
region, err := meta.Region()
if err != nil {
return fmt.Errorf("can't get region-id from ECS metadata")
}
c.region = oss.Region(fmt.Sprintf("oss-%s", region))
}

c.accessKeyId = os.Getenv("ALIYUN_ACCESS_KEY_ID")
if c.accessKeyId == "" {
return fmt.Errorf("ALIYUN_ACCESS_KEY_ID cannot be empty")
}
c.accessKeySecret = os.Getenv("ALIYUN_ACCESS_KEY_SECRET")
if c.accessKeySecret == "" {
return fmt.Errorf("ALIYUN_ACCESS_KEY_SECRET cannot be empty")
if c.accessKeyId != "" {
c.accessKeySecret = os.Getenv("ALIYUN_ACCESS_KEY_SECRET")
if c.accessKeySecret == "" {
return fmt.Errorf("ALIYUN_ACCESS_KEY_SECRET cannot be empty")
}
} else {
role, err := meta.RoleName()
if err != nil {
return fmt.Errorf("Can't find role from ECS metadata: %s", err)
}

roleAuth, err := meta.RamRoleToken(role)
if err != nil {
return fmt.Errorf("Can't get role token: %s", err)
}
c.accessKeyId = roleAuth.AccessKeyId
c.accessKeySecret = roleAuth.AccessKeySecret
c.securityToken = roleAuth.SecurityToken
}

ossInternal := os.Getenv("ALIYUN_OSS_INTERNAL")
if ossInternal != "" {
c.internal = true
Expand Down

0 comments on commit bf41d33

Please sign in to comment.