To jest bardziej sprawdzian poczytalności, ponieważ rozwiązałem problem, ale nie jestem przekonany, że zrobiłem to w inteligentny sposób.AWS - Załóżmy, że IAM używa PowerShell na instancji
Problem
Mam kilka wystąpień, które zostały przypisane IAM role, które pozwalają im uzyskać dostęp do wiadra S3. Następnie należy uruchomić niektóre skrypty PowerShell, które będą miały dostęp do tego zasobnika S3, aby pobrać niektóre obiekty.
Rozwiązanie
get/set poświadczenia używać Pisałem tę funkcję 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
}
Wtedy kiedy trzeba uruchomić apletu polecenia PowerShell z modułu AWS Właśnie najpierw wywołaj tę funkcję.
Jednak nie mogę otrząsnąć się z poczucia, że coś przeoczyłem z modułu AWS PowerShell, który już się o to troszczy.