Можно ли пометить пару ключей SSH в AWS?

DescribeKeypairs говорит, что KeyPair может иметь теги, однако это невозможно для фильтрации ключей по тегу или tag_key. Кроме того, пары ключей не имеют определенного идентификатора типа, например i-*, vol-* и т. д., поэтому пометка с помощью CreateTags также невозможна. Создание через Интернет также невозможно. Все это кажется очень запутанным, потому что нет возможности создать тег, но его можно пометить ????

Есть ли способ пометить пары ключей?


person yurzs    schedule 03.04.2020    source источник
comment
Большинство новых сервисов имеют add-tags-to-resource API, который принимает ресурс ARN, такой как arn:aws:ec2:us-east-1:123456789012:key-pair/my-keyname, но EC2 API здесь, похоже, является исключением. Я бы предположил, что это одна из самых первых/старых вещей в AWS.   -  person Anton    schedule 03.04.2020
comment
Кто-то обновил документы для KeyPairInfo на этих выходных. Теперь все понятно. Спасибо молчаливому сотруднику AWS   -  person yurzs    schedule 06.04.2020


Ответы (2)


хм... Я лично не пробовал, но использование describe-key-pairs в интерфейсе командной строки AWS должно дать вам идентификатор ключа.

Однако я нашел единственный способ пометить идентификатор ключа с помощью AWS CLI, чтобы сгенерировать его и посмотреть на результат.

Если вы используете простую команду:

aws ec2 create-key-pair --key-name my-test-key --profile my-profile

Затем на выходе есть идентификатор ключа.

{
    "KeyFingerprint": "6d:5c:e0:19:de:.........",
    "KeyMaterial": "......",
    "KeyName": "my-test-key",
    "KeyPairId": "key-0ab4ff01abc9999e"
}

Затем вы можете пометить ресурс, используя уже известные вам create-tags.

person Leonardo    schedule 04.04.2020

<сильный>1. Идентификаторы

Начиная с aws-cli версии 2.2.11 для Linux, ключи имеют KeyPairId ... идентификаторы ресурсов.

<сильный>2. О пометке ключей

Да, вы можете использовать теги создания ec2. Использование create-key-pair довольно проблематично.

aws ec2 create-tags help — это ссылка для приведенных ниже команд.

Общая команда и аргументы...

aws ec2 create-tags \
 --resources "string" "string" --tags Key=string,Value=string ...

Пример.

Сначала опишите мои ключи, чтобы получить идентификаторы ресурсов... Идентификаторы пары ключей.

aws ec2 describe-key-pairs --profile-name adrianteri-devops

вывод

{
    "KeyPairs": [
        {
            "KeyPairId": "key-044180521638ac88d",
            "KeyFingerprint": "69:b4:71:46:65:40:37:59:7c:8c:5f:fa:c6:46:5a:e4:12:e0:46:54",
            "KeyName": "adrianteri-devops",
            "Tags": []
        },
        {
            "KeyPairId": "key-0c010638921030fdc",
            "KeyFingerprint": "21:6b:f8:05:bc:96:13:8d:ba:75:41:bb:5b:43:15:f7:9c:b0:a3:a4",
            "KeyName": "ansible-devops",
            "Tags": []
        }
        {
            "KeyPairId": "key-0d047bbc242c7e0a2",
            "KeyFingerprint": "69:2d:6f:6f:af:cf:45:d3:a9:d5:e7:63:b3:54:8b:85:32:67:9e:a0",
            "KeyName": "test-keypair",
            "Tags": []
        }

    ]
}
(END)

Теперь создайте теги...

aws ec2 create-tags --resources key-044180521638ac88d key-0c010638921030fdc --tags Key=Project,Value=adrianteri-com Key=CreatedBy,Value=adrianteri --profile adrianteri-devops

Тестовая пара ключей имеет разные теги.

