AWS - предположить, что IAM использует PowerShell в экземпляре
Это скорее проверка здравомыслия, потому что я решил проблему, но я не уверен, что сделал это разумно.
Эта проблема
У меня есть несколько экземпляров, которым были назначены роли IAM, которые позволяют им получить доступ к корзине 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, который уже позаботился об этом для меня.
1 ответ
Однако я не могу избавиться от ощущения, что что-то упустил из модуля AWS PowerShell, который уже позаботился об этом для меня.
:) - вам будет приятно услышать, что это действительно работает "из коробки", т.е. инструменты AWS для Windows PowerShell основаны на AWS SDK для.NET, который обрабатывает это автоматически, см. также Порядок поиска учетных данных:
При запуске команды PowerShell Tools выполняет поиск учетных данных в следующем порядке и использует первый доступный набор.
[...]
6) Если вы используете команду для экземпляра Amazon EC2, настроенного для роли IAM, используйте учетные данные экземпляра EC2, хранящиеся в профиле экземпляра.
Дополнительную информацию об использовании ролей IAM для экземпляров Amazon EC2 см. В Руководстве разработчика по AWS для.NET.