CodeArtifact: download asset using PowerShell

95 views Asked by At

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?

1

There are 1 answers

0
Peter May On BEST ANSWER

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)