Я могу успешно запускать новые экземпляры, используя AWS SDK для PHP. Однако я не могу добавить теги («Имя» = «Новый экземпляр»). Я попытался сделать это несколькими способами, из которых следующие выглядели наиболее разумными. Тем не менее, после обновления панели мониторинга 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.
Протестировано и работает, тег можно сделать в разделе «Спецификации тега» в операции 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