aws-powershellaws-codeartifact

CodeArtifact: download asset using PowerShell


I am trying to download an asset from CodeArtifact, in this case it is a zip file.

I know how to do it using AWS CLI but we are a PowerShell shop so I want to use the AWSPowerShell library function.

This is what I have:

Get-CAPackageVersionAsset -Asset MyAsset.3.55.98.zip -Domain mydomain -DomainOwner <aws_account_id> -Format generic -Namespace mynamespace -Package MyAsset -PackageVersion 3.55.98 -Repository myrepo

This returns an object of type Amazon.CodeArtifact.Model.GetPackageVersionAssetResponse. That object has a property Asset of type Amazon.Runtime.Internal.Util.CachingWrapperStream.

I have been unable to figure out how to use the returned object to actually download the file.

The AWS CLI equivalent command (aws codeartifact get-package-version-asset) has an argument for download path. As far as I can tell, the PowerShell command has no such thing.

How do I actually download the asset using PowerShell?


Solution

  • I played around with the idea of downloading from the stream and got this to work:

    $buildPackage = Get-CAPackageVersionAsset -Asset MyAsset.3.55.98.zip -Domain mydomain -DomainOwner <aws_account_id> -Format generic -Namespace mynamespace -Package MyAsset -PackageVersion 3.55.98 -Repository myrepo
    
    $ms = New-Object System.IO.MemoryStream
    $buildPackage.Asset.CopyTo($ms)
    $bytes = $ms.ToArray()
    [IO.File]::WriteAllBytes($DownloadPath, $bytes)