Я могу успешно запускать новые экземпляры с помощью 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',
));






Я не знаю, какую версию SDK вы используете, но из документации AWS v2 SDK нет ключа Tags.
Попробуйте использовать другую функцию createTags. Обратите внимание, что Tags - это двойной массив, не такой, как в вашем примере.
$ec2Client->createTags([
'Resources' => [$result['Instances'][0]['InstanceId']],
'Tags' => [
['Key' => '', 'Value' => ''],
['Key' => '', 'Value' => ''],
]
]);
Спасибо @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
Я использую последнюю версию 3. Как бы то ни было, я пропустил то, о чем говорилось в документации, и нашел решение этой проблемы. Я обновлю это как ответ.