AWS中的简单锁定
项目描述
AWS flock
使用dynamodb作为后端进行同步的AWS中类似于flock的功能。
一个与经典flock
命令一样简单的CLI工具。
使用案例
- 在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
证明。可以使用LEASE_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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2d255cea0f96a730cb1b26e8f25fc2a8627f643d53d89fd3bcd1dd790925ca42 |
|
MD5 | abbbdcc5726e3fa2da5a9f280fc5f1f3 |
|
BLAKE2b-256 | 41342a4a4900f80fc2bea4681cb4551ee71fba496e035eecf2a687fcef7d044b |
关闭
awsflock-0.2.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1d457f2b563bc12ebc4e2ae187ca25a09d41848978ad08543c7a571564039753 |
|
MD5 | f72f667050814d4cc5073597bf3e9493 |
|
BLAKE2b-256 | 8732e3f7ba955842a830af668470e7ac8cac23da545cd091f67b0e1eedfb6104 |