aws ec2 create-tags --resources key-0d047bbc242c7e0a2 --tags Key=Project,Value=Test Key=CreatedBy,Value=TestBot Key=Billing,Value=QualityAssuarance --profile adrianteri-live-devops

Результат повторного описания моих пар ключей:

{
    "KeyPairs": [
        {
            "KeyPairId": "key-044180521638ac88d",
            "KeyFingerprint": "69:b4:71:46:65:40:37:59:7c:8c:5f:fa:c6:46:5a:e4:12:e0:46:54",
            "KeyName": "adrianteri-devops-keypair",
            "Tags": [
                {
                    "Key": "Project",
                    "Value": "adrianteri-com"
                },
                {
                    "Key": "CreatedBy",
                    "Value": "adrianteri"
                }
            ]
        },
        {
            "KeyPairId": "key-0c010638921030fdc",
            "KeyFingerprint": "21:6b:f8:05:bc:96:13:8d:ba:75:41:bb:5b:43:15:f7:9c:b0:a3:a4",
            "KeyName": "ansible-devops-keypair",
            "Tags": [
                {
                    "Key": "Project",
                    "Value": "adrianteri-com"
                },
                {
                    "Key": "CreatedBy",
                    "Value": "adrianteri"
                }
            ]
        },
        {
            "KeyPairId": "key-0d047bbc242c7e0a2",
            "KeyFingerprint": "69:2d:6f:6f:af:cf:45:d3:a9:d5:e7:63:b3:54:8b:85:32:67:9e:a0",
            "KeyName": "test-keypair",
            "Tags": [
                {
                    "Key": "Project",
                    "Value": "Test"
                },
                {
                    "Key": "CreatedBy",
                    "Value": "TestBot"
                },
                {
                    "Key": "Billing",
                    "Value": "QualityAssuarance"
                }
            ]
        }
    ]
}
(END)

<сильный>3. Фильтрация ключей по тегам

Также возможно использование --фильтров tag-key и tag :<key>.

tag-key

aws ec2 describe-key-pairs --filters Name=tag-key,Values=Billing --profile adrianteri-devops

вывод

{
    "KeyPairs": [
        {
            "KeyPairId": "key-0d047bbc242c7e0a2",
            "KeyFingerprint": "69:2d:6f:6f:af:cf:45:d3:a9:d5:e7:63:b3:54:8b:85:32:67:9e:a0",
            "KeyName": "test-keypair",
            "Tags": [
                {
                    "Key": "Project",
                    "Value": "Test"
                },
                {
                    "Key": "CreatedBy",
                    "Value": "TestBot"
                },
                {
                    "Key": "Billing",
                    "Value": "QualityAssurance"
                }
            ]
        }
    ]
}
(END)

tag :<key>

aws ec2 describe-key-pairs --filters Name=tag:CreatedBy,Values=adrianteri -profile adrianteri-devops

вывод

{
    "KeyPairs": [
        {
            "KeyPairId": "key-044180521638ac88d",
            "KeyFingerprint": "69:b4:71:46:65:40:37:59:7c:8c:5f:fa:c6:46:5a:e4:12:e0:46:54",
            "KeyName": "adrianteri-devops-keypair",
            "Tags": [
                {
                    "Key": "Project",
                    "Value": "adrianteri-com"
                },
                {
                    "Key": "CreatedBy",
                    "Value": "adrianteri"
                }
            ]
        },
        {
            "KeyPairId": "key-0c010638921030fdc",
            "KeyFingerprint": "21:6b:f8:05:bc:96:13:8d:ba:75:41:bb:5b:43:15:f7:9c:b0:a3:a4",
            "KeyName": "ansible-devops-keypair",
            "Tags": [
                {
                    "Key": "Project",
                    "Value": "adrianteri-com"
                },
                {
                    "Key": "CreatedBy",
                    "Value": "adrianteri"
                }
            ]
        }
    ]
}
(END)

person AdrianTeri    schedule 11.06.2021