预配置并发Lambda场景下缓存的boto3客户端凭证如何刷新?
Lambda预配置并发场景下缓存boto3客户端的凭证刷新问题解答
你担心的缓存boto3客户端导致凭证过期的问题不会出现,具体逻辑如下:
- Lambda执行环境的临时凭证会自动轮换:不管是普通并发还是预配置并发的执行环境,Lambda都会在环境内置的临时凭证过期前自动完成更新,环境变量中存储的
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN会自动同步为最新有效凭证,不会因为执行环境长期存活就出现凭证过期未更新的情况。 boto3客户端内置自动刷新逻辑:只要你没有手动在初始化时传入固定的凭证参数,使用默认凭证链初始化的boto3客户端,会在底层凭证接近过期时自动重新从环境变量读取最新的凭证,这个动作是客户端内部实现的,和你是否用@lru_cache缓存了客户端实例没有关系,缓存的客户端实例也可以正常完成凭证刷新。- 唯一需要规避的错误用法:如果你在初始化
boto3客户端时,主动读取当时的环境变量凭证值作为参数传入boto3.client()方法,相当于把凭证写死在客户端实例里,这种情况才会导致后续凭证过期无法刷新。只要遵循官方推荐的默认初始化方式,缓存客户端的做法完全安全,也是官方推荐的性能优化手段。
内容的提问来源于stack exchange,提问作者Giulio Micheloni
相关产品推荐
相关产品推荐

