AWS 中的简单锁定
项目描述
AWS 群
flock类似 AWS 中应用程序的功能,使用 dynamodb 作为同步的后端。
与经典命令一样简单的 CLI 工具flock。
用例
- 在 AWS 中跨工作人员同步多个自动化作业
- 编写一次只能运行一名操作员的脚本(例如,具有 terraform、CFN 等的生产部署工具)
- 使用 AWS 凭证同步非 AWS 系统(例如 GitHub Actions)中的作业
用法
可以找到完整的使用信息
awsflock --help
在 DynamoDB 中创建表以便开始使用awsflock:
awsflock table-create
获取锁,有效期为 15 分钟,并获取锁LEASE_ID:
LEASE_ID="$(awsflock acquire LockFoo --lease-duration '15 minutes')"
更新锁,取回新LEASE_ID的并将过期窗口减少到 5 分钟,以秒为单位指定:
LEASE_ID="$(awsflock renew LockFoo "$LEASE_ID" --lease-duration '300s')"
释放锁,以便其他人可以使用它:
awsflock release LockFoo "$LEASE_ID"
尝试获取另一个锁,但不要阻塞并等待它被获取:
LEASE_ID="$(awsflock acquire LockBar --no-wait)"
if [ $? -eq 0 ]; then
# lock acquired ...
else
# lock not acquired ...
fi
行为/模型
锁的持有时间有限。在那之后,如果没有更新,锁就会过期,另一个工作人员可能会收回锁。当锁被持有时,持有它的工人在锁上有一个“租约”,由给定的 证明LEASE_ID。ALEASE_ID可用于“更新”或“释放”给定的锁。
awsflock需要 DynamoDB 中的表来存储活动锁。默认情况下,表名是awsflock,但可以使用自定义名称。您必须先创建表,然后才能使用锁(它永远不会自动创建)。锁由名称标识,这些名称是
awsflock表中的唯一键。
如果没有显式释放,锁的生命周期是有限的(默认值:2 小时),之后它们可能会被任何试图获取该锁的人“回收”。
注意: 将本地时钟时间与锁定到期时间进行比较,以确定是否可以尝试回收。默认回收窗口(5 秒)对于大多数用例来说绰绰有余,但假设您的时钟由 NTP 或类似协议同步。在不能信任时钟的情况下使用可能会导致错误的锁回收。
当你获得一个锁时,你会得到一个LEASE_ID. 然后LEASE_ID可以使用它来更新锁或释放它。这样,锁由一个所有者在有限的时间内持有,并LEASE_ID构成所有权证明。
变更日志
0.2.0
- 更高级的持续时间解析
0.1.1
- 小修
0.1.0
- 初始发行
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
awsflock-0.2.0.tar.gz
(13.6 kB
查看哈希)
内置分布
awsflock-0.2.0-py3-none-any.whl
(15.0 kB
查看哈希)