我使用的是最新版本的 PHP SDK v3。该文档不包含示例,并且验证令人困惑。我正在使用此处的文档。
我正在尝试以下操作:
$result = $ec2Client->modifySecurityGroupRules(
[
'GroupId' => 'sg-ebd1cf8e',
'SecurityGroupRules' => [
'SecurityGroupRuleId' => [SECURITY GROUP ID],
'SecurityGroupRule' => [
'SecurityGroupRuleId' => [SECURITY GROUP ID],
'CidrIpv4' => [NEW IP4 ADDRESS],
'Description' => [RULE DESCRIPTION]
]
]
]
);
print_r( $result );
回复:
Uncaught InvalidArgumentException: Found 1 error while validating the input provided for the ModifySecurityGroupRules operation:
[SecurityGroupRules][SecurityGroupRuleId] must be an associative array. Found string(21) XXXXXXXXXX in /var/www/XXXXXXXXXX/aws/Aws/Api/Validator.php:65
根据docs,安全组规则 ID 是一个字符串,但验证正在寻找一个从未定义的关联数组。
感谢@mark-b找到了解决方案 比我正在使用的更好的文档在这里。 这是我的有效代码:
$result = $ec2Client->modifySecurityGroupRules( [
'GroupId' => '<group id>',
'SecurityGroupRules' => [
[
'SecurityGroupRule' => [
'CidrIpv4' => '<ip address>/32',
'CidrIpv6' => '',
'Description' => '<description>',
'FromPort' => -1,
'IpProtocol' => -1,
'PrefixListId' => '',
'ReferencedGroupId' => '',
'ToPort' => -1,
],
'SecurityGroupRuleId' => '<rule id>',
]
]
]);
print_r( $result );