Merge pull request #10519 from swordqiu/hotfix/qj-aws-sts-assume-role-break-initialization

fix(region): aws sts assume role fail break account initialization
This commit is contained in:
Zexi Li
2021-03-29 09:51:47 +08:00
committed by GitHub
2 changed files with 14 additions and 14 deletions
+11 -11
View File
@@ -161,8 +161,8 @@ func (self *SAwsClient) getDefaultRegionId() string {
return GetDefaultRegionId(self.accessUrl)
}
func (client *SAwsClient) getDefaultSession() (*session.Session, error) {
return client.getAwsSession(client.getDefaultRegionId())
func (client *SAwsClient) getDefaultSession(assumeRole bool) (*session.Session, error) {
return client.getAwsSession(client.getDefaultRegionId(), assumeRole)
}
func (client *SAwsClient) GetAccountId() string {
@@ -196,7 +196,7 @@ const (
func (self *SAwsClient) fetchRegions() ([]SRegion, error) {
cacheTime, _ := describeRegionResultCacheAt[self.accessUrl]
if _, ok := describeRegionResult[self.accessUrl]; !ok || cacheTime.IsZero() || time.Now().After(cacheTime.Add(time.Hour*describeRegionExpireHours)) {
s, err := self.getDefaultSession()
s, err := self.getDefaultSession(false)
if err != nil {
return nil, errors.Wrap(err, "getDefaultSession")
}
@@ -225,7 +225,7 @@ func (self *SAwsClient) fetchRegions() ([]SRegion, error) {
return regions, nil
}
func (client *SAwsClient) getAwsSession(regionId string) (*session.Session, error) {
func (client *SAwsClient) getAwsSession(regionId string, assumeRole bool) (*session.Session, error) {
if client.sessions == nil {
client.sessions = make(map[string]*session.Session)
}
@@ -245,7 +245,7 @@ func (client *SAwsClient) getAwsSession(regionId string) (*session.Session, erro
if err != nil {
return nil, errors.Wrap(err, "getAwsSession.NewSession")
}
if len(client.accountId) > 0 {
if assumeRole && len(client.accountId) > 0 {
// need to assumeRole
var env string
switch client.GetAccessEnv() {
@@ -277,7 +277,7 @@ func (region *SRegion) getAwsElasticacheClient() (*elasticache.ElastiCache, erro
}
func (client *SAwsClient) getAwsRoute53Session() (*session.Session, error) {
session, err := client.getDefaultSession()
session, err := client.getDefaultSession(true)
if err != nil {
return nil, errors.Wrap(err, "client.getDefaultSession()")
}
@@ -329,7 +329,7 @@ func (client *SAwsClient) fetchOwnerId() error {
}
func (client *SAwsClient) fetchBuckets() error {
s, err := client.getDefaultSession()
s, err := client.getDefaultSession(true)
if err != nil {
return errors.Wrap(err, "getDefaultSession")
}
@@ -504,11 +504,11 @@ func (self *SAwsClient) GetAccessEnv() string {
}
}
func (self *SAwsClient) request(regionId, serviceName, serviceId, apiVersion string, apiName string, params map[string]string, retval interface{}) error {
func (self *SAwsClient) request(regionId, serviceName, serviceId, apiVersion string, apiName string, params map[string]string, retval interface{}, assumeRole bool) error {
if len(regionId) == 0 {
regionId = self.getDefaultRegionId()
}
session, err := self.getAwsSession(regionId)
session, err := self.getAwsSession(regionId, assumeRole)
if err != nil {
return err
}
@@ -539,11 +539,11 @@ func (self *SAwsClient) request(regionId, serviceName, serviceId, apiVersion str
}
func (self *SAwsClient) iamRequest(apiName string, params map[string]string, retval interface{}) error {
return self.request("", IAM_SERVICE_NAME, IAM_SERVICE_ID, "2010-05-08", apiName, params, retval)
return self.request("", IAM_SERVICE_NAME, IAM_SERVICE_ID, "2010-05-08", apiName, params, retval, true)
}
func (self *SAwsClient) stsRequest(apiName string, params map[string]string, retval interface{}) error {
return self.request("", STS_SERVICE_NAME, STS_SERVICE_ID, "2011-06-15", apiName, params, retval)
return self.request("", STS_SERVICE_NAME, STS_SERVICE_ID, "2011-06-15", apiName, params, retval, false)
}
func jsonRequest(cli *client.Client, apiName string, params map[string]string, retval interface{}, debug bool) error {
+3 -3
View File
@@ -153,7 +153,7 @@ func (self *SRegion) GetClient() *SAwsClient {
}
func (self *SRegion) getAwsSession() (*session.Session, error) {
return self.client.getAwsSession(self.RegionId)
return self.client.getAwsSession(self.RegionId, true)
}
func (self *SRegion) getEc2Client() (*ec2.EC2, error) {
@@ -320,11 +320,11 @@ func Build(r *request.Request) {
}
func (self *SRegion) rdsRequest(apiName string, params map[string]string, retval interface{}) error {
return self.client.request(self.RegionId, RDS_SERVICE_NAME, RDS_SERVICE_ID, "2014-10-31", apiName, params, retval)
return self.client.request(self.RegionId, RDS_SERVICE_NAME, RDS_SERVICE_ID, "2014-10-31", apiName, params, retval, true)
}
func (self *SRegion) ec2Request(apiName string, params map[string]string, retval interface{}) error {
return self.client.request(self.RegionId, EC2_SERVICE_NAME, EC2_SERVICE_ID, "2016-11-15", apiName, params, retval)
return self.client.request(self.RegionId, EC2_SERVICE_NAME, EC2_SERVICE_ID, "2016-11-15", apiName, params, retval, true)
}
func (self *SRegion) cloudWatchRequest(apiName string, params *cloudwatch.GetMetricStatisticsInput,