5

Это скорее проверка на работоспособность, потому что я решил проблему, но я не убежден. Я сделал это разумно.AWS - Предположим, что IAM с использованием PowerShell на экземпляре

Проблема

У меня есть несколько экземпляров, которые были назначены СИА роли, которые позволяют им получить доступ к S3 ведро. Затем мне нужно запустить несколько сценариев PowerShell, которые будут обращаться к этому ведру S3, чтобы загрузить некоторые объекты.

Решение

Чтобы получить/установить полномочия использовать Я написал эту функцию 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 
} 

Затем, когда мне нужно запустить PowerShell командлет из модуля AWS я просто сначала вызовите эту функцию.

Однако я не могу поколебать ощущение, что что-то пропустил из модуля AWS PowerShell, который уже заботится об этом для меня.

ответ

3

Однако я не могу поколебать ощущение, что что-то пропустил из модуля AWS PowerShell, который уже заботится об этом для меня.

:) - вы будете рады услышать, что это просто работает из коробки на самом деле, то есть AWS Tools for Windows PowerShell будет опираться на AWS SDK for .NET, который обрабатывает это автоматически, смотрите также Credentials Search Order:

Когда вы запускаете команду, PowerShell Tools выполняет поиск учетных данных в следующем порядке и использует первый доступный набор.

[...]

6) Если вы используете выполнив команду на экземпляре Amazon EC2, который сконфигурирован для IAM роли, использовать EC2 экземпляра учетные данные, хранящиеся в профиле экземпляра.

Для получения дополнительной информации об использовании ролей IAM для экземпляров Amazon EC2 перейдите на страницу AWS Developer Guide for .NET.