Possible bug in CodeArtifact PowerShell command Publish-CAPackageVersion

0

I successfully published a zip file to CodeArtifact using the AWS CLI:

aws codeartifact publish-package-version --domain my-domain --repository my-builds --format generic --namespace my-space --package AppName --package-version 3.53.62 --asset-content <file  on my computer> --asset-name AppName.3.53.62.zip --asset-sha256  <my file hash>

I deleted the package from CodeArtifact and tried to re-publish using PowerShell:

Publish-CAPackageVersion -Domain my-domain -Repository my-builds -Format generic -Namespace my-space -Package AppName -PackageVersion 3.53.62 -AssetContent <file on my computer> -AssetName AppName.3.53.62.zip -AssetSHA256  <my file hash>

The result indicated success, but the package in CodeArtifact had issues. It was only about 100 bytes in size when it should have been about 5MB. The package could not be successfully fetched from CodeArtifact.

aws-cli version: 2.13.4 AWS PowerShell version: 4.1.323

asked 6 months ago190 views
1 Answer
0
Accepted Answer

Can you please provide a complete example and more details to help identify what may have gone wrong? In particular:

  1. How are you providing <file on my computer> and <my file hash>?
  2. "The package could not be successfully fetched from CodeArtifact." - What do you mean by this? A smaller than expected file came back, or you saw an error?

I was just able to test this successfully. One possibility is that you provided a file path for the AssetContent parameter, expecting similar behavior as the aws cli. If you provided a path string (like 'C:\some-file.txt'), then the content of that string is what will be saved as the asset file, not the contents of the file at that path. That could explain the small asset size. Here is a working example that provides a FileInfo object to AssetContent (string, string[], System.IO.FileInfo or System.IO.Stream are acceptable types per these docs).

$AssetFilePath = 'C:\some-file.txt'
$AssetFile = ([System.IO.FileInfo]$AssetFilePath)
$AssetSHA256 = (Get-FileHash -Path $AssetFile -Algorithm SHA256).Hash

Publish-CAPackageVersion
    -Domain test-domain
    -Repository test-repository
    -Format generic
    -Namespace test-ns
    -Package test-generic-package
    -PackageVersion 1.0.0
    -AssetContent $AssetFile
    -AssetName some-file.txt
    -AssetSHA256 $AssetSHA256
answered 6 months ago
profile picture
EXPERT
reviewed a month ago
  • That did the trick. Thank you so much Brian! I missed that the asset content had to be of type FileInfo.

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions