【问题标题】:How do I filter latest app-engine version from all of the versions using gcloud command or any bash script如何使用 gcloud 命令或任何 bash 脚本从所有版本中过滤最新的应用引擎版本
【发布时间】:2019-11-12 09:47:59
【问题描述】:

我想制作一个 bash 脚本,该脚本将删除 30 天前的 Google App Engine 版本,它已经完成并且工作正常。但现在我担心的是,如果最新的应用引擎服务版本本身已经 30 天,那么它也会被删除。如果在应用程序引擎中只有最新版本,我该如何防止这种情况发生,那么它不会触发 gcloud app versions delete $VERSION --service $1 -q 的命令,否则它将删除 30 天的旧版本。

【问题讨论】:

    标签: bash shell google-app-engine google-cloud-platform


    【解决方案1】:

    您可以按 TRAFFIC_SPLIT 过滤并仅删除没有流量分配或您要创建的任何布尔条件的版本:

    例如,此命令将打印所有流量拆分 == 0 的版本:

    for row in `gcloud app versions list --filter="traffic_split=0" --format="table(version.id)"| tail -n +2`; do echo  $row; done
    

    或所有具有 serving_status == 已停止的版本

    for row in `gcloud app versions list --filter="serving_status=stopped" --format="table(version.id)"| tail -n +2`; do echo  $row; done
    

    然后在 for 循环中你可以删除你想要的版本:

    do gcloud app versions delete $row --quiet
    

    【讨论】:

    • 我们可以使用两个过滤器参数吗--filter="traffic_split=0" & --filter="version.createTime.date('%Y-%m-%d', Z)
    • 你可以这样使用:--filter="trafic_split=0 AND version.createTime.date('%Y-%m-%d', Z)
    • gcloud app versions list --service name --filter="traffic_split=0" --filter="version.createTime.date('%Y-%m-%d', Z)<'$(date +"%Y-%m-%d" --date="10 days ago")'" --format="table(version.id)"| tail -n +2 只使用时间过滤器而不是流量过滤器。
    • 我觉得应该只有一个 --filter="bool1 AND bool2 AND bool3" link
    【解决方案2】:

    您可以使用--hide-no-traffic 标志列出正在接收流量的版本并跳过删除这些版本。

      $ gcloud app versions list --hide-no-traffic
    

    【讨论】:

    • 我相信他实际上需要相反并且删除当前接收流量的版本
    • 是的,这就是我的建议。 --hide-no-traffic 将给出正在接收流量的实例列表,它们可以跳过删除。
    • 是的,这令人困惑。让我编辑答案。谢谢@LundinCast
    • 实际上我想过滤掉 25 天以前没有服务于流量的版本。 --filter="traffic_split=0" 该过滤器正在工作,但是当我尝试与gcloud app versions list --service name --filter="traffic_split=0" --filter="version.createTime.date('%Y-%m-%d', Z)<'$(date +"%Y-%m-%d" --date="10 days ago")'" --format="table(version.id)"| tail -n +2 一起使用时,它只会工作时间过滤器而不是流量过滤器。
    • 如果你使用:--filter="traffic_split=0" AND "version.createTime.date('%Y-%m-%d', Z)
    猜你喜欢
    • 1970-01-01
    • 2022-06-14
    • 2018-09-20
    • 1970-01-01
    • 2022-06-28
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多