

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搭配一般套件使用 CodeArtifact
<a name="using-generic"></a>

這些主題說明如何使用 AWS CodeArtifact 取用和發佈一般套件。

**Topics**
+ [一般套件概觀](generic-packages-overview.md)
+ [一般套件支援的命令](generic-packages-supported-commands.md)
+ [發佈和使用一般套件](publishing-using-generic-packages.md)

# 一般套件概觀
<a name="generic-packages-overview"></a>

您可以使用`generic`套件格式上傳任何類型的檔案，以在 CodeArtifact 儲存庫中建立套件。一般套件不會與任何特定的程式設計語言、檔案類型或套件管理生態系統相關聯。這對於儲存和版本控制任意建置成品非常有用，例如應用程式安裝程式、機器學習模型、組態檔案等。

一般套件包含套件名稱、命名空間、版本，以及一或多個資產 （或 檔案）。通用套件可與單一 CodeArtifact 儲存庫中其他格式的套件一起存在。

您可以使用 AWS CLI 或 SDK 來使用一般套件。如需使用一般套件的完整 AWS CLI 命令清單，請參閱 [一般套件支援的命令](generic-packages-supported-commands.md)。

## 一般套件限制條件
<a name="generic-packages-constraints"></a>
+ 永遠不會從上游儲存庫擷取它們。它們只能從發佈到其中的儲存庫取得。
+ 他們無法宣告要從 [ListPackageVersionDependencies](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListPackageVersionDependencies.html) 傳回或顯示在 中的相依性 AWS 管理主控台 。
+ 他們可以存放 README 和 LICENSE 檔案，但 CodeArtifact 無法解譯這些檔案。這些檔案中的資訊不會從 [GetPackageVersionReadme](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_GetPackageVersionReadme.html) 或 [DescribePackageVersion](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_DescribePackageVersion.html) 傳回，也不會出現在 中 AWS 管理主控台。
+ 與 CodeArtifact 中的所有套件一樣，資產大小和每個套件的資產數量都有限制。如需 CodeArtifact 中限制和配額的詳細資訊，請參閱 [配額 in AWS CodeArtifact](service-limits.md)。
+ 其中包含的資產名稱必須遵循下列規則：
  + 資產名稱可以使用 Unicode 字母和數字。具體而言，允許這些 Unicode 字元類別：小寫字母 (`Ll`)、修飾詞 (`Lm`)、其他字母 (`Lo`)、大寫字母 (`Lt`)、大寫字母 (`Lu`)、字母編號 (`Nl`) 和小數位數 ()`Nd`。
  + 允許使用以下特殊字元：`~!@^&()-_+[]{};,.`
  + 資產無法命名為 `.`或 `..`
  + 空格是唯一允許的空格字元。資產名稱不能以空格字元開頭或結尾，或包含連續空格。

# 一般套件支援的命令
<a name="generic-packages-supported-commands"></a>

