5

私は問題を解決したので、これはより健全なチェックですが、賢明な方法でそれを行ったとは確信していません。

問題

S3 バケットへのアクセスを許可する IAM ロールが割り当てられたインスタンスがいくつかあります。次に、その S3 バケットにアクセスしていくつかのオブジェクトをダウンロードする PowerShell スクリプトを実行する必要があります。

ソリューション

使用する資格情報を取得/設定するために、次の 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
}

次に、AWS モジュールから PowerShell コマンドレットを実行する必要がある場合は、最初にこの関数を呼び出します。

しかし、AWS PowerShell モジュールがすでにこれを処理してくれているので、何かを見逃しているという感覚を揺るがすことはできません。

4

1 に答える 1

3

しかし、AWS PowerShell モジュールがすでにこれを処理してくれているので、何かを見逃しているという感覚を揺るがすことはできません。

:) - これが実際に箱から出してすぐに機能することを聞いて喜んでいるでしょう。つまり、AWS Tools for Windows PowerShellはAWS SDK for .NETに基づいて構築されており、これはこれを自動的に処理します。Credentials Search Orderも参照してください。

コマンドを実行すると、PowerShell ツールは次の順序で資格情報を検索し、最初に使用可能なセットを使用します。

[...]

6) IAM ロール用に設定された Amazon EC2 インスタンスでコマンドを実行している場合は、インスタンス プロファイルに保存されている EC2 インスタンス認証情報を使用します。

Amazon EC2 インスタンスで IAM ロールを使用する方法の詳細については、AWS 開発者ガイド for .NET を参照してください。

于 2014-05-22T14:31:26.400 に答える