通过AWS SDK for PHP启动EC2实例时无法添加标记(无CLI)

通过AWS SDK for PHP启动EC2实例时无法添加标记(无CLI),php,arrays,amazon-web-services,instances,Php,Arrays,Amazon Web Services,Instances,我能够使用AWS SDK for PHP成功地启动新实例。但是,我无法添加标记('Name'='newinstance')。我尝试了几种方法,下面的方法似乎是最合理的。但是,在刷新EC2仪表板时,我可以看到创建了新实例,但是名称标记仍然为空 $ec2Client = new Ec2Client([ 'region' => 'xx-xxxx-1', 'version' => 'latest', 'p

我能够使用AWS SDK for PHP成功地启动新实例。但是,我无法添加标记('Name'='newinstance')。我尝试了几种方法,下面的方法似乎是最合理的。但是,在刷新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,但是从文档中没有
标记

尝试使用其他函数。请注意,
标记
是双数组,与您的示例不同

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

感谢@Justinas指出使用版本2。然而,我正在使用版本3 SDK,并在中找到了答案

通过测试和工作,可以在RunInstances操作下的TagSpecifications下完成标记,如下所示:

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

有关TagSpecifications数组结构的更多信息,请参见此处:,对于此处的标记结构:

我使用的是最新版本3。无论如何,我确实错过了文档中所说的内容,我已经找到了解决这个问题的方法。我会更新这个作为一个答案。