Scripts/ProtectionSource/Register-CohesityProtectionSourceAWS.ps1

function Register-CohesityProtectionSourceAWS {
  <#
        .SYNOPSIS
        Registers a new AWS protection source with the Cohesity Cluster.
        .DESCRIPTION
        Registers a new AWS protection source with the Cohesity Cluster.
        .NOTES
        Published by Cohesity
        .LINK
        https://cohesity.github.io/cohesity-powershell-module/#/README
        .EXAMPLE
        Register-CohesityProtectionSourceAWS -AccessKey "access-key" -SecretAccessKey "secret-key" -ARN "aws-arn"
    #>

  [CmdletBinding()]
  Param(
    [Parameter(Mandatory = $true)]
    [ValidateNotNullOrEmpty()]
    # Specifies the access key.
    [String]$AccessKey,
    [Parameter(Mandatory = $true)]
    [ValidateNotNullOrEmpty()]
    # Specifies the secret access key.
    [String]$SecretAccessKey,
    [Parameter(Mandatory = $true)]
    [ValidateNotNullOrEmpty()]
    # Specifies the ARN.
    [String]$ARN
  )

  Begin {
    $session = CohesityUserProfile
  }

  Process {

    $token = 'Bearer ' + $session.AccessToken.AccessToken
    $headers = @{"Authorization" = $token }
    $uri = $session.ClusterUri + '/irisservices/api/v1/public/protectionSources/register'

    $awsRegistrationParameters = @{
      awsCredentials = @{
        accessKey       = $AccessKey
        authMethod      = "kUseIAMUser"
        awsType         = "kIAMUser"
        iamRoleArn      = $ARN
        secretAccessKey = $SecretAccessKey
      }
      environment    = "kAWS"
    }

    $request = $awsRegistrationParameters | ConvertTo-Json
    $result = Invoke-RestApi -Method Post -Headers $headers -Uri $uri -Body $request
    $result
  }
}