AWS EC2安全组IP权限规则如何通过PHP SDK v3设置名称?
你在控制台看到的安全组规则“名称”,本质是绑定在安全组规则资源上的Name标签,你之前的代码只设置了规则的描述字段,没有给规则绑定标签,所以名称列是空的。
方案1:创建规则时直接指定标签(推荐)
AWS PHP SDK v3的新版本已经支持在调用authorizeSecurityGroupIngress接口时直接传入TagSpecifications参数配置安全组规则的标签,你只需要在原有参数基础上新增对应配置即可,示例代码如下:
$ip_permissions = [ 'GroupName' => 'my_security_group', 'FromPort' => 0, 'ToPort' => 65535, 'IpProtocol' => 'tcp', 'IpRanges' => [['CidrIp' => 'xx.xxx.xx.xxxx/32', 'Description' => 'Main Office']], // 新增安全组规则标签配置 'TagSpecifications' => [ [ 'ResourceType' => 'security-group-rule', 'Tags' => [ ['Key' => 'Name', 'Value' => '你需要设置的规则名称'] ] ] ] ]; $Ec2Client->authorizeSecurityGroupIngress($ip_permissions);
方案2:创建规则后单独打标签
如果你当前使用的SDK版本较低,不支持在创建规则时直接传标签,可以先创建规则拿到规则ID,再调用createTags接口单独给规则绑定Name标签,示例代码如下:
// 原有创建安全组规则的逻辑 $ip_permissions = [ 'GroupName' => 'my_security_group', 'FromPort' => 0, 'ToPort' => 65535, 'IpProtocol' => 'tcp', 'IpRanges' => [['CidrIp' => 'xx.xxx.xx.xxxx/32', 'Description' => 'Main Office']], ]; $result = $Ec2Client->authorizeSecurityGroupIngress($ip_permissions); // 获取新创建的安全组规则ID $securityGroupRuleId = $result['SecurityGroupRules'][0]['SecurityGroupRuleId']; // 给规则绑定Name标签 $Ec2Client->createTags([ 'Resources' => [$securityGroupRuleId], 'Tags' => [ ['Key' => 'Name', 'Value' => '你需要设置的规则名称'] ] ]);
注意事项
- 你之前代码中
IpRanges里设置的Description是规则的描述属性,和名称是两个独立字段,不会自动同步到名称列 - 安全组规则标签功能仅在2016-11-15及之后版本的EC2 API中支持,如果以上方案无法生效建议先升级AWS PHP SDK到最新版本
内容的提问来源于stack exchange,提问作者EastsideDev
相关产品推荐
相关产品推荐