您可以使用 AWS CLI 或 SDK 來使用一般套件。下列 CodeArtifact 命令適用於一般套件：
+ [copy-package-versions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codeartifact/copy-package-versions.html) （請參閱 [在儲存庫之間複製套件](copy-package.md))
+ [delete-package](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codeartifact/delete-package.html) （請參閱 [刪除套件 (AWS CLI)](delete-package.md#delete-package-CLI))
+ [delete-package-versions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codeartifact/delete-package-versions.html) （請參閱 [刪除套件版本 (AWS CLI)](delete-package.md#delete-package-version-CLI))
+ [describe-package](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codeartifact/describe-package.html) 
+ [describe-package-version](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codeartifact/describe-package-version.html) （請參閱 [檢視和更新套件版本詳細資訊和相依性](describe-package-version.md))
+ [dispose-package-versions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codeartifact/dispose-package-versions.html) （請參閱 [處置套件版本](update-package-version-status.md#dispose-package-versions))
+ [get-package-version-asset](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codeartifact/get-package-version-asset.html) （請參閱 [下載套件版本資產](download-assets.md))
+ [list-package-version-assets](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codeartifact/list-package-version-assets.html) （請參閱 [列出套件版本資產](list-assets.md))
+ [list-package-versions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codeartifact/list-package-versions.html) （請參閱 [列出套件版本](list-packages-versions.md))
+ [list-packages](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codeartifact/list-packages.html) （請參閱 [列出套件名稱](list-packages.md))
+ [publish-package-version](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codeartifact/publish-package-version.html) （請參閱 [發佈一般套件](publishing-using-generic-packages.md#publishing-generic-packages))
+ [put-package-origin-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codeartifact/put-package-origin-configuration.html) （請參閱 [編輯套件原始伺服器控制項](package-origin-controls.md))
**注意**  
您可以使用`publish`原始伺服器控制設定，允許或封鎖在儲存庫中發佈一般套件名稱。不過，`upstream`設定不適用於一般套件，因為無法從上游儲存庫擷取這些套件。
+ [update-package-versions-status](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codeartifact/update-package-versions-status.html) （請參閱 [更新套件版本狀態](update-package-version-status.md#updating-pv-status))

# 發佈和使用一般套件
<a name="publishing-using-generic-packages"></a>

若要發佈一般套件版本及其相關資產，請使用 `publish-package-version`命令。您可以使用 `list-package-version-asset`命令列出一般套件的資產，並使用 下載。 `get-package-version-asset`下列主題包含step-by-step說明。

## 發佈一般套件
<a name="publishing-generic-packages"></a>

一般套件包含套件名稱、命名空間、版本，以及一或多個資產 （或 檔案）。本主題示範如何使用命名空間 `my-package`、 版本 發佈名為 `my-ns`的套件`1.0.0`，並包含一個名為 的資產`asset.tar.gz`。

**先決條件：**
+  AWS Command Line Interface 使用 CodeArtifact 設定 （請參閱 [使用 AWS CodeArtifact 設定](get-set-up-for-codeartifact.md))
+ 擁有 CodeArtifact 網域和儲存庫 （請參閱 [開始使用 AWS CLI](getting-started-cli.md))

**發佈一般套件**

1. 使用下列命令，為您要上傳至套件版本的每個檔案產生 SHA256 雜湊，並將 值放在 環境變數中。此值會用作完整性檢查，以確認檔案內容在原始傳送之後並未變更。

------
#### [ Linux ]

   ```
   export ASSET_SHA256=$(sha256sum asset.tar.gz | awk '{print $1;}')
   ```

------
#### [ macOS ]

   ```
   export ASSET_SHA256=$(shasum -a 256 asset.tar.gz | awk '{print $1;}')
   ```

------
#### [ Windows ]

   ```
   for /f "tokens=*" %G IN ('certUtil -hashfile asset.tar.gz SHA256 ^| findstr /v "hash"') DO SET "ASSET_SHA256=%G"
   ```

------

1. 呼叫 `publish-package-version` 上傳資產並建立新的套件版本。
**注意**  
 如果您的套件包含多個資產，您可以呼叫`publish-package-version`一次，讓每個資產上傳。包含每個對 呼叫的`--unfinished`引數`publish-package-version`，上傳最終資產時除外。省略 `--unfinished`會將套件版本的狀態設定為 `Published`，並防止其他資產上傳到其中。  
 或者，`--unfinished`針對每次對 的呼叫包含 `publish-package-version`，然後使用 `Published``update-package-versions-status`命令將套件版本的狀態設定為 。

------
#### [ Linux/macOS ]

   ```
   aws codeartifact publish-package-version --domain my_domain --repository my_repo \
         --format generic --namespace my-ns --package my-package --package-version 1.0.0 \
         --asset-content asset.tar.gz --asset-name asset.tar.gz \
         --asset-sha256 $ASSET_SHA256
   ```

------
#### [ Windows ]

   ```
   aws codeartifact publish-package-version --domain my_domain --repository my_repo ^
         --format generic --namespace my-ns --package my-package --package-version 1.0.0 ^
         --asset-content asset.tar.gz --asset-name asset.tar.gz ^  
         --asset-sha256 %ASSET_SHA256%
   ```

