gpt4 book ai didi

amazon-web-services - AWS CLI EMR 获取主节点实例 ID 并对其进行标记

转载 作者:行者123 更新时间:2023-12-02 03:58:07 29 4
gpt4 key购买 nike

我想要自动化集群的运行,并且可以使用标签来获取 EC2 实例的属性(例如实例 ID)。

关于 https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html 的文档指出

--tags (list)

A list of tags to associate with a cluster, which apply to each Amazon EC2 instance in the cluster. Tags are key-value pairs that consist of a required key string with a maximum of 128 characters, and an optional value string with a maximum of 256 characters.

You can specify tags in key=value format or you can add a tag without a value using only the key name, for example key . Use a space to separate multiple tags.

因此,这会将标签应用于每个 EC2 实例,包括主实例和从实例。如何判断哪个实例是主节点?

其他信息:我使用以下命令根据标签从 aws cli 获取属性,您可以分别将“Name”和“Prod”替换为标签键值对。

aws ec2 describe-instances | jq '.Reservations[].Instances | select(.[].Tags[].Value | startswith("Prod") ) |   select(.[].Tags[].Key == "Name") |   {InstanceId: .[].InstanceId, PublicDnsName: .[].PublicDnsName, State: .[].State, LaunchTime: .[].LaunchTime, Tags: .[].Tags}   | [.]' | jq .[].InstanceId

最佳答案

正如您在创建 EMR 集群时所注意到的,所有节点(主节点、从节点、任务节点)的标签都是相同的。

您会发现使用 AWS CLI 的此过程很复杂。我的建议是查看下面的示例,然后编写一个 Python 程序来执行此操作。

将您自己的标签添加到 EC2 实例的过程。

第 1 步:列出您的 EMR 集群:aws emr 列表集群

这将输出 JSON:

{
"Clusters": [
{
"Id": "j-ABCDEFGHIJKLM",
"Name": "'MyCluster'",
"Status": {
"State": "WAITING",
"StateChangeReason": {
"Message": "Cluster ready after last step completed."
},
"Timeline": {
"CreationDateTime": 1536626095.303,
"ReadyDateTime": 1536626568.482
}
},
"NormalizedInstanceHours": 0
}
]
}

第 2 步:记下 JSON 中的集群 ID:

"Id": "j-ABCDEFGHIJKLM",

第 3 步:描述您的 EMR 集群:aws emr 描述集群 --cluster-id j-ABCDEFGHIJKLM

这将输出 JSON(我已将此输出截断为仅 MASTER 部分):

{
"Cluster": {
"Id": "j-ABCDEFGHIJKLM",
"Name": "'Test01'",
....
"InstanceGroups": [
{
"Id": "ig-2EHOYXFABCDEF",
"Name": "Master Instance Group",
"Market": "ON_DEMAND",
"InstanceGroupType": "MASTER",
"InstanceType": "m3.xlarge",
"RequestedInstanceCount": 1,
"RunningInstanceCount": 1,
"Status": {
"State": "RUNNING",
"StateChangeReason": {
"Message": ""
},
"Timeline": {
"CreationDateTime": 1536626095.316,
"ReadyDateTime": 1536626533.886
}
},
"Configurations": [],
"EbsBlockDevices": [],
"ShrinkPolicy": {}
},
....
]
}
}

第 4 步:InstanceGroups 是一个数组。找到 InstanceGroupTypeMASTER 的条目。记下Id

“Id”:“ig-2EHOYXFABCDEF”,

第 5 步:列出您的集群实例:aws emr list-instances --cluster-id j-ABCDEFGHIJKLM

这将输出 JSON(我已截断输出):

{
"Instances": [
....
{
"Id": "ci-31LGK4KIECHNY",
"Ec2InstanceId": "i-0524ec45912345678",
"PublicDnsName": "ec2-52-123-201-221.us-west-2.compute.amazonaws.com",
"PublicIpAddress": "52.123.201.221",
"PrivateDnsName": "ip-172-31-41-111.us-west-2.compute.internal",
"PrivateIpAddress": "172.31.41.111",
"Status": {
"State": "RUNNING",
"StateChangeReason": {},
"Timeline": {
"CreationDateTime": 1536626164.073,
"ReadyDateTime": 1536626533.886
}
},
"InstanceGroupId": "ig-2EHOYXFABCDEF",
"Market": "ON_DEMAND",
"InstanceType": "m3.xlarge",
"EbsVolumes": []
}
]
}

第 6 步:找到匹配的 InstanceGroupId ig-2EHOYXFABCDEF。这将为您提供 MASTER 的 EC2 实例 ID:"Ec2InstanceId": "i-0524ec45912345678"

第 7 步:标记您的 EC2 实例:

aws ec2 create-tags --resources i-0524ec45912345678 --tags Key=EMR,Value=MASTER

使用 CLI 过滤器 和/或 jq 可能会更简单,但这应该是足够的信息,以便您知道如何查找和标记 EMR 主实例.

关于amazon-web-services - AWS CLI EMR 获取主节点实例 ID 并对其进行标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52256438/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com