Static Ip Issue

Hi Team,

We are trying to fetch the data from our Aws s3 bucket when ever scheduled event get triggered in server.

We have whitelisted the freshworks IP(13.232.159.149 and 13.233.170.242) address provided in freshworks developer documentation (Freshworks Developer Docs | Use request method to place secure HTTP calls), in our s3 bucket but still getting receiving error stating “Access denied”.

After checking log’s in s3 Bucket, we see that s3 bucket is receiving hits from dynamic IP instead of Freshworks Static IP’s (13.232.159.149 and 13.233.170.242).

How can we fix this issue ?

Thanks,
Suman C.

Hey Suman — I am curious whether this issue has started occurring recently while it was working well previously.

  • How long has it been since the app was published?
  • When did the dynamic IP start to occur?

Hi @Saif,

No Saif, from when the deployed, as custom App in freshdesk we are receiving this error. The app was working fine only in local.

Thanks,
Suman.

Hi @Saif @Raviraj

Can you please share your inputs for this?

Hi @Suman_Chinnaraju,

The given IP address would only be applicable if the API request is made using the platform’s Request Method. Could you confirm if the same is used? If so, please share the code and provide more details to help debug the issue.

Otherwise, if any third-party library or SDK is used, the requests will originate from dynamic IP addresses.

Hi @Raviraj ,

Request method code we used in our app is shared below

“getObjectsFromS3”: {
“schema”: {
“method”: “GET”,
“host”: “your-bucketname.s3.ap-south-1.amazonaws.com”,
“path”: “/<%= context.fileName %>”,
“headers”:{
“Accept”: “application/json”
}
},
“options”: {
“retryDelay”: 1000,
“isOAuth”: false
}
}

Thanks,
RamanidharanS

Hi @Raviraj,

We have used Freshworks request package but still we are receiving hit from dynamic IP.

Below is the code snippet used in app.

const checkTheFileFunc = (user_id, args, ticketId) => { 

  let bucketName = "abcd-bucket";
  let fileName = `${user_id}.json`;

  return new Promise(async (resolve, reject) => {
    try {
      let data = await $request.invokeTemplate("getObjectsFromS3", {
        context: {
          fileName: fileName,
        },
      });

      let parsedDetails = JSON.parse(data.response);

      let arrObjOne = [];

      let resultData = parsedDetails.data;

      for (let i = 0; i < resultData.length; i++) {
        console.log(resultData[i]);
        if (args.data.commitment_id == resultData[i].commitment_id) {
          arrObjOne.push(resultData[i]);
        }
      }

      resolve(arrObjOne);
    } catch (error) {
      console.error("error in getTicketDetails", error);
      reject(error);
    }
  });
};

// Below one is the request template 

"getObjectsFromS3": {
    "schema": {
        "method": "GET",
        "host": "abcd-bucket.s3.ap-south-1.amazonaws.com",
        "path": "/<%= context.fileName %>",
        "headers":{
          "Accept": "application/json"
        }
      },
      "options": {
        "retryDelay": 1000,
        "isOAuth": false
      }
  }


Thanks,
Suman C.

Hi @Raviraj , @Saif,

Could you please share your feedback about the code snippet and the issue.

Thanks,
Suman C.