5

Il s'agit plus d'une vérification d'intégrité car j'ai résolu le problème mais je ne suis pas convaincu que je l'ai fait de manière intelligente.AWS - Supposons que IAM utilise PowerShell sur une instance

Le problème

J'ai quelques cas qui ont été attribués un rôle IAM qui leur permettent d'accéder à un seau à S3. Je dois ensuite exécuter des scripts PowerShell qui accèderont à ce seau S3 pour télécharger certains objets.

La solution

Pour obtenir/définir les informations d'identification à utiliser que j'ai écrit cette fonction PowerShell:

function Set-MyInstanceProfileCredentials { 

    param(
     [parameter()] 
     [string] 
     $StoredCredentialsName = "MyInstanceProfileCredentials" 
    ) 

    $Uri = "http://169.254.169.254/latest/meta-data/iam/security-credentials/" 
    Write-Verbose "Retrieving instance profile from $($Uri)" 
    $Uri = "$Uri$(Invoke-RestMethod -Uri $Uri)" 
    Write-Verbose "Retrieving security credentials from $($Uri)" 
    $Response = Invoke-RestMethod -Uri $Uri 
    Set-AWSCredentials -AccessKey $Response.AccessKey -SecretKey $Response.SecretAccessKey -StoreAs $StoredCredentialsName 
    Get-AWSCredentials -StoredCredentials $StoredCredentialsName 
} 

Puis, quand je dois exécuter une applet de commande PowerShell à partir du module AWS Je viens appelez cette fonction en premier.

Cependant, je ne peux pas oublier que j'ai oublié quelque chose du module AWS PowerShell qui s'occupe déjà de cela pour moi.

Répondre

3

Cependant, je ne peux pas oublier que j'ai oublié quelque chose du module AWS PowerShell qui s'occupe déjà de cela pour moi.

:) - vous serez ravis d'apprendre que cela fonctionne tout simplement hors de la boîte en effet, à savoir le AWS Tools for Windows PowerShell est construit sur la AWS SDK for .NET, qui gère automatiquement, voir aussi Credentials Search Order:

Lorsque vous exécutez une commande, PowerShell Tools recherche les informations d'identification dans l'ordre suivant et utilise le premier jeu disponible.

[...]

6) Si vous utilisez la commande en cours d'exécution sur une instance Amazon EC2 qui est configuré pour un rôle IAM, utilisez les informations d'identification d'instance EC2 stockées dans un profil d'instance.

Pour plus d'informations sur l'utilisation des rôles IAM pour les instances Amazon EC2, rendez-vous au AWS Developer Guide for .NET.

Questions connexes