2017-09-21 28 views
3

私はAWS SDK PHP V3を使用しています。私は次のコードAWS PHP SDKフィルタAws Resultオブジェクト

$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の結果を取得する方法

または私はデータをフィルタリングする配列関数を使用する必要がありますか?下の結果を返しますか。

Reference Link

答えて

2

ah..youはJMESPathについて尋ねています。 あなたはあなたはそれが現在のAPIとはできませんように。これは思えるJMESPath here

+0

はいこれは動作しますが、$ result = $ client-> getAccountPasswordPolicy([])でフィルタリングする方法です。 – niteshd22

+0

その方法にフィルタリング基準はありません –

+0

この[リンク](http://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/basic-usage.html)を参照してください。結果からより宣言的にデータを抽出することができます。 – niteshd22

1

の詳細を読むことができ

$result = $client->getAccountPasswordPolicy([]); 
$data = $result->search('PasswordPolicy.RequireUppercaseCharacters'); 

でやろうとしているものである達成することができます。メソッドのパラメータが必要な特定の項目(配列のため)を示すために開いているように見えるかもしれませんが、ドキュメントのどこにでもそのようなことがあるというシグナルはありません。

getAccountPasswordPolicy()documentationを、たとえばListPolicies()と比較してください。後者は明示的に述べている:これとは対照的に

You can filter the list of policies that is returned using the optional OnlyAttached, Scope, and PathPrefix parameters.

getAccountPasswordPolicy()のためのドキュメントは、このの言及をしません。パラメータについては言及していません。パラメータは、メソッドシグネチャにはと記載されていますが、これはAPIの将来のバージョンで発生する可能性があります。

CLI documentationには、いずれのパラメータもありません。このため、現時点では実行できないようです。

ノー成功を収めただけの場合はいくつかのテスト、なかった

:だから

$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 = $client->getAccountPasswordPolicy(["RequireUppercaseCharacters"]); 

戻り

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Found 1 error while validating the input provided for the GetAccountPasswordPolicy operation: must be an associative array. Found array(2)' in /Applications/MAMP/htdocs/awss3/vendor/aws/aws-sdk-php/src/Api/Validator.php:65

と連想配列を指定するには、何かをフィルタリングしません。今のところ、配列のキーをいつでも通り抜けることができます。

$result["PasswordPolicy"]["RequireUppercaseCharacters"]; 
+0

doucumentationには、「結果オブジェクトには、より宣言的に結果からデータを抽出できるsearch()メソッドが含まれていますが、これを行う方法がわかりません」と記載されています。 [link](http://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/basic-usage.html) – niteshd22

+0

CLIを使用すると、実際にパラメータを渡して特定の結果を取得できます。この場合、次のコマンドは、RequireLowercaseCharacters 'aws iam get-account-password-policy --profile default --region ap-south-1 --output json --query 'PasswordPolicy.RequireLowercaseCharacters'のみを返します。 – niteshd22