AWS PowerShell Scripts
AWS-Connector
Ensure PowerShell modules are saved to the correct directory. Example: %UserProfile%\Documents\PowerShell\Modules\Custom\AWS-Connector.psm1
- Modify line 12 to include the correct MFA ARN for your AWS IAM user.
- Modify line 24 and 42 to replace AWS_ACCOUNT_IDand/orREGIONwith the appropriate values for your ECR registry.
Assumes you've already properly configured the CLI and set your credentials. 
This module installs PSWriteColor if not previously installed.
| AWS-Connector.psm1 | 
|---|
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 | if (-not (Get-Module PSWriteColor -ListAvailable)) {
    Install-Module PSWriteColor -Scope CurrentUser -Force
}
Import-Module PSWriteColor
# Connect to AWS using MFA. The connection will be valid for the current PowerShell session only.
function Connect-AWS {
    Write-Output "== AWS MFA CLI Login ==`r`n"
    do {
        $MFAcode = Read-Host "MFA Code "
    } while ($MFAcode.Length -ne 6)
    $MFAarn = "arn:aws:iam::123456789876:mfa/name@example.com"
    $sessionInfo = aws sts get-session-token --serial-number $($MFAarn) --token-code $($MFAcode) | ConvertFrom-Json
    Write-Color -T "Warning:`r`nThis login is only valid in the current session!`r`n" -C Yellow -ShowTime
    Write-Color -T "Access Key: ","$($sessionInfo.Credentials.AccessKeyId)" -C White,Green
    Write-Color -T "Secret Key: ","$($sessionInfo.Credentials.SecretAccessKey)" -C White,Green
    Write-Color -T "Session Token: ","$($sessionInfo.Credentials.SessionToken)`r`n" -C White,Green
    $Env:AWS_ACCESS_KEY_ID="$($sessionInfo.Credentials.AccessKeyId)"
    $Env:AWS_SECRET_ACCESS_KEY="$($sessionInfo.Credentials.SecretAccessKey)"
    $Env:AWS_SESSION_TOKEN="$($sessionInfo.Credentials.SessionToken)"
    $Env:AWS_DEFAULT_REGION="XX-XXXX-X"
    aws sts get-caller-identity
}
# Identify which AWS account and IAM user you are currently authenticated as.
function Get-AWSIdent {
    aws sts get-caller-identity
    if (($null -eq $Env:AWS_ACCESS_KEY_ID) -or ($null -eq $Env:AWS_SECRET_ACCESS_KEY) -or ($null -eq $Env:AWS_SESSION_TOKEN)) {
        Write-Color -T "Environment variables are not set!" -C Red
        Write-Color -T "Use ","'Connect-AWS' ","to authenticate." -C White,Blue,White
        break;
    }
}
# Connect to AWS ECR to enable "docker push" commands. You must use "Connect-AWS" first.
function Register-ECR {
    Write-Output "== AWS ECR Authentication ==`r`n"
    aws ecr get-login-password --region XX-XXXX-X | docker login --username AWS --password-stdin AWS_ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com
}
 | 
Functions
- Connect-AWS
- 
Prompts for your 6-digit TOTP value and uses the AWS CLI to authenticate with MFA. The temporary Access Key ID,Secret Access Key, andSession Tokenare displayed and set as local environment variables, enabling AWS CLI command execution without having to pass a profile.
 
- Get-AWSIdent
- 
Quikly calls aws sts get-caller-identityto report which credentials you've authenticated with, or reports that you aren't authenticated.
 
- Register-ECR
- 
Enables use of AWS ECR via Docker to allow docker pushcommands.