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

已提問 6 個月前檢視次數 204 次
1 個回答
0
已接受的答案

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
已回答 6 個月前
profile picture
專家
已審閱 1 個月前
  • That did the trick. Thank you so much Brian! I missed that the asset content had to be of type FileInfo.

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南