【问题标题】:Get AWS EMR Cluster ID from Name从名称获取 AWS EMR 集群 ID
【发布时间】:2021-08-17 05:59:11
【问题描述】:

AWS CLI 命令aws emr list-clusters 返回以下 json。有没有办法通过 bash 或 groovy 使用 Name 来获取 Id?我不能只使用 ID,因为我正在删除集群并仅使用相同的名称重建它们。所以我知道集群的名称是“my-cluster”,我想以某种方式使用它来获取集群的 ID。最终情况是我实际上想要集群的主公共 DNS。

    {
        "Clusters": [
        {
            "Status": {
                "Timeline": {
                "ReadyDateTime": 1433200405.353,
                "CreationDateTime": 1433199926.596
            },
            "State": "WAITING",
            "StateChangeReason": {
                "Message": "Waiting after step completed"
                }
            },
            "NormalizedInstanceHours": 6,
            "Id": "j-3SD91U2E1L2QX",
            "Name": "my-cluster"
        },
        {
            "Status": {
                "Timeline": {
                    "ReadyDateTime": 1433200405.353,
                    "CreationDateTime": 1433199926.596
            },
            "State": "WAITING",
            "StateChangeReason": {
                "Message": "Waiting after step completed"
            }
        },
        "NormalizedInstanceHours": 6,
        "Id": "j-3S281UEK8L2LW",
        "Name": "my-cluster2"
        }
    ]
    }

【问题讨论】:

  • 你的问题是问如何获取集群id,但你提到最终状态是获取集群的公共dns名称,你想要一个1-liner直接获取dns名称吗?

标签: bash amazon-web-services groovy


【解决方案1】:

您可以使用query 参数来实现您所尝试的。该命令如下所示:

aws emr list-clusters --query 'Clusters[?Name==`my-cluster`].Id' --output text

您可以找到query 参数here 的完整文档。

【讨论】:

  • list-clusters 会列出用户可以访问的所有集群,查询不是很耗时吗?
  • 请注意,如果您有很多集群,您应该限制 cli cmd 处理的集群数量,例如指定 --max-items 选项
【解决方案2】:

要回答完整的问题,可以将上述方法放在多行的长单行中。

aws emr describe-cluster                                       \
 --output text                                                 \
 --cluster-id  $(aws emr list-clusters                         \
                  --active                                     \
                  --query 'Clusters[?Name==`my-cluster`].Id'   \
                  --output text)                               \
 --query Cluster.MasterPublicDnsName

【讨论】:

  • 如何将my-cluster 替换为动态变量?
猜你喜欢
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 2019-04-08
  • 1970-01-01
  • 2016-02-19
  • 2020-12-30
相关资源
最近更新 更多