2017-09-09 3 views
0

Wie hole ich alle Datensätze, wenn das Ergebnis paginiert ist, mit dem AWS PHP SDK v3? Ich habe den folgenden Code:Paging-Liste Cognito-Identitäten in AWS PHP SDK v3

require_once 'vendor/autoload.php'; 

$cognitoIdentityClient = new Aws\CognitoIdentity\CognitoIdentityClient([ 
    'region' => 'eu-west-1', 
    'version' => '2014-06-30', 
    'credentials' => [ 
     'key' => '**************', 
     'secret' => '***************', 
    ], 
]); 

$identities = $cognitoIdentityClient->getPaginator('ListIdentities', [ 
    'IdentityPoolId' => 'eu-west-1:****************************', 
]); 

, die aussieht wie es sollte funktionieren, sondern erzeugt den Fehler:

Fatal error: Uncaught UnexpectedValueException: There is no ListIdentities paginator defined for the cognito-identity service. in /path/to/vendor/aws/aws-sdk-php/src/Api/Service.php:363 
Stack trace: 
#0 /path/to/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(23): Aws\Api\Service->getPaginatorConfig('ListIdentities') 
#1 /path/to/report.php(24): Aws\AwsClient->getIterator('ListIdentities', Array) 
#2 {main} 
    thrown in /path/to/vendor/aws/aws-sdk-php/src/Api/Service.php on line 363 

Die getPaginator Methode existiert, aber die Datei data/cognito-identity/2014-06-30/paginators-1.json.php ist leer, also keine Paginatoren umgesetzt werden. Ich sehe NextToken in der Antwort, aber nicht verstehen, das Muster nahtlos weitere Ergebnisse laden

Antwort

0

ich es so gelöst (do (...) {} while (...)?):

$identities = []; 
$i = $cognitoIdentityClient->listIdentities([ 
    'IdentityPoolId' => IDENTITYPOOLID, 
    'MaxResults' => 60, 
]); 
$identities = array_merge($identities, $i->get('Identities')); 
while ($nextToken = $i->get('NextToken')) { 
    $i = $cognitoIdentityClient->listIdentities([ 
     'IdentityPoolId' => IDENTITYPOOLID, 
     'MaxResults' => 60, 
     'NextToken' => $nextToken, 
    ]); 
    $identities = array_merge($identities, $i->get('Identities')); 
} 
Verwandte Themen