[英]AWS PHP SDK Filter Aws\Result Object
我使用的是AWS SDK PHP V3。 如果我运行以下代码
$result = $client->getAccountPasswordPolicy([]);
$result = $result->toArray();
它返回下面的结果
Array
(
[PasswordPolicy] => Array
(
[MinimumPasswordLength] => 6
[RequireSymbols] =>
[RequireNumbers] =>
[RequireUppercaseCharacters] => 1
[RequireLowercaseCharacters] =>
[AllowUsersToChangePassword] =>
[ExpirePasswords] =>
)
[@metadata] => Array
(
[statusCode] => 200
[effectiveUri] => https://iam.amazonaws.com
[headers] => Array
(
[x-amzn-requestid] => 437f79e9-9ee0-11e7-8a82-47e702eaf8eb
[content-type] => text/xml
[content-length] => 740
[date] => Thu, 21 Sep 2017 15:19:29 GMT
[connection] => close
)
[transferStats] => Array
(
[http] => Array
(
[0] => Array
(
)
)
)
)
)
如何使用AWS SDK获取RequireUppercaseCharacters或RequireLowercaseCharacters的结果,还是必须使用数组函数来过滤数据?
啊..你在问JMESPath。 你可以实现你想做的事情
$result = $client->getAccountPasswordPolicy([]);
$data = $result->search('PasswordPolicy.RequireUppercaseCharacters');
你可以在这里阅读更多关于JMESPath的内容
对于当前的API来说,这似乎是不可能的。 虽然看起来方法参数可能打开以指示您需要哪些特定项目(因为它是一个数组),但在文档中的任何地方都没有任何信号。
将getAccountPasswordPolicy()
的文档与ListPolicies()
。 后者明确说:
您可以使用可选的OnlyAttached,Scope和PathPrefix参数筛选返回的策略列表。
相比之下, getAccountPasswordPolicy()
的文档没有提到这一点。 甚至没有提到参数。 该参数在方法签名,这让我觉得这个可能出现的API的未来版本但是提及。
CLI文档也没有任何类似的参数,所以这肯定是你目前无法做的事情。
我做了一些测试,以防万一,没有成功:
$result = $client->getAccountPasswordPolicy(["RequireUppercaseCharacters"]);
回报
致命错误:在验证为GetAccountPasswordPolicy操作提供的输入时,消息'发现1错误'的未捕获异常'InvalidArgumentException':必须是关联数组。 在/Applications/MAMP/htdocs/awss3/vendor/aws/aws-sdk-php/src/Api/Validator.php:65中找到数组(2)'
并且指定关联数组不会过滤任何内容:
$result = $client->getAccountPasswordPolicy(["PasswordPolicy" => ["RequireUppercaseCharacters"]]);
Aws\Result Object
(
[data:Aws\Result:private] => Array
(
[PasswordPolicy] => Array
(
[MinimumPasswordLength] => 6
[RequireSymbols] =>
[RequireNumbers] =>
[RequireUppercaseCharacters] => 1
[RequireLowercaseCharacters] =>
[AllowUsersToChangePassword] => 1
[ExpirePasswords] =>
[HardExpiry] =>
)
[@metadata] => Array
(
[statusCode] => 200
[effectiveUri] => https://iam.amazonaws.com
[headers] => Array
(
// redacted
)
[transferStats] => Array
(
[http] => Array
(
[0] => Array
(
)
)
)
)
)
)
所以,你现在唯一的选择就是一如既往地通过数组的键:
$result["PasswordPolicy"]["RequireUppercaseCharacters"];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.