阿里函数计算中我想做一个oss 和fc 结合做图片处理的场景。
fc 里需要 访问oss 需要 密钥
我通过上下文获取密钥。
但我看到文档里通过上下文获取的密钥有效期是36小时。 有几个问题
-
这个是说我每次通过上下文取到的密钥都是36小时吗
-
假设是36小时 我用这个密钥初始化了一个oss 客户端 然后有请求就复用这个客户端 ,有没有可能我的fc 实例一直运行超过36h 之后 该实例再处理请求 出现密钥过期?
阿里函数计算中我想做一个oss 和fc 结合做图片处理的场景。
fc 里需要 访问oss 需要 密钥
我通过上下文获取密钥。
但我看到文档里通过上下文获取的密钥有效期是36小时。 有几个问题
这个是说我每次通过上下文取到的密钥都是36小时吗
假设是36小时 我用这个密钥初始化了一个oss 客户端 然后有请求就复用这个客户端 ,有没有可能我的fc 实例一直运行超过36h 之后 该实例再处理请求 出现密钥过期?
您提到的“36小时”是指密钥的有效期。上下文中提供的临时密钥的有效期是有限制的,因此在您通过上下文获取密钥时,请务必确认密钥的有效期。若实例连续运行时间超过36小时,则会导致临时密钥过期。您可以在代码中重新获取临时密钥以延长密钥的有效期,或者通过系统设置进行更改。请注意,为了避免密钥过期,建议您通过合理的代码设计以及处理密钥过期的机制来保证数据安全性
是的,每次通过上下文获取到的密钥都是36小时有效期。如果您使用这个密钥初始化了一个OSS客户端,并且有请求就复用这个客户端,那么在您的FC实例运行超过36小时后,该实例再处理请求时可能会出现密钥过期的情况。
为了避免这种情况发生,您可以采取以下措施:
在FC实例中定期更新密钥。您可以编写一个定时任务或者监控程序,每隔一段时间(比如35小时)就重新获取一次密钥,并更新到您的OSS客户端中。这样可以确保您始终使用的是有效的密钥。
使用长期有效的密钥。阿里云提供了一些长期有效的密钥,比如STS临时凭证和RAM角色绑定的临时安全令牌。您可以将这些长期有效的密钥用于您的OSS客户端,而不是通过上下文获取的临时密钥。
将密钥存储在外部。您可以将密钥存储在一个外部的持久化存储中,比如Redis或者数据库中。这样可以避免每次获取密钥都需要从上下文中读取,同时也可以在需要的时候方便地更新密钥。
我们监控到一个实例,最多就运行几个小时。。36这个不太可能的。 这里获取的密钥,在同一个时间,可能有多个实例会共用同一个的,并不是实例每一次启动都会创建一个新的。我们也是这样做,但没监控到因为密钥过期导致了异常。此回答来自钉群阿里函数计算官网客户。