Open LeonPatmore opened 3 months ago
Hi Leon, a couple of details about how the caching works:
ListSecrets
call in getCredentials
is cached.)GetSecretValue
call), because the sensitive credential material must never be cached.From what you posted it looks like you encountered the AWS API error when the list of credential names was fetched. Since there is already a caching strategy for that part, the only thing I can think of is that you should check that the cache has not been turned off in your plugin configuration.
Understood, thanks for the reply. Out of interest @chriskilding , do you have any recommendations for dealing with high throughput jobs that reply on secrets? The issue is that we have quite a few jobs running, multiple times a minute, and this is putting pressure on the AWS secret manager limits.
The only thing I can think of right now is it manually copy the secret as a local Jenkins secret. In an ideal world we would have something that would cache the value of the secret so that we can avoid many lookups.
Hi Leon,
One thing that may help is that, because AWS appreciate that caching secret values is unwise, they have a much higher rate limit for the GetSecretValue call compared to the ListSecrets call.
From this guide: https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_limits.html we see the following rate limits:
Each supported Region: 10,000 per second
Each supported Region: 100 per second
Based on these values, I'd say that if you are hitting the ListSecrets rate limit, you're either:
Would you be able to share some details about how you're running Jenkins, just to see if there's anything else we can do?
What feature do you want to see added?
Hello, I am using this Jenkins plugin to sync secrets from secretsmanager. Sometimes we get an temporary error when trying to sync the secrets, such as:
When this happens, it seems like the secrets that should come from secret manager are no longer accessible by our jobs. They fail with:
Would it be possible to keep the cached secrets during a failed refresh event (assuming the refresh failed due to a temporary issue). This way temporary issues would not impact our jobs.
Cheers
Upstream changes
No response
Are you interested in contributing this feature?
No response