5

Questo è più un controllo di integrità perché ho risolto il problema, ma non sono convinto di averlo fatto in modo intelligente.AWS: si supponga che IAM utilizzi PowerShell su un'istanza

Il problema

devo alcuni casi che è stato assegnato un ruolo IAM che permettono loro di accedere un secchio di S3. Devo quindi eseguire alcuni script PowerShell che accederanno al bucket S3 per scaricare alcuni oggetti.

La soluzione

Per ricevere/impostare le credenziali da utilizzare che ho scritto questa funzione 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 
} 

Poi, quando ho bisogno di eseguire un cmdlet di PowerShell dal modulo AWS ho appena chiama prima questa funzione

Tuttavia non riesco a scuotere la sensazione che mi sia sfuggito qualcosa dal modulo AWS PowerShell che si sta già occupando di questo per me.

risposta

3

Tuttavia non posso scuotere la sensazione che ho perso qualcosa dal modulo AWS PowerShell che sta già prendendo cura di questo per me.

:) - sarete felici di sapere che questo funziona solo fuori dalla scatola in effetti, vale a dire il AWS Tools for Windows PowerShell si baserà sul AWS SDK for .NET, che sta gestendo automaticamente, vedi anche Credentials Search Order:

Quando si esegue un comando, PowerShell Tools ricerca le credenziali nell'ordine seguente e utilizza il primo set disponibile.

[...]

6) Se si utilizza l'esecuzione del comando su un'istanza Amazon EC2 configurato per un ruolo IAM, utilizzare le credenziali di istanza EC2 memorizzati in un profilo di istanza.

Per ulteriori informazioni sull'utilizzo dei ruoli IAM per le istanze Amazon EC2, andare a AWS Developer Guide for .NET.