[英]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.