Amazon SDK – Informations d’identification temporaires et AssumeRoleRequest

J’utilise la version 1.11.79 du kit de développement logiciel (SDK) Amazon Java. J’ai un travail qui crée un instantané de tous mes volumes de serveur. Avec des mises en sumil, etc. (pour respecter les directives d’Amazon SDK), cela a déjà pris plus d’une heure.

J’utilise le code suivant pour construire mon AmazonEC2Client à l’aide d’informations d’identification temporaires

AssumeRoleRequest assumeRequest = new AssumeRoleRequest().withRoleArn(roleARN).withExternalId(externalId).withDurationSeconds(3600) .withRoleSessionName(roleSessionName); AssumeRoleResult assumeResult = amazonSecurityTokenServiceClient.assumeRole(assumeRequest); Credentials credentials = assumeResult.getCredentials(); temporaryCredentials = new BasicSessionCredentials(credentials.getAccessKeyId(), credentials.getSecretAccessKey(), credentials.getSessionToken()); CustomAmazonCredentialsProviderVO customAmazonCredentialsProviderVO = new CustomAmazonCredentialsProviderVO(); customAmazonCredentialsProviderVO.setCredentials(temporaryCredentials); LOG.debug("customAmazonCredentialsProviderVO:{}", customAmazonCredentialsProviderVO); amazonEC2Client = new AmazonEC2Client(customAmazonCredentialsProviderVO, amazonClientConfiguration); 

Le problème vient de AssumeRoleRequest et de la méthode withDurationSeconds – le maximum que vous pouvez définir est de 3600 secondes (1 heure).

Je dois pouvoir définir ceci pour dire 2 ou 3 heures

Est-ce que quelqu’un sait s’il existe un autre moyen de créer des informations d’identification temporaires qui dureront plus d’une heure?

Merci Damien

Vous pouvez utiliser GetSessionToken , qui accepte la valeur DurationSeconds aussi élevée que 129600, à condition que vous soyez un utilisateur IAM.

De la docs:

Les informations d’identification créées par les utilisateurs IAM sont valides pour la durée spécifiée, de 900 secondes (15 minutes) à 129600 secondes (36 heures), avec une valeur par défaut de 43200 secondes (12 heures).

En supposant que vous MaxSessionDuration le rôle que le travail assume, vous pouvez simplement définir la propriété MaxSessionDuration . De la documentation (soulignez le mien)

Durée maximale de la session (en secondes) pour le rôle spécifié. Toute personne utilisant l’API ou la CLI AWS pour assumer le rôle peut spécifier la durée à l’aide du paramètre facultatif de l’API DurationSeconds ou du paramètre CLI de la durée en secondes. Valeur minimale de 3600. Valeur maximale de 43200.

L’augmentation de cette limite devrait vous permettre d’utiliser une valeur> 3600 dans votre AssumeRoleRequest .

Je viens d’essayer d’utiliser le kit AWS SDK for .NET et cela semble fonctionner correctement.