Невозможно добавить теги при запуске экземпляра EC2 через AWS SDK для PHP (без интерфейса командной строки)

Я могу успешно запускать новые экземпляры с помощью AWS SDK для PHP. Однако я не могу добавлять теги ('Name' = 'New Instance'). Я пробовал делать это несколькими способами, и наиболее разумным мне показалось следующее. Однако после обновления панели управления EC2 я вижу, что новый экземпляр создан, однако тег имени все еще остается пустым.

        $ec2Client = new Ec2Client([
            'region' => 'xx-xxxx-1',
            'version' => 'latest',
            'profile' => 'default'
        ]);
        // Launch an instance with the key pair and security group
        $result = $ec2Client->runInstances(array(
            'ImageId'           => 'ami-xxxxxxxx',
            'MinCount'          => 1,
            'MaxCount'          => 1,
            'InstanceType'      => 't2.large',
            'KeyName'           => 'xxxxxx',
            'SubnetId'          => 'subnet-xxxxxxxx',
            'VpcId'             => 'vpc-xxxxxxxx',
            'Tags'              => array(
                                        'Key' => 'Name',
                                        'Value' => 'New Instance',
                                    ),
            'SecurityGroups'[1] => 'sg-xxxxxxxx',
        ));
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
284
2

Ответы 2

Я не знаю, какую версию SDK вы используете, но из документации AWS v2 SDK нет ключа Tags.

Попробуйте использовать другую функцию createTags. Обратите внимание, что Tags - это двойной массив, не такой, как в вашем примере.

$ec2Client->createTags([
    'Resources' => [$result['Instances'][0]['InstanceId']],
    'Tags' => [
        ['Key' => '', 'Value' => ''],
        ['Key' => '', 'Value' => ''],
    ]
]);

Я использую последнюю версию 3. Как бы то ни было, я пропустил то, о чем говорилось в документации, и нашел решение этой проблемы. Я обновлю это как ответ.

Sydrik 01.06.2018 09:02

Спасибо @Justinas за указание на использование версии 2. Однако я использую SDK версии 3 и нашел ответ в https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#runinstances.

Протестировано и работает, тег может быть выполнен в разделе TagSpecifications в операции RunInstances следующим образом:

'TagSpecifications' => [
    [
        'ResourceType' => 'instance',
        'Tags' => [
            [
                'Key' => 'Name',
                'Value' => 'New Instance Name',
            ],
        ],
    ],
],

Более подробную информацию о структуре массива TagSpecifications можно найти здесь: https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#shape-tagspecification, а для структуры тегов здесь: https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-ec2-2016-11-15.html#shape-tag

Другие вопросы по теме