k8sgpt/pkg/integration/aws/aws.go
JuHyung Son 882c6f5225
feat: support AWS_PROFILE (#1114)
Signed-off-by: JuHyung-Son <sonju0427@gmail.com>
2024-05-16 15:36:33 +01:00

99 lines
1.8 KiB
Go

package aws
import (
"os"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/k8sgpt-ai/k8sgpt/pkg/common"
"github.com/spf13/viper"
)
type AWS struct {
sess *session.Session
}
func (a *AWS) Deploy(namespace string) error {
return nil
}
func (a *AWS) UnDeploy(namespace string) error {
a.sess = nil
return nil
}
func (a *AWS) AddAnalyzer(mergedMap *map[string]common.IAnalyzer) {
// Retrieve AWS credentials from the environment
accessKeyID := os.Getenv("AWS_ACCESS_KEY_ID")
secretAccessKey := os.Getenv("AWS_SECRET_ACCESS_KEY")
awsProfile := os.Getenv("AWS_PROFILE")
var sess *session.Session
if accessKeyID != "" && secretAccessKey != "" {
// Use access keys if both are provided
sess = session.Must(session.NewSessionWithOptions(session.Options{
Config: aws.Config{},
}))
} else {
// Use AWS profile, default to "default" if not set
if awsProfile == "" {
awsProfile = "default"
}
sess = session.Must(session.NewSessionWithOptions(session.Options{
Profile: awsProfile,
SharedConfigState: session.SharedConfigEnable,
}))
}
a.sess = sess
(*mergedMap)["EKS"] = &EKSAnalyzer{
session: a.sess,
}
}
func (a *AWS) GetAnalyzerName() []string {
return []string{"EKS"}
}
func (a *AWS) GetNamespace() (string, error) {
return "", nil
}
func (a *AWS) OwnsAnalyzer(s string) bool {
for _, az := range a.GetAnalyzerName() {
if s == az {
return true
}
}
return false
}
func (a *AWS) isFilterActive() bool {
activeFilters := viper.GetStringSlice("active_filters")
for _, filter := range a.GetAnalyzerName() {
for _, af := range activeFilters {
if af == filter {
return true
}
}
}
return false
}
func (a *AWS) IsActivate() bool {
if a.isFilterActive() {
return true
} else {
return false
}
}
func NewAWS() *AWS {
return &AWS{}
}