------

   以下將顯示輸出。

   ```
   {
       "format": "generic",
       "namespace": "my-ns",
       "package": "my-package",
       "version": "1.0.0",
       "versionRevision": "REVISION-SAMPLE-1-C7F4S5E9B772FC",
       "status": "Published",
       "asset": {
           "name": "asset.tar.gz",
           "size": 11,
           "hashes": {
               "MD5": "41bba98d5b9219c43089eEXAMPLE-MD5",
               "SHA-1": "69b215c25dd4cda1d997a786ec6EXAMPLE-SHA-1",
               "SHA-256": "43f24850b7b7b7d79c5fa652418518fbdf427e602b1edabe6EXAMPLE-SHA-256",
               "SHA-512": "3947382ac2c180ee3f2aba4f8788241527c8db9dfe9f4b039abe9fc560aaf5a1fced7bd1e80a0dca9ce320d95f0864e0dec3ac4f2f7b2b2cbEXAMPLE-SHA-512"
           }
       }
   }
   ```

## 列出一般套件資產
<a name="listing-generic-package-assets"></a>

若要列出包含在一般套件中的資產，請使用 `list-package-version-assets`命令。如需詳細資訊，請參閱[列出套件版本資產](list-assets.md)。

下列範例列出套件 `1.0.0`版本的資產`my-package`。

**列出套件版本資產**
+ 呼叫 `list-package-version-assets` 以列出包含在一般套件中的資產。

------
#### [ Linux/macOS ]

  ```
  aws codeartifact list-package-version-assets --domain my_domain \
    --repository my_repo --format generic --namespace my-ns \
    --package my-package --package-version 1.0.0
  ```

------
#### [ Windows ]

  ```
  aws codeartifact list-package-version-assets --domain my_domain ^
    --repository my_repo --format generic --namespace my-ns ^
    --package my-package --package-version 1.0.0
  ```

------

  以下將顯示輸出。

  ```
  {
      "assets": [
          {
              "name": "asset.tar.gz",
              "size": 11,
              "hashes": {
                  "MD5": "41bba98d5b9219c43089eEXAMPLE-MD5",
                  "SHA-1": "69b215c25dd4cda1d997a786ec6EXAMPLE-SHA-1",
                  "SHA-256": "43f24850b7b7b7d79c5fa652418518fbdf427e602b1edabe6EXAMPLE-SHA-256",
                  "SHA-512": "3947382ac2c180ee3f2aba4f8788241527c8db9dfe9f4b039abe9fc560aaf5a1fced7bd1e80a0dca9ce320d95f0864e0dec3ac4f2f7b2b2cbEXAMPLE-SHA-512"
              }
          }
      ],
      "package": "my-package",
      "format": "generic",
      "namespace": "my-ns",
      "version": "1.0.0",
      "versionRevision": "REVISION-SAMPLE-1-C7F4S5E9B772FC"
  }
  ```

## 下載一般套件資產
<a name="downloading-generic-package-assets"></a>

若要從一般套件下載資產，請使用 `get-package-version-asset`命令。如需詳細資訊，請參閱[下載套件版本資產](download-assets.md)。

下列範例會將資產`asset.tar.gz`從 套件`1.0.0`的版本下載`my-package`至目前工作目錄，至名為 的檔案`asset.tar.gz`。

**下載套件版本資產**
+ 呼叫 從一般套件`get-package-version-asset`下載資產。

------
#### [ Linux/macOS ]

  ```
  aws codeartifact get-package-version-asset --domain my_domain \
    --repository my_repo --format generic --namespace my-ns --package my-package \
    --package-version 1.0.0 --asset asset.tar.gz \ 
    asset.tar.gz
  ```

------
#### [ Windows ]

  ```
  aws codeartifact get-package-version-asset --domain my_domain ^
    --repository my_repo --format generic --namespace my-ns --package my-package ^
    --package-version 1.0.0 --asset asset.tar.gz ^
    asset.tar.gz
  ```

------

  以下將顯示輸出。

  ```
  {
      "assetName": "asset.tar.gz",
      "packageVersion": "1.0.0",
      "packageVersionRevision": "REVISION-SAMPLE-1-C7F4S5E9B772FC"
  }
  ```