HTTP Post API request using go lang with aws secrets manager header

Viewed 33

I am able to fetch the secrets from AWS secrets manager and using this secrets (ex : {"x-api-key":"123456789qwertyuiop"}) as an header, I want to call an API, I am new to golang and can anyone help me on this?

My code example

func fetch_api() {

    ?? How to call an POST API with below header??

    // I get header secrets from below func getsecrets in above mentioned example
    secret, _ := getsecrets("MyAPISecrets")
    fmt.Println(secret)
}

func getsecrets(s string) (string, error) {
    // Create a session
    mySession, err := session.NewSession(&aws.Config{
        Region: aws.String(os.Getenv("REGION"))},
    )
    if err != nil {
        log.Fatal(err)
    }
    svc := secretsmanager.New(mySession)

    result, err := svc.GetSecretValue(&secretsmanager.GetSecretValueInput{SecretId: &s})
    if err != nil {
        log.Fatal(err.Error())
    }
    return *result.SecretString, nil
}

func main() {
    lambda.Start(fetch_api)
}
1 Answers

You can modify this code, it is just an example

func fetch_api() {

    // I get header secrets from below func getsecrets in above mentioned example
    secret, _ := getsecrets("MyAPISecrets")
    fmt.Println(secret)

    client := &http.Client{}
    // create POST request
    req, err := http.NewRequest("POST", url, body)))
    if err != nil {
        panic(err)
    }
    // set content-type header
    req.Header.Set("Content-Type", "application/json")
    // set x-api-key header
    req.Header.Set("x-api-key", secret)
    // send request
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    // print response
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic(err)
    }
    fmt.Println(string(body))
}
Related