

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Bekerja dengan paket di CodeArtifact
<a name="packages"></a>

Topik berikut menunjukkan cara melakukan tindakan pada paket menggunakan CodeArtifact CLI dan API.

**Topics**
+ [Gambaran umum paket](packages-overview.md)
+ [Mencantumkan nama paket](list-packages.md)
+ [Mencantumkan versi paket](list-packages-versions.md)
+ [Mencantumkan aset versi paket](list-assets.md)
+ [Mengunduh aset versi paket](download-assets.md)
+ [Menyalin paket antar-repositori](copy-package.md)
+ [Hapus versi paket atau paket](delete-package.md)
+ [Melihat dan memperbarui detail versi paket dan dependensi](describe-package-version.md)
+ [Memperbarui status versi paket](update-package-version-status.md)
+ [Mengedit kontrol asal paket](package-origin-controls.md)

# Gambaran umum paket
<a name="packages-overview"></a>

*Paket* adalah bundel perangkat lunak dan metadata yang diperlukan untuk menyelesaikan dependensi dan menginstal perangkat lunak. Dalam CodeArtifact, paket terdiri dari nama paket, [namespace](codeartifact-concepts.md#welcome-concepts-package-namespace) opsional seperti `@types` in`@types/node`, satu set versi paket, dan metadata tingkat paket seperti tag npm.

**Contents**
+ [Format paket yang didukung](#supported-package-formats)
+ [Publikasi paket](#package-publishing)
  + [Izin publikasi](#package-publishing-permissions)
  + [Penimpaan aset paket](#package-publishing-overwrite-assets)
  + [Paket privat dan repositori publik](#package-publishing-upstreams-direct)
  + [Memublikasikan versi paket dengan patch](#package-publishing-patched-versions)
  + [Batas ukuran aset untuk penerbitan](#package-publishing-asset-size-limits)
  + [Latensi penerbitan](#package-publishing-latency)
+ [Status versi paket](#package-version-status)
+ [Nama paket, versi paket, dan normalisasi nama aset](#package-name-normalization)

## Format paket yang didukung
<a name="supported-package-formats"></a>

AWS CodeArtifact [[mendukung format [paket Cargo](using-cargo.md), [generik](using-generic.md), [Maven](using-maven.md), [npm](using-npm.md),, [NuGet](using-nuget.md)[PyPi, Ruby, Swift](using-python.md).](using-swift.md)](using-ruby.md)

## Publikasi paket
<a name="package-publishing"></a>

 Anda dapat mempublikasikan versi baru dari [format paket apa pun yang didukung](#supported-package-formats) ke CodeArtifact repositori menggunakan alat seperti`npm`,,,`twine`, `Maven` `Gradle``nuget`, dan. `dotnet`

### Izin publikasi
<a name="package-publishing-permissions"></a>

Pengguna atau peran AWS Identity and Access Management (IAM) Anda harus memiliki izin untuk mempublikasikan ke repositori tujuan. Izin berikut diperlukan untuk mempublikasikan paket:
+ **Kargo:** `codeartifact:PublishPackageVersion`
+ **generik:** `codeartifact:PublishPackageVersion`
+ **Maven:** `codeartifact:PublishPackageVersion` dan `codeartifact:PutPackageMetadata`
+ **npm:** `codeartifact:PublishPackageVersion`
+ **NuGet:** `codeartifact:PublishPackageVersion` dan `codeartifact:ReadFromRepository`
+ **Python:** `codeartifact:PublishPackageVersion`
+ **Ruby:** `codeartifact:PublishPackageVersion`
+ **Cepat:** `codeartifact:PublishPackageVersion`

Dalam daftar izin sebelumnya, kebijakan IAM Anda harus menentukan `package` sumber daya untuk izin dan. `codeartifact:PublishPackageVersion` `codeartifact:PutPackageMetadata` Itu juga harus menentukan `repository` sumber daya untuk `codeartifact:ReadFromRepository` izin.

Untuk informasi selengkapnya tentang izin di CodeArtifact, lihat[AWS CodeArtifact referensi izin](auth-and-access-control-permissions-reference.md).

### Penimpaan aset paket
<a name="package-publishing-overwrite-assets"></a>

 Anda tidak dapat memublikasikan kembali aset paket yang sudah ada dengan konten yang berbeda. Misalnya, anggaplah Anda sudah memublikasikan paket Maven dengan aset JAR `mypackage-1.0.jar`. Anda hanya dapat mempublikasikan aset itu lagi jika checksum aset lama dan baru identik. Untuk memublikasikan aset yang sama dengan konten baru, hapus versi paket menggunakan perintah **delete-package-versions** terlebih dahulu. Mencoba untuk memublikasikan ulang nama aset yang sama dengan konten yang berbeda akan mengakibatkan kesalahan konflik HTTP 409. 

 Untuk format paket yang mendukung beberapa aset (generik, PyPI, dan Maven), Anda dapat menambahkan aset baru dengan nama berbeda ke versi paket yang ada, dengan asumsi Anda memiliki izin yang diperlukan. Untuk paket generik, Anda dapat menambahkan aset baru selama versi paket dalam `Unfinished` status. Karena npm hanya mendukung aset tunggal per versi paket, untuk mengubah versi paket yang sudah dipublikasikan dengan cara apa pun, Anda harus terlebih dahulu menghapusnya menggunakan **delete-package-versions**. 

 Jika Anda mencoba untuk memublikasikan kembali aset yang sudah ada (misalnya, `mypackage-1.0.jar`), dan isi dari aset yang dipublikasikan dan aset baru identik, operasi akan berhasil karena operasi idempoten. 

### Paket privat dan repositori publik
<a name="package-publishing-upstreams-direct"></a>

 CodeArtifact tidak mempublikasikan paket yang disimpan dalam CodeArtifact repositori ke repositori publik seperti npmjs.com atau Maven Central. CodeArtifact mengimpor paket dari repositori publik ke CodeArtifact repositori, tetapi tidak pernah memindahkan paket ke arah lain. Paket yang Anda publikasikan ke CodeArtifact repositori tetap pribadi dan hanya tersedia untuk AWS akun, peran, dan pengguna yang telah Anda berikan akses.

### Memublikasikan versi paket dengan patch
<a name="package-publishing-patched-versions"></a>

 Terkadang Anda mungkin ingin memublikasikan versi paket yang dimodifikasi, kemungkinan yang tersedia di repositori publik. Misalnya, Anda mungkin menemukan bug dalam dependensi aplikasi penting yang disebut `mydep 1.1`, dan Anda harus memperbaikinya lebih cepat dari yang dapat ditinjau vendor paket dan menerima perubahan. Seperti yang dijelaskan sebelumnya, CodeArtifact mencegah Anda menerbitkan `mydep 1.1` di repositori Anda jika CodeArtifact repositori publik dapat dijangkau dari repositori Anda melalui CodeArtifact repositori hulu dan koneksi eksternal.

Untuk mengatasinya, publikasikan versi paket ke repositori lain di mana CodeArtifact repositori publik tidak dapat dijangkau. Kemudian gunakan `copy-package-versions` API untuk menyalin versi tambalan `mydep 1.1` ke CodeArtifact repositori tempat Anda akan menggunakannya. 

### Batas ukuran aset untuk penerbitan
<a name="package-publishing-asset-size-limits"></a>

Ukuran maksimum aset paket yang dapat dipublikasikan dibatasi oleh kuota **maksimum ukuran file Aset** yang ditunjukkan pada[Kuota di AWS CodeArtifact](service-limits.md). Misalnya, Anda tidak dapat mempublikasikan roda Maven JAR atau Python yang lebih besar dari kuota maksimum ukuran file aset Anda saat ini. Jika Anda perlu menyimpan aset yang lebih besar CodeArtifact, mintalah peningkatan kuota.

Selain kuota maksimum ukuran file aset, ukuran maksimum permintaan penerbitan untuk paket npm adalah 2 GB. Batas ini tidak tergantung pada kuota maksimum ukuran file aset dan tidak dapat dinaikkan dengan peningkatan kuota. Dalam permintaan penerbitan npm (HTTP PUT), metadata paket dan konten arsip tar paket npm dibundel bersama. Karena itu, ukuran maksimum sebenarnya dari paket npm yang dapat dipublikasikan bervariasi dan tergantung pada ukuran metadata yang disertakan.

**catatan**  
Paket npm yang diterbitkan dibatasi hingga ukuran maksimum kurang dari 2 GB.

### Latensi penerbitan
<a name="package-publishing-latency"></a>

Versi Package yang diterbitkan ke CodeArtifact repositori sering tersedia untuk diunduh dalam waktu kurang dari satu detik. Misalnya, jika Anda mempublikasikan versi paket npm ke CodeArtifact with`npm publish`, versi tersebut harus tersedia untuk `npm install` perintah dalam waktu kurang dari satu detik. Namun, penerbitan bisa tidak konsisten dan terkadang bisa memakan waktu lebih lama. Jika Anda harus menggunakan versi paket segera setelah penerbitan, gunakan percobaan ulang untuk memastikan bahwa unduhan dapat diandalkan. Misalnya, setelah menerbitkan versi paket, ulangi unduhan hingga tiga kali jika versi paket yang baru saja diterbitkan pada awalnya tidak tersedia pada upaya unduhan pertama.

**catatan**  
Mengimpor versi paket dari repositori publik biasanya membutuhkan waktu lebih lama daripada penerbitan. Untuk informasi selengkapnya, lihat [Latensi koneksi eksternal](external-connection-requesting-packages.md#external-connection-latency).

## Status versi paket
<a name="package-version-status"></a>

Setiap versi paket CodeArtifact memiliki status yang menjelaskan status saat ini dan ketersediaan versi paket. Anda dapat mengubah status versi paket di AWS CLI dan SDK. Untuk informasi selengkapnya, lihat [Memperbarui status versi paket](update-package-version-status.md). 

Berikut ini adalah nilai yang mungkin untuk status versi paket:
+  **Diterbitkan** - Versi paket berhasil diterbitkan dan dapat diminta menggunakan manajer paket. Versi paket akan disertakan dalam daftar versi paket yang dikembalikan ke manajer paket, misalnya, dalam output`npm view <package-name> versions`. Semua aset versi paket tersedia dari repositori. 
+  **Belum Selesai** — Klien telah mengunggah satu atau lebih aset untuk versi paket, tetapi belum menyelesaikannya dengan memindahkannya ke negara bagian. `Published` Saat ini hanya versi paket generik dan Maven yang dapat memiliki status. `Unfinished` Untuk paket Maven, ini dapat terjadi ketika klien mengunggah satu atau lebih aset untuk versi paket tetapi tidak mempublikasikan `maven-metadata.xml` file untuk paket yang menyertakan versi itu. Ketika versi paket Maven **Belum Selesai**, itu tidak akan disertakan dalam daftar versi yang dikembalikan ke klien seperti itu `mvn` atau`gradle`, sehingga tidak dapat digunakan sebagai bagian dari build. Paket generik dapat dengan sengaja disimpan dalam `Unfinished` status dengan memberikan `unfinished` tanda saat memanggil API. [PublishPackageVersion](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PublishPackageVersion.html) Paket generik dapat diubah ke `Published` status dengan menghilangkan `unfinished` bendera, atau dengan memanggil API. [UpdatePackageVersionsStatus](https://docs.aws.amazon.com//codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html) 
+  **Tidak terdaftar** - Aset versi paket tersedia untuk diunduh dari repositori, tetapi versi paket tidak termasuk dalam daftar versi yang dikembalikan ke manajer paket. Misalnya, untuk paket npm, output `npm view <package-name> versions` tidak akan menyertakan versi paket. Ini berarti bahwa logika resolusi dependensi npm tidak akan memilih versi paket karena versi tidak muncul dalam daftar versi yang tersedia. Namun, jika versi paket **Tidak Terdaftar** telah direferensikan dalam file `npm package-lock.json`, versi paket masih boleh diunduh dan diinstal, misalnya, ketika menjalankan `npm ci`. 
+  **Diarsipkan** — Aset versi paket tidak dapat lagi diunduh. Versi paket tidak akan dimasukkan dalam daftar versi yang dikembalikan ke manajer paket. Karena aset tidak tersedia, konsumsi versi paket oleh klien diblokir. Jika build aplikasi Anda tergantung pada versi yang diperbarui ke **Diarsipkan**, build akan rusak, dengan asumsi versi paket belum di-cache secara lokal. **[Anda tidak dapat menggunakan pengelola paket atau alat pembuatan untuk menerbitkan ulang versi paket yang **Diarsipkan** karena masih ada di repositori, tetapi Anda dapat mengubah status versi paket kembali ke **Tidak Terdaftar** atau Diterbitkan dengan API. UpdatePackageVersionsStatus ](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html)** 
+  **Disposed** — Versi paket tidak muncul dalam daftar dan aset tidak dapat diunduh dari repositori. Perbedaan utama antara **Disposed** dan **Archived** adalah bahwa dengan status **Disposed**, aset versi paket akan dihapus secara permanen oleh. CodeArtifact Untuk alasan ini, Anda tidak dapat memindahkan versi paket dari **Dibuang** ke **Diarsipkan**, **Tidak Terdaftar**, atau **Dipublikasikan**. Versi paket tidak dapat lagi digunakan karena aset telah dihapus. Setelah versi paket ditandai sebagai **Disposed**, Anda tidak akan lagi ditagih untuk penyimpanan aset paket. 

Versi Package dari semua status akan dikembalikan secara default saat memanggil list-package-versions tanpa `--status` parameter.

 Terlepas dari status yang tercantum sebelumnya, versi paket juga dapat dihapus dengan [DeletePackageVersionsAPI](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_DeletePackageVersions.html). Setelah dihapus, versi paket tidak lagi ada di repositori dan Anda dapat dengan bebas menerbitkan ulang versi paket tersebut menggunakan pengelola paket atau alat pembuatan. Setelah versi paket dihapus, Anda tidak akan lagi ditagih untuk penyimpanan aset versi paket tersebut. 

## Nama paket, versi paket, dan normalisasi nama aset
<a name="package-name-normalization"></a>

CodeArtifact menormalkan nama paket, versi paket, dan nama aset sebelum menyimpannya, yang berarti nama atau versi CodeArtifact mungkin berbeda dari nama atau versi yang disediakan saat paket diterbitkan. Untuk informasi selengkapnya tentang cara nama dan versi dinormalisasi CodeArtifact untuk setiap jenis paket, lihat dokumentasi berikut:
+ [Normalisasi nama paket Python](python-name-normalization.md)
+ [NuGet nama paket, versi, dan normalisasi nama aset](nuget-name-normalization.md)

CodeArtifact tidak melakukan normalisasi pada format paket lainnya.

# Mencantumkan nama paket
<a name="list-packages"></a>

Gunakan `list-packages` perintah CodeArtifact untuk mendapatkan daftar semua nama paket dalam repositori. Perintah ini hanya mengembalikan nama paket, bukan versi.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo
```

Contoh output:

```
{
    "nextToken": "eyJidWNrZXRJZCI6I...",
    "packages": [
        {
            "package": "acorn",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "acorn-dynamic-import",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "ajv",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "ajv-keywords",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "anymatch",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        },
        {
            "package": "ast",
            "namespace": "webassemblyjs",
            "format": "npm",
            "originConfiguration": {
                "restrictions": {
                    "publish": "BLOCK",
                    "upstream": "ALLOW"
            }
        }
    ]
}
```

## Mencantumkan nama paket npm
<a name="list-packages-npm"></a>

Untuk mencantumkan hanya nama paket npm, tetapkan nilai opsi `--format` ke `npm`.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format npm
```

Untuk daftar paket npm di namespace (*lingkup* npm), gunakan opsi `--namespace` dan `--format`.

**penting**  
Nilai untuk opsi `--namespace` tidak boleh mencakup `@` di awal. Untuk mencari namespace`@types`, atur nilainya ke. *types*

**catatan**  
`--namespace`Opsi menyaring dengan awalan namespace. Paket npm apa pun dengan cakupan yang dimulai dengan nilai yang diteruskan ke `--namespace` opsi akan dikembalikan dalam `list-packages` respons.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format npm --namespace types
```

Contoh output:

```
{
    "nextToken": "eyJidWNrZXRJZ...",
    "packages": [
        {
            "package": "3d-bin-packing",
            "namespace": "types",
            "format": "npm"

        },
        {
            "package": "a-big-triangle",
            "namespace": "types",
            "format": "npm"

        },
        {
            "package": "a11y-dialog",
            "namespace": "types",
            "format": "npm"

        }
    ]
}
```

## Mencantumkan nama paket Maven
<a name="list-packages-maven"></a>

Untuk mencantumkan hanya nama paket Maven, tetapkan nilai opsi `--format` ke `maven`. Anda juga harus menentukan ID grup Maven di opsi. `--namespace`

**catatan**  
`--namespace`Opsi menyaring dengan awalan namespace. Paket npm apa pun dengan cakupan yang dimulai dengan nilai yang diteruskan ke `--namespace` opsi akan dikembalikan dalam `list-packages` respons.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format maven --namespace org.apache.commons
```

Contoh output:

```
{
    "nextToken": "eyJidWNrZXRJZ...",
    "packages": [
        {
            "package": "commons-lang3",
            "namespace": "org.apache.commons",
            "format": "maven"

        },
        {
            "package": "commons-collections4",
            "namespace": "org.apache.commons",
            "format": "maven"

        },
        {
            "package": "commons-compress",
            "namespace": "org.apache.commons",
            "format": "maven"

        }
    ]
}
```

## Mencantumkan nama paket Python
<a name="list-packages-python"></a>

Untuk mencantumkan hanya nama Python, tetapkan nilai opsi `--format` ke `pypi`.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format pypi
```

## Filter berdasarkan prefiks nama paket
<a name="list-packages-package-prefix"></a>

 Untuk mengembalikan paket yang dimulai dengan string tertentu, Anda dapat menggunakan opsi `--package-prefix`. 

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo  \
    --format npm --package-prefix pat
```

Contoh output:

```
{
    "nextToken": "eyJidWNrZXRJZ...",
    "packages": [
        {
            "package": "path",
            "format": "npm"

        },
        {
            "package": "pat-test",
            "format": "npm"

        },
        {
            "package": "patch-math3",
            "format": "npm"

        }
    ]
}
```

## Kombinasi opsi penelusuran yang didukung
<a name="list-packages-option-combinations"></a>

Anda dapat menggunakan opsi `--format`, `--namespace`, dan `--package-prefix` dalam kombinasi apa pun, kecuali bahwa `--namespace` tidak dapat digunakan sendiri. Mencari semua paket npm dengan cakupan yang dimulai dengan `@types` memerlukan `--format` opsi yang akan ditentukan. Menggunakan `--namespace` sendiri menghasilkan kesalahan. 

 Tidak menggunakan satu pun dari tiga pilihan ini juga didukung oleh `list-packages` dan akan mengembalikan semua paket dari semua format yang ada dalam repositori. 

## Output format
<a name="list-packages-format-output"></a>

 Anda dapat menggunakan parameter yang tersedia untuk semua AWS CLI perintah untuk membuat `list-packages` respons ringkas dan lebih mudah dibaca. Gunakan parameter `--query` untuk menentukan format setiap versi paket yang dikembalikan. Gunakan parameter `--output` untuk memformat respons sebagai plaintext. 

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo \
  --output text --query 'packages[*].[package]'
```

Contoh output:

```
accepts
array-flatten
body-parser
bytes
content-disposition
content-type
cookie
cookie-signature
```

 Untuk informasi lebih lanjut, lihat [Mengontrol output perintah dari AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html) dalam *Panduan Pengguna AWS Command Line Interface *. 

## Default dan opsi lainnya
<a name="list-packages-defaults-options"></a>

 Secara default, jumlah maksimum hasil yang dikembalikan oleh `list-packages` adalah 100. Anda dapat mengubah batas hasil ini menggunakan opsi `--max-results`.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo --max-results 20
```

Nilai maksimum `--max-results` yang diizinkan adalah 1.000. Untuk mengizinkan mencantumkan paket dalam repositori dengan lebih dari 1.000 paket, `list-packages` mendukung pemberian nomor halaman menggunakan bidang `nextToken` dalam respons. Jika jumlah paket dalam repositori lebih dari nilai `--max-results`, Anda dapat meneruskan nilai `nextToken` ke invokasi lain dari `list-packages` untuk mendapatkan halaman hasil berikutnya.

```
aws codeartifact list-packages --domain my_domain --domain-owner 111122223333 --repository my_repo \
  --next-token rO0ABXNyAEdjb...
```

# Mencantumkan versi paket
<a name="list-packages-versions"></a>

Gunakan `list-package-versions` perintah AWS CodeArtifact untuk mendapatkan daftar semua versi nama paket dalam repositori.

```
aws codeartifact list-package-versions --package kind-of \ 
--domain my_domain --domain-owner 111122223333 \
--repository my_repository --format npm
```

Contoh output:

```
{
  "defaultDisplayVersion": "1.0.1",
  "format": "npm",
  "package": "kind-of",
  "versions": [
      {
          "version": "1.0.1",
          "revision": "REVISION-SAMPLE-1-C7F4S5E9B772FC",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      },
      {
          "version": "1.0.0",
          "revision": "REVISION-SAMPLE-2-C752BEEF6D2CFC",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      },
      {
          "version": "0.1.2",
          "revision": "REVISION-SAMPLE-3-654S65A5C5E1FC",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      },
      {
          "version": "0.1.1",
          "revision": "REVISION-SAMPLE-1-C7F4S5E9B772FC"",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      },
      {
          "version": "0.1.0",
          "revision": "REVISION-SAMPLE-4-AF669139B772FC",
          "status": "Published",
          "origin": {
                "domainEntryPoint": {
                    "externalConnectionName": "public:npmjs"
                },
                "originType": "EXTERNAL"
            }
      }        
  ]
}
```

Anda dapat menambahkan parameter `--status` ke panggilan `list-package-versions` untuk memfilter hasil berdasarkan status versi paket. Untuk informasi selengkapnya tentang status versi paket, lihat[Status versi paket](packages-overview.md#package-version-status). 

 Anda dapat memberi nomor halaman pada respons dari `list-package-versions` menggunakan `--max-results` dan parameter `--next-token`. Untuk `--max-results`, tentukan bilangan bulat dari 1 sampai 1000 untuk menentukan jumlah hasil yang dikembalikan dalam satu halaman. Defaultnya adalah 50. Untuk mengembalikan halaman berikutnya, jalankan `list-package-versions` lagi dan teruskan nilai `nextToken` yang diterima dalam perintah output sebelumnya untuk `--next-token`. Saat opsi `--next-token` tidak digunakan, halaman pertama hasil selalu dikembalikan. 

 Perintah `list-package-versions` tidak mencantumkan versi paket di repositori hulu. Namun, referensi ke versi paket dalam repositori hulu yang disalin ke repositori Anda selama permintaan versi paket tercantum. Untuk informasi selengkapnya, lihat [Bekerja dengan repositori upstream di CodeArtifact](repos-upstream.md). 

## Daftar versi paket npm
<a name="list-packages-versions-npm"></a>

Untuk mencantumkan semua versi paket untuk paket npm, tetapkan nilai `--format` opsi ke`npm`.

```
aws codeartifact list-package-versions --package my_package --domain my_domain \ 
 --domain-owner 111122223333 --repository my_repo --format npm
```

Untuk mencantumkan versi paket npm di namespace tertentu (*lingkup* npm), gunakan opsi. `--namespace` Nilai untuk opsi `--namespace` tidak boleh mencakup `@` di awal. Untuk mencari namespace`@types`, atur nilainya ke. *types*

```
aws codeartifact list-package-versions --package my_package --domain my_domain \
 --domain-owner 111122223333 --repository my_repo --format npm \
 --namespace types
```

## Daftar versi paket Maven
<a name="list-packages-versions-maven"></a>

Untuk mencantumkan semua versi paket untuk paket Maven, tetapkan nilai `--format` opsi ke. `maven` Anda juga harus menentukan ID grup Maven di opsi. `--namespace`

```
aws codeartifact list-package-versions --package my_package --domain my_domain \
 --domain-owner 111122223333 --repository my_repo --format maven \
 --namespace org.apache.commons
```

## Mengurutkan versi
<a name="list-package-versions-sorting"></a>

 `list-package-versions` dapat memberikan output versi yang diurutkan dalam urutan menurun berdasarkan waktu publikasi (versi yang paling baru dipublikasikan dicantumkan pertama). Gunakan parameter `--sort-by` dengan nilai `PUBLISHED_TIME`, sebagai berikut.

```
aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 --repository my_repository  \
--format npm --package webpack --max-results 5 --sort-by PUBLISHED_TIME
```

 Contoh output: 

```
{

  "defaultDisplayVersion": "4.41.2",
  "format": "npm",
  "package": "webpack",
  "versions": [
      { 
        "version": "5.0.0-beta.7", 
        "revision": "REVISION-SAMPLE-1-C7F4S5E9B772FC",
        "status": "Published"
      },
      { 
        "version": "5.0.0-beta.6", 
        "revision": "REVISION-SAMPLE-2-C752BEEF6D2CFC",
        "status": "Published" 
      },
      { 
        "version": "5.0.0-beta.5", 
        "revision": "REVISION-SAMPLE-3-654S65A5C5E1FC",
        "status": "Published"
      },
      { 
        "version": "5.0.0-beta.4", 
        "revision": "REVISION-SAMPLE-4-AF669139B772FC",
        "status": "Published"
      },
      { 
        "version": "5.0.0-beta.3", 
        "revision": "REVISION-SAMPLE-5-C752BEE9B772FC",
        "status": "Published"
      }
  ],
  "nextToken": "eyJsaXN0UGF...."
}
```

## Versi tampilan default
<a name="list-package-versions-default-version"></a>

 Nilai yang dikembalikan untuk `defaultDisplayVersion` bergantung pada format paket: 
+  Untuk paket generik, Maven, dan PyPI, ini adalah versi paket yang paling baru diterbitkan. 
+  Untuk paket npm, itu adalah versi yang direferensikan oleh tanda `latest`. Jika tanda `latest` tidak diatur, nilai adalah versi paket yang paling baru dipublikasikan. 

## Output format
<a name="list-package-versions-format-output"></a>

 Anda dapat menggunakan parameter yang tersedia untuk semua AWS CLI perintah untuk membuat `list-package-versions` respons ringkas dan lebih mudah dibaca. Gunakan parameter `--query` untuk menentukan format setiap versi paket yang dikembalikan. Gunakan `--output` parameter untuk memformat respons sebagai teks biasa. 

```
aws codeartifact list-package-versions --package my-package-name --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format npm --output text --query 'versions[*].[version]'
```

Contoh output:

```
0.1.1
0.1.2
0.1.0
3.0.0
```

 Untuk informasi lebih lanjut, lihat [Mengontrol output perintah dari AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html) dalam *Panduan Pengguna AWS Command Line Interface *. 

# Mencantumkan aset versi paket
<a name="list-assets"></a>

*Aset* adalah file individual (misalnya, file npm atau `.tgz` file Maven POM atau JAR) CodeArtifact yang disimpan di dalamnya terkait dengan versi paket. Anda dapat menggunakan perintah `list-package-version-assets` untuk mencantumkan aset di setiap versi paket.

Jalankan `list-package-version-assets` perintah untuk mengembalikan informasi berikut tentang setiap aset di AWS akun Anda dan AWS Wilayah Anda saat ini:
+  Namanya. 
+  Ukurannya, dalam byte. 
+  Satu set nilai hash yang digunakan untuk validasi checksum. 

Misalnya, gunakan perintah berikut untuk mencantumkan aset paket Python `flatten-json`, versi `0.1.7`.

```
aws codeartifact list-package-version-assets --domain my_domain --domain-owner 111122223333 \
 --repository my_repo --format pypi --package flatten-json \
 --package-version 0.1.7
```

Berikut ini menunjukkan output.

```
{
    "format": "pypi",
    "package": "flatten-json",
    "version": "0.1.7",
    "versionRevision": "REVISION-SAMPLE-1-C7F4S5E9B772FC",
    "assets": [
        {
            "name": "flatten_json-0.1.7-py3-none-any.whl",
            "size": 31520,
            "hashes": {
                "MD5": "41bba98d5b9219c43089eEXAMPLE-MD5",
                "SHA-1": "69b215c25dd4cda1d997a786ec6EXAMPLE-SHA-1",
                "SHA-256": "43f24850b7b7b7d79c5fa652418518fbdf427e602b1edabe6EXAMPLE-SHA-256",
                "SHA-512": "3947382ac2c180ee3f2aba4f8788241527c8db9dfe9f4b039abe9fc560aaf5a1fced7bd1e80a0dca9ce320d95f0864e0dec3ac4f2f7b2b2cbEXAMPLE-SHA-512"
            }
        },
        {
            "name": "flatten_json-0.1.7.tar.gz",
            "size": 2865,
            "hashes": {
                "MD5": "41bba98d5b9219c43089eEXAMPLE-MD5",
                "SHA-1": "69b215c25dd4cda1d997a786ec6EXAMPLE-SHA-1",
                "SHA-256": "43f24850b7b7b7d79c5fa652418518fbdf427e602b1edabe6EXAMPLE-SHA-256",
                "SHA-512": "3947382ac2c180ee3f2aba4f8788241527c8db9dfe9f4b039abe9fc560aaf5a1fced7bd1e80a0dca9ce320d95f0864e0dec3ac4f2f7b2b2cbEXAMPLE-SHA-512"
            }
        }
    ]
}
```

## Daftar aset dari paket npm
<a name="list-assets-npm"></a>

Paket npm selalu memiliki aset tunggal dengan nama `package.tgz`. Untuk membuat daftar aset paket npm tercakup, sertakan cakupan dalam opsi. `--namespace`

```
aws codeartifact list-package-version-assets --domain my_domain --domain-owner 111122223333 \
 --repository my_repo --format npm --package webpack \
 --namespace types --package-version 4.9.2
```

## Daftar aset paket Maven
<a name="list-assets-maven"></a>

Untuk membuat daftar aset paket Maven, sertakan namespace paket dalam opsi. `--namespace` Untuk mencantumkan aset paket Maven `commons-cli:commons-cli`:

```
aws codeartifact list-package-version-assets --domain my_domain --domain-owner 111122223333 \
 --repository my_repo --format maven --package commons-cli \
 --namespace commons-cli --package-version 1.0
```

# Mengunduh aset versi paket
<a name="download-assets"></a>

*Aset* adalah file individual (misalnya, file npm atau `.tgz` file Maven POM atau JAR) CodeArtifact yang disimpan di dalamnya terkait dengan versi paket. Anda dapat mengunduh aset paket menggunakan `get-package-version-assets command`. Hal ini memungkinkan Anda mengambil aset tanpa menggunakan klien manajer paket seperti `npm` atau `pip`. Untuk mengunduh aset Anda harus memberikan nama aset yang dapat diperoleh menggunakan perintah `list-package-version-assets`, untuk informasi selengkapnya lihat [Mencantumkan aset versi paket](list-assets.md). Aset akan diunduh ke penyimpanan lokal dengan nama file yang Anda tentukan.

Contoh berikut mengunduh *guava-27.1-jre.jar* aset dari paket Maven *com.google.guava:guava* dengan versi. *27.1-jre*

```
aws codeartifact get-package-version-asset --domain my_domain --domain-owner 111122223333 --repository my_repo \
    --format maven --namespace com.google.guava --package guava --package-version 27.1-jre \
    --asset guava-27.1-jre.jar \
    guava-27.1-jre.jar
```

 Dalam contoh ini, nama file ditentukan *guava-27.1-jre.jar* oleh argumen terakhir dalam perintah sebelumnya, sehingga aset yang diunduh akan diberi nama. *guava-27.1-jre.jar* 

Output dari perintah yaitu:

```
{
    "assetName": "guava-27.1-jre.jar",
    "packageVersion": "27.1-jre",
    "packageVersionRevision": "YGp9ck2tmy03PGSxioclfYzQ0BfTLR9zzhQJtERv62I="
}
```

**catatan**  
Untuk mengunduh aset dari paket npm tercakup, sertakan cakupan dalam opsi. `--namespace` Simbol `@` harus dihilangkan ketika menggunakan `--namespace`. Misalnya, jika ruang lingkupnya`@types`, gunakan`--namespace types`.

 Mengunduh aset menggunakan `get-package-version-asset` membutuhkan izin `codeartifact:GetPackageVersionAsset` pada sumber daya paket. Untuk informasi selengkapnya tentang kebijakan izin berbasis sumber daya, lihat [Resource-based policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_resource-based) di *Panduan Pengguna AWS Identity and Access Management *. 

# Menyalin paket antar-repositori
<a name="copy-package"></a>

Anda dapat menyalin versi paket dari satu repositori ke repositori lainnya di. CodeArtifact Hal ini dapat membantu untuk skenario seperti alur kerja promosi paket atau berbagi versi paket antara tim atau proyek. Repositori sumber dan tujuan harus berada dalam domain yang sama untuk menyalin versi paket.

## Izin IAM yang diperlukan untuk menyalin paket
<a name="copypackageversions-iam-actions"></a>

Untuk menyalin versi paket CodeArtifact, pengguna panggilan harus memiliki izin IAM yang diperlukan dan kebijakan berbasis sumber daya yang dilampirkan ke repositori sumber dan tujuan harus memiliki izin yang diperlukan. Untuk informasi selengkapnya tentang kebijakan dan repositori izin berbasis sumber daya, lihat. CodeArtifact [Kebijakan repositori](repo-policies.md)

Panggilan pengguna `copy-package-versions` harus memiliki `ReadFromRepository` izin pada repositori sumber dan `CopyPackageVersions` izin pada repositori tujuan.

Repositori sumber harus memiliki `ReadFromRepository` izin dan repositori tujuan harus memiliki izin yang ditetapkan ke akun IAM atau paket `CopyPackageVersions` penyalinan pengguna. Kebijakan berikut adalah contoh kebijakan repositori yang akan ditambahkan ke repositori sumber atau repositori tujuan dengan perintah. `put-repository-permissions-policy` Ganti *111122223333* dengan ID panggilan akun`copy-package-versions`.

**catatan**  
Panggilan `put-repository-permissions-policy` akan menggantikan kebijakan repositori saat ini jika ada. Anda dapat menggunakan `get-repository-permissions-policy` perintah untuk melihat apakah ada kebijakan, untuk informasi selengkapnya lihat[Membaca kebijakan](repo-policies.md#reading-a-policy). Jika ada kebijakan, Anda mungkin ingin menambahkan izin ini ke sana alih-alih menggantinya.

**Contoh kebijakan izin repositori sumber**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "codeartifact:ReadFromRepository"
            ],
            "Effect": "Allow",
            "Principal": {
                 "AWS": "arn:aws:iam::111122223333:root"
            },
            "Resource": "*"
        }
    ]
}
```

------

**Contoh kebijakan izin repositori tujuan**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "codeartifact:CopyPackageVersions"
            ],
            "Effect": "Allow",
            "Principal": {
                 "AWS": "arn:aws:iam::111122223333:root"
            },
            "Resource": "*"
        }
    ]
}
```

------

## Menyalin versi paket
<a name="copy-package-versions"></a>

Gunakan `copy-package-versions` perintah CodeArtifact untuk menyalin satu atau beberapa versi paket dari repositori sumber ke repositori tujuan di domain yang sama. Contoh berikut akan menyalin versi 6.0.2 dan 4.0.0 dari paket npm bernama `my-package` dari repositori `my_repo` ke repositori `repo-2`.

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 --source-repository my_repo \
 --destination-repository repo-2 --package my-package --format npm \
 --versions 6.0.2 4.0.0
```

Anda dapat menyalin beberapa versi dari nama paket yang sama dalam satu operasi. Untuk menyalin versi dari nama paket yang berbeda, Anda harus memanggil `copy-package-versions` untuk setiap nama paket.

Perintah sebelumnya akan menghasilkan output berikut, dengan asumsi kedua versi berhasil disalin.

```
{
   "successfulVersions": {
        "6.0.2": {
            "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC",
            "status": "Published"
        },
        "4.0.0": {
            "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC",
            "status": "Published"
        }
    },
    "failedVersions": {}
}
```

## Menyalin paket dari repositori hulu
<a name="copy-package-upstream"></a>

Biasanya, `copy-package-versions` hanya melihat di repositori yang ditentukan oleh opsi `--source-repository` untuk versi yang akan disalin. Namun, Anda dapat menyalin versi dari kedua repositori sumber dan repositori hulu dengan menggunakan opsi `--include-from-upstream`. Jika Anda menggunakan CodeArtifact SDK, panggil `CopyPackageVersions` API dengan `includeFromUpstream` parameter yang disetel ke true. Untuk informasi selengkapnya, lihat [Bekerja dengan repositori upstream di CodeArtifact](repos-upstream.md).

## Menyalin paket npm dalam lingkup
<a name="copying-a-scoped-npm-package"></a>

 Untuk menyalin versi paket npm dalam lingkup, gunakan opsi `--namespace` untuk menentukan ruang lingkup. Misalnya, untuk menyalin paket `@types/react`, gunakan `--namespace types`. Simbol `@` harus dihilangkan ketika menggunakan `--namespace`.

```
aws codeartifact copy-package-versions  --domain my_domain --domain-owner 111122223333 --source-repository repo-1 \
 --destination-repository repo-2 --format npm --namespace types \
 --package react --versions 0.12.2
```

## Menyalin versi paket Maven
<a name="copying-a-maven-package"></a>

Untuk menyalin versi paket Maven antar repositori, tentukan paket yang akan disalin dengan meneruskan ID grup Maven dengan `--namespace` opsi dan Maven ArtifactID dengan opsi. `--name` Sebagai contoh, untuk menyalin satu versi `com.google.guava:guava`:

```
 aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333  \
 --source-repository my_repo --destination-repository repo-2 --format maven --namespace com.google.guava \
 --package guava --versions 27.1-jre
```

Jika versi paket berhasil disalin, output akan serupa dengan berikut ini.

```
{
    "successfulVersions": {
        "27.1-jre": {
            "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC",
            "status": "Published"
        }
    },
    "failedVersions": {}
}
```

## Versi yang tidak ada dalam repositori sumber
<a name="versions-that-do-not-exist-in-the-source-repository"></a>

Jika Anda menentukan versi yang tidak ada di repositori sumber, penyalinan akan gagal. Jika beberapa versi ada di repositori sumber dan beberapa tidak ada, semua versi akan gagal disalin. Dalam contoh berikut, versi 0.2.0 paket npm `array-unique` ada dalam repositori sumber, tetapi versi 5.6.7 tidak:

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 \
         --source-repository my_repo --destination-repository repo-2 --format npm \
         --package array-unique --versions 0.2.0 5.6.7
```

Output dalam skenario ini akan serupa dengan berikut ini.

```
{
    "successfulVersions": {},
    "failedVersions": {
        "0.2.0": {
            "errorCode": "SKIPPED",
            "errorMessage": "Version 0.2.0 was skipped"
        },
        "5.6.7": {
            "errorCode": "NOT_FOUND",
            "errorMessage": "Could not find version 5.6.7"
        }
    }
}
```

Kode kesalahan `SKIPPED` digunakan untuk menunjukkan bahwa versi tidak disalin ke repositori tujuan karena versi lain tidak dapat disalin. 

## Versi yang sudah ada di repositori tujuan
<a name="versions-that-already-exist-in-the-destination-repository"></a>

 Ketika versi paket disalin ke repositori yang sudah ada, CodeArtifact bandingkan aset paket dan metadata tingkat versi paketnya di dua repositori.

 Jika aset dan metadata versi paket identik dalam repositori sumber dan tujuan, penyalinan tidak dilakukan tetapi operasi dianggap berhasil. Ini berarti bahwa `copy-package-versions` idempoten. Ketika ini terjadi, versi yang sudah ada di repositori sumber dan tujuan tidak akan tercantum dalam output `copy-package-versions`.

Dalam contoh berikut, dua versi paket npm `array-unique` ada dalam repositori sumber `repo-1`. Versi 0.2.1 juga ada dalam repositori tujuan `dest-repo` dan versi 0.2.0 tidak.

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 \
         --source-repository my_repo --destination-repository repo-2 --format npm --package array-unique \
         --versions 0.2.1 0.2.0
```

Output dalam skenario ini akan serupa dengan berikut ini.

```
{
    "successfulVersions": {
        "0.2.0": {
            "revision": "Yad+B1QcBq2kdEVrx1E1vSfHJVh8Pr61hBUkoWPGWX0=",
            "status": "Published"
        }
    },
    "failedVersions": {}
}
```

Versi 0.2.0 tercantum dalam `successfulVersions` karena berhasil disalin dari sumber ke repositori tujuan. Versi 0.2.1 tidak ditampilkan dalam output karena sudah ada di repositori tujuan.

 Jika aset atau metadata versi paket berbeda di repositori sumber dan tujuan, operasi penyalinan akan gagal. Anda dapat menggunakan parameter `--allow-overwrite` untuk menimpa dengan paksa. 

Jika beberapa versi ada di repositori tujuan dan beberapa tidak, semua versi akan gagal disalin. Dalam contoh berikut, versi 0.3.2 paket npm `array-unique` ada di repositori sumber dan tujuan, tetapi isi versi paket berbeda. Versi 0.2.1 ada dalam repositori sumber tetapi tidak di repositori tujuan.

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 \
         --source-repository my_repo --destination-repository repo-2 --format npm --package array-unique \
         --versions 0.3.2 0.2.1
```

Output dalam skenario ini akan serupa dengan berikut ini.

```
{
    "successfulVersions": {},
    "failedVersions": {
        "0.2.1": {
            "errorCode": "SKIPPED",
            "errorMessage": "Version 0.2.1 was skipped"
        },
        "0.3.2": {
            "errorCode": "ALREADY_EXISTS",
            "errorMessage": "Version 0.3.2 already exists"
        }
    }
}
```

Versi 0.2.1 ditandai sebagai `SKIPPED` karena tidak disalin ke repositori tujuan. Versi tidak disalin karena salinan versi 0.3.2 gagal karena sudah ada di repositori tujuan, tetapi tidak identik dalam repositori sumber dan tujuan.

## Menentukan revisi versi paket
<a name="specify-package-version-revision"></a>

 Revisi versi paket adalah string yang menentukan serangkaian aset dan metadata tertentu untuk versi paket. Anda dapat menentukan revisi versi paket untuk menyalin versi paket yang berada dalam status tertentu. Untuk menentukan revisi versi paket, gunakan parameter `--version-revisions` untuk meneruskan satu atau lebih versi paket yang dipisahkan koma dan pasangan revisi versi paket ke perintah `copy-package-versions`. 

**catatan**  
Anda harus menentukan parameter `--versions` atau `--version-revisions` dengan `copy-package-versions`. Anda tidak dapat menentukan keduanya. 

Contoh berikut hanya akan menyalin versi 0.3.2 dari paket `my-package` jika ada di repositori sumber dengan revisi versi paket `REVISION-1-SAMPLE-6C81EFF7DA55CC`.

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 --source-repository repo-1 \
 --destination-repository repo-2 --format npm --namespace my-namespace \
 --package my-package --version-revisions 0.3.2=REVISION-1-SAMPLE-6C81EFF7DA55CC
```

Contoh berikut menyalin dua versi paket `my-package`, 0.3.2 dan 0.3.13. Salinan hanya akan berhasil jika di repositori sumber, versi 0.3.2 `my-package` mempunyai revisi `REVISION-1-SAMPLE-6C81EFF7DA55CC` dan versi 0.3.13 mempunyai revisi `REVISION-2-SAMPLE-55C752BEE772FC`.

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 --source-repository repo-1 \
 --destination-repository repo-2 --format npm --namespace my-namespace \
 --package my-package --version-revisions 0.3.2=REVISION-1-SAMPLE-6C81EFF7DA55CC,0.3.13=REVISION-2-SAMPLE-55C752BEE772FC
```

 Untuk menemukan revisi versi paket, gunakan perintah `describe-package-version` atau `list-package-versions`. 

 Untuk informasi selengkapnya, lihat [Revisi versi paket](codeartifact-concepts.md#welcome-concepts-package-version-revision) dan [CopyPackageVersion](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_CopyPackageVersions.html)di *Referensi CodeArtifact API*. 

## Menyalin paket npm
<a name="copying-npm-packages"></a>

 Untuk informasi selengkapnya tentang `copy-package-versions` perilaku dengan paket npm, lihat [tag npm dan API. CopyPackageVersions](npm-tags.md#tags-and-cpv) 

# Hapus versi paket atau paket
<a name="delete-package"></a>

Anda dapat menghapus satu atau beberapa versi paket sekaligus menggunakan perintah `delete-package-versions`. Untuk menghapus paket dari repositori sepenuhnya, termasuk semua versi dan konfigurasi terkait, gunakan perintah. `delete-package` Sebuah paket dapat ada di repositori tanpa versi paket apa pun. Ini dapat terjadi ketika semua versi dihapus menggunakan `delete-package-versions` perintah, atau jika paket dibuat tanpa versi apa pun yang menggunakan operasi `put-package-origin-configuration` API (lihat[Mengedit kontrol asal paket](package-origin-controls.md)).

**Topics**
+ [Menghapus paket ()AWS CLI](#delete-package-CLI)
+ [Menghapus paket (konsol)](#delete-package-console)
+ [Menghapus versi paket ()AWS CLI](#delete-package-version-CLI)
+ [Menghapus versi paket (konsol)](#delete-package-version-console)
+ [Menghapus paket npm atau versi paket](#delete-package-npm)
+ [Menghapus paket Maven atau versi paket](#delete-package-maven)
+ [Praktik terbaik untuk menghapus paket atau versi paket](#delete-package-bp)

## Menghapus paket ()AWS CLI
<a name="delete-package-CLI"></a>

Anda dapat menghapus paket, termasuk semua versi paket dan konfigurasi, menggunakan `delete-package` perintah. Contoh berikut menghapus paket PyPI yang `my-package` dinamai dalam `my_repo` repo di domain: `my_domain`

```
aws codeartifact delete-package --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi \
--package my-package
```

Contoh output:

```
{
   "deletedPackage": { 
      "format": "pypi",
      "originConfiguration": { 
         "restrictions": { 
            "publish": "ALLOW",
            "upstream": "BLOCK"
         }
      },
      "package": "my-package"
   }
}
```

Anda dapat mengonfirmasi bahwa paket telah dihapus dengan menjalankan `describe-package` nama paket yang sama:

```
aws codeartifact describe-package --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi --package my-package
```

## Menghapus paket (konsol)
<a name="delete-package-console"></a>

1. Buka AWS CodeArtifact konsol di [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. Di panel navigasi, pilih **Repositori**.

1. Pilih **Repositori** dari mana Anda ingin menghapus paket.

1. Pilih **Package** yang ingin Anda hapus.

1. Pilih **Hapus Package**.

## Menghapus versi paket ()AWS CLI
<a name="delete-package-version-CLI"></a>

Anda dapat menghapus satu atau beberapa versi paket sekaligus menggunakan perintah `delete-package-versions`. Contoh berikut menghapus versi`4.0.0`,`4.0.1`, dan `5.0.0` paket PyPI `my-package` bernama dalam `my_repo` `my_domain` domain:

```
aws codeartifact delete-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi \
--package my-package --versions 4.0.0 4.0.1 5.0.0
```

Contoh output:

```
{
   "successfulVersions": {
      "4.0.0": {
         "revision": "oxwwYC9dDeuBoCt6+PDSwL6OMZ7rXeiXy44BM32Iawo=",
            "status": "Deleted"
      },
      "4.0.1": {
         "revision": "byaaQR748wrsdBaT+PDSwL6OMZ7rXeiBKM0551aqWmo=",
            "status": "Deleted"
      },
      "5.0.0": {
         "revision": "yubm34QWeST345ts+ASeioPI354rXeiSWr734PotwRw=",
            "status": "Deleted"
      }
   },
   "failedVersions": {}
}
```

Anda dapat mengonfirmasi bahwa versi telah dihapus dengan menjalankan `list-package-versions` untuk nama paket yang sama:

```
aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi --package my-package
```

## Menghapus versi paket (konsol)
<a name="delete-package-version-console"></a>

1. Buka AWS CodeArtifact konsol di [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. Di panel navigasi, pilih **Repositori**.

1. Pilih **Repositori** dari mana Anda ingin menghapus versi paket.

1. Pilih **Package** dari mana Anda ingin menghapus versi.

1. Pilih **Package Version** yang ingin Anda hapus.

1. Pilih **Hapus**.
**catatan**  
Di konsol, Anda hanya dapat menghapus satu versi paket sekaligus. Untuk menghapus lebih dari satu per satu, gunakan CLI.

## Menghapus paket npm atau versi paket
<a name="delete-package-npm"></a>

Untuk menghapus paket npm atau versi paket individual, atur `--format` opsi ke`npm`. Untuk menghapus versi paket dalam paket npm cakupan, gunakan `--namespace` opsi untuk menentukan ruang lingkup. Misalnya, untuk menghapus paket`@types/react`, gunakan`--namespace types`. Hilangkan `@` simbol saat menggunakan`--namespace`. 

```
aws codeartifact delete-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format npm --namespace types \
--package react --versions 0.12.2
```

Untuk menghapus paket`@types/react`, termasuk semua versinya:

```
aws codeartifact delete-package --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format npm --namespace types \
--package react
```

## Menghapus paket Maven atau versi paket
<a name="delete-package-maven"></a>

Untuk menghapus paket Maven atau versi paket individual, atur `--format` opsi ke `maven` dan tentukan paket yang akan dihapus dengan meneruskan ID grup Maven dengan `--namespace` opsi dan Maven ArtifactID dengan opsi. `--name` Misalnya, berikut ini menunjukkan cara menghapus satu versi`com.google.guava:guava`:

```
 aws codeartifact delete-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format maven --namespace com.google.guava \
--package guava --versions 27.1-jre
```

Contoh berikut menunjukkan cara menghapus paket`com.google.guava:guava`, termasuk semua versinya:

```
 aws codeartifact delete-package --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format maven --namespace com.google.guava \
--package guava
```

## Praktik terbaik untuk menghapus paket atau versi paket
<a name="delete-package-bp"></a>

Jika Anda perlu menghapus versi paket, sebagai praktik terbaik disarankan agar Anda membuat repositori untuk menyimpan salinan cadangan dari versi paket yang ingin Anda hapus. Anda dapat melakukan ini dengan terlebih dahulu menelepon `copy-package-versions` ke repositori cadangan: 

```
aws codeartifact copy-package-versions --domain my_domain --domain-owner 111122223333 --source-repository my_repo \
 --destination-repository repo-2 --package my-package --format npm \
 --versions 6.0.2 4.0.0
```

Setelah Anda menyalin versi paket, Anda kemudian dapat memanggil `delete-package-versions` paket atau versi paket yang ingin Anda hapus.

```
aws codeartifact delete-package-versions --domain my_domain --domain-owner 111122223333 \
--repository my_repo --format pypi \
--package my-package --versions 4.0.0 4.0.1 5.0.0
```

# Melihat dan memperbarui detail versi paket dan dependensi
<a name="describe-package-version"></a>

Anda dapat melihat informasi tentang versi paket, termasuk dependensi, di. CodeArtifact Anda juga dapat memperbarui status versi paket. Untuk informasi selengkapnya tentang status versi paket, lihat [Status versi paket](packages-overview.md#package-version-status). 

## Melihat detail versi paket
<a name="view-package-details"></a>

 Gunakan perintah `describe-package-version` untuk melihat detail tentang versi paket. Rincian versi Package diekstraksi dari paket saat dipublikasikan ke CodeArtifact. Detail dalam paket yang berbeda bervariasi dan bergantung pada format dan berapa banyak informasi yang ditambahkan penulis ke dalamnya. 

 Sebagian besar informasi dalam output perintah `describe-package-version` bergantung pada format paket. Misalnya, `describe-package-version` mengekstrak informasi paket npm dari file `package.json`. Revisi dibuat oleh CodeArtifact. Untuk informasi selengkapnya, lihat [Menentukan revisi versi paket](copy-package.md#specify-package-version-revision). 

 Dua versi paket dengan nama yang sama bisa berada di repositori yang sama jika masing-masing berada di namespace yang berbeda. Gunakan parameter `--namespace` opsional untuk menentukan namespace. Untuk informasi selengkapnya, lihat [Lihat detail versi paket npm](#describe-package-version-npm) atau [Lihat detail versi paket Maven](#describe-package-version-maven).

 Contoh berikut mengembalikan detail tentang versi `1.9.0` paket Python bernama `pyhamcrest`yang ada di repositori `my_repo`. 

```
aws codeartifact describe-package-version --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format pypi --package pyhamcrest --package-version 1.9.0
```

 Output mungkin terlihat seperti berikut ini.

```
{
  "format": "pypi",
  "package": "PyHamcrest",
  "displayName": "PyHamcrest",
  "version": "1.9.0",
  "summary": "Hamcrest framework for matcher objects",
  "homePage": "https://github.com/hamcrest/PyHamcrest",
  "publishedTime": 1566002944.273,
  "licenses": [
    {
      "id": "license-id",
      "name": "license-name"
    }
  ],
  "revision": "REVISION-SAMPLE-55C752BEE9B772FC"
}
```

**catatan**  
CodeArtifact mengambil rincian versi paket seperti halaman beranda paket atau informasi lisensi paket dari metadata yang disediakan oleh pembuat paket. Jika salah satu informasi ini melebihi 400 KB, yang merupakan batas ukuran item DynamoDB CodeArtifact , tidak akan dapat memproses data tersebut dan Anda mungkin tidak melihat informasi ini di konsol atau dari respons. `describe-package-version` Misalnya, paket python seperti [https://pypi. org/project/rapyd-sdk/](https://pypi.org/project/rapyd-sdk/) memiliki bidang lisensi yang sangat besar, jadi informasi ini tidak akan diproses oleh. CodeArtifact

## Lihat detail versi paket npm
<a name="describe-package-version-npm"></a>

Untuk melihat detail tentang versi paket npm, tetapkan nilai `--format` opsi ke**npm**. Secara opsional, sertakan namespace versi paket (*lingkup* npm) dalam opsi. `--namespace` Nilai untuk opsi `--namespace` tidak boleh mencakup `@` di awal. Untuk mencari namespace`@types`, atur nilainya ke. *types*

Berikut ini mengembalikan rincian tentang `4.41.5` versi paket npm bernama `webpack` dalam `@types` lingkup. 

```
aws codeartifact describe-package-version --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format npm --package webpack --namespace types --package-version 4.41.5
```

 Output mungkin terlihat seperti berikut ini. 

```
{
  "format": "npm",
  "namespace": "types",
  "package": "webpack",
  "displayName": "webpack",
  "version": "4.41.5",
  "summary": "Packs CommonJs/AMD modules for the browser. Allows ... further output omitted for brevity",
  "homePage": "https://github.com/webpack/webpack",
  "sourceCodeRepository": "https://github.com/webpack/webpack.git",
  "publishedTime": 1577481261.09,
  "licenses": [
    {
      "id": "license-id",
      "name": "license-name"
    }
  ],
  "revision": "REVISION-SAMPLE-55C752BEE9B772FC",
  "status": "Published",
  "origin": {
            "domainEntryPoint": {
                "externalConnectionName": "public:npmjs"
            },
            "originType": "EXTERNAL"
  }
}
```

## Lihat detail versi paket Maven
<a name="describe-package-version-maven"></a>

Untuk melihat detail tentang versi paket Maven, tetapkan nilai `--format` opsi ke `maven` dan sertakan namespace versi paket dalam opsi. `--namespace`

 Contoh berikut mengembalikan detail tentang versi `1.2` paket Maven bernama `commons-rng-client-api` yang ada di namespace `org.apache.commons` dan repositori `my_repo`. 

```
aws codeartifact describe-package-version --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format maven --namespace org.apache.commons --package commons-rng-client-api --package-version 1.2
```

 Output mungkin terlihat seperti berikut ini.

```
{
  "format": "maven",
  "namespace": "org.apache.commons",
  "package": "commons-rng-client-api",
  "displayName": "Apache Commons RNG Client API",
  "version": "1.2",
  "summary": "API for client code that uses random numbers generators.",
  "publishedTime": 1567920624.849,
  "licenses": [],
  "revision": "REVISION-SAMPLE-55C752BEE9B772FC"
}
```

**catatan**  
CodeArtifact tidak mengekstrak informasi detail versi paket dari file POM induk. Metadata untuk versi paket tertentu hanya akan menyertakan informasi dalam POM untuk versi paket yang tepat, bukan untuk POM induk atau POM lain yang direferensikan secara transitif menggunakan tag POM. `parent` Ini berarti bahwa output `describe-package-version` akan menghilangkan metadata (seperti informasi lisensi) untuk versi paket Maven yang mengandalkan `parent` referensi untuk berisi metadata ini.

## Melihat dependensi versi paket
<a name="view-package-dependencies"></a>

 Gunakan perintah `list-package-version-dependencies` untuk mendapatkan daftar dependensi versi paket. Perintah berikut mencantumkan dependensi paket npm bernama `my-package`, versi `4.41.5`, di repositori `my_repo`, dalam domain `my_domain`. 

```
aws codeartifact list-package-version-dependencies --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format npm --package my-package --package-version 4.41.5
```

 Output mungkin terlihat seperti berikut ini. 

```
{
  "dependencies": [
    {
      "namespace": "webassemblyjs",
      "package": "ast",
      "dependencyType": "regular",
      "versionRequirement": "1.8.5"
    },
    {
      "namespace": "webassemblyjs",
      "package": "helper-module-context",
      "dependencyType": "regular",
      "versionRequirement": "1.8.5"
    },
    {
      "namespace": "webassemblyjs",
      "package": "wasm-edit",
      "dependencyType": "regular",
      "versionRequirement": "1.8.5"
    }
  ],
  "versionRevision": "REVISION-SAMPLE-55C752BEE9B772FC"
}
```

*Untuk rentang nilai yang didukung untuk bidang DependencyType, lihat tipe [PackageDependency](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_PackageDependency.html)data di API. CodeArtifact *

## Melihat file readme versi paket
<a name="view-package-readme"></a>

 Beberapa format paket, seperti npm, mencakup file `README`. Gunakan `get-package-version-readme` untuk mendapatkan file `README` versi paket. Perintah berikut mengembalikan file `README` paket npm bernama `my-package`, versi `4.41.5`, di repositori `my_repo`, dalam domain `my_domain`. 

**catatan**  
CodeArtifact tidak mendukung menampilkan file readme dari paket generik atau Maven.

```
aws codeartifact get-package-version-readme --domain my_domain --domain-owner 111122223333 --repository my_repo \
--format npm --package my-package --package-version 4.41.5
```

 Output mungkin terlihat seperti berikut ini.

```
{  
  "format": "npm",
  "package": "my-package",
  "version": "4.41.5"
  "readme": "<div align=\"center\">\n   <a href=\https://github.com/webpack/webpack\"> ... more content ... \n",
  "versionRevision": "REVISION-SAMPLE-55C752BEE9B772FC"
}
```

# Memperbarui status versi paket
<a name="update-package-version-status"></a>

Setiap versi paket CodeArtifact memiliki status yang menjelaskan status saat ini dan ketersediaan versi paket. Anda dapat mengubah status versi paket menggunakan konsol AWS CLI dan konsol.

**catatan**  
Untuk informasi selengkapnya tentang status versi paket, termasuk daftar status yang tersedia, lihat[Status versi paket](packages-overview.md#package-version-status). 

## Memperbarui status versi paket
<a name="updating-pv-status"></a>

Mengatur status versi paket memungkinkan mengontrol bagaimana versi paket dapat digunakan tanpa menghapusnya sepenuhnya dari repositori. Misalnya, ketika versi paket memiliki status`Unlisted`, itu masih dapat diunduh seperti biasa, tetapi tidak akan muncul dalam daftar versi paket yang dikembalikan ke perintah seperti`npm view`. [UpdatePackageVersionsStatus API](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html) memungkinkan pengaturan status versi paket dari beberapa versi paket yang sama dalam satu panggilan API. Untuk deskripsi status yang berbeda, lihat[Gambaran umum paket](packages-overview.md).

Gunakan `update-package-versions-status` perintah untuk mengubah status versi paket menjadi`Published`,`Unlisted`, atau`Archived`. Untuk melihat izin IAM yang diperlukan untuk menggunakan perintah, lihat. [Izin IAM yang diperlukan untuk memperbarui status versi paket](#update-package-version-status-iam) Contoh berikut menetapkan status versi 4.1.0 dari paket `chalk` npm ke. `Archived`

```
aws codeartifact update-package-versions-status --domain my_domain
 --domain-owner 111122223333 --repository my_repo --format npm --package chalk 
--versions 4.1.0 --target-status Archived
```

Contoh output:

```
{
    "successfulVersions": {
        "4.1.0": {
            "revision": "+Oz8skWbwY3k8M6SrNIqNj6bVH/ax+CxvkJx+No5j8I=",
            "status": "Archived"
        }
    },
    "failedVersions": {}
}
```

Contoh ini menggunakan paket npm, tetapi perintah bekerja identik untuk format lain. Beberapa versi dapat dipindahkan ke status target yang sama menggunakan satu perintah, lihat contoh berikut.

```
aws codeartifact update-package-versions-status --domain my_domain
 --domain-owner 111122223333 --repository my_repo --format npm --package chalk 
--versions 4.1.0 4.1.1 --target-status Archived
```

Contoh output:

```
{
    "successfulVersions": {
        "4.1.0": {
            "revision": "25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=",
            "status": "Archived"
        },
        "4.1.1": {
            "revision": "+Oz8skWbwY3k8M6SrNIqNj6bVH/ax+CxvkJx+No5j8I=",
            "status": "Archived"
        }
    },
    "failedVersions": {}
}
```

Perhatikan bahwa setelah diterbitkan, versi paket tidak dapat dipindahkan kembali ke `Unfinished` status, sehingga status ini tidak diizinkan sebagai nilai untuk `--target-status` parameter. Untuk memindahkan versi paket ke `Disposed` status, gunakan `dispose-package-versions` perintah sebagai gantinya seperti yang dijelaskan di bawah ini.

## Izin IAM yang diperlukan untuk memperbarui status versi paket
<a name="update-package-version-status-iam"></a>

`update-package-versions-status`Untuk memanggil paket, Anda harus memiliki `codeartifact:UpdatePackageVersionsStatus` izin pada sumber daya paket. Ini berarti Anda dapat memberikan izin untuk menelepon `update-package-versions-status` berdasarkan per paket. Misalnya, kebijakan IAM yang memberikan izin untuk memanggil `update-package-versions-status` paket npm *chalk* akan menyertakan pernyataan seperti berikut ini.

```
{
  "Action": [
    "codeartifact:UpdatePackageVersionsStatus"
  ],
  "Effect": "Allow",
  "Resource": "arn:aws:codeartifact:us-east-1:111122223333:package/my_domain/my_repo/npm//chalk"
}
```

## Memperbarui status untuk paket npm cakupan
<a name="update-package-version-status-scoped-npm"></a>

Untuk memperbarui status versi paket dari versi paket npm dengan cakupan, gunakan `--namespace` parameter. Misalnya, untuk membatalkan daftar versi 8.0.0 dari`@nestjs/core`, gunakan perintah berikut.

```
aws codeartifact update-package-versions-status --domain my_domain
 --domain-owner 111122223333 --repository my_repo --format npm --namespace nestjs 
--package core --versions 8.0.0 --target-status Unlisted
```

## Memperbarui status untuk paket Maven
<a name="update-package-version-status-maven"></a>

Paket Maven selalu memiliki ID grup, yang disebut sebagai namespace di. CodeArtifact Gunakan `--namespace` parameter untuk menentukan ID grup Maven saat memanggil. `update-package-versions-status` Misalnya, untuk mengarsipkan versi 2.13.1 dari paket Maven`org.apache.logging.log4j:log4j`, gunakan perintah berikut.

```
aws codeartifact update-package-versions-status --domain my_domain
 --domain-owner 111122223333 --repository my_repo --format maven 
--namespace org.apache.logging.log4j --package log4j 
--versions 2.13.1 --target-status Archived
```

## Menentukan revisi versi paket
<a name="update-status-specify-package-version-revision"></a>

Revisi versi paket adalah string yang menentukan serangkaian aset dan metadata tertentu untuk versi paket. Anda dapat menentukan revisi versi paket untuk memperbarui status versi paket yang berada dalam keadaan tertentu. Untuk menentukan revisi versi paket, gunakan `--version-revisions` parameter untuk meneruskan satu atau beberapa versi paket yang dipisahkan koma dan pasangan revisi versi paket. Status versi paket hanya akan diperbarui jika revisi versi paket saat ini cocok dengan nilai yang ditentukan.

**catatan**  
`—-versions`Parameter juga harus ditentukan saat menggunakan `--version-revisions` parameter.

```
aws codeartifact update-package-versions-status --domain my_domain 
   --domain-owner 111122223333 --repository my_repo --format npm --package chalk 
   --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8bzVMJ4=" 
   --versions 4.1.0 --target-status Archived
```

Untuk memperbarui beberapa versi dengan satu perintah, teruskan daftar pasangan revisi versi dan versi yang dipisahkan koma ke opsi. `--version-revisions` Contoh perintah berikut mendefinisikan dua versi paket yang berbeda dan pasangan revisi versi paket.

```
aws codeartifact update-package-versions-status --domain my_domain 
 --domain-owner 111122223333 --repository my_repo --format npm 
 --package chalk
 --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=,4.0.0=E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc="  
 --versions 4.1.0 4.0.0 --target-status Published
```

Contoh output:

```
{
    "successfulVersions": {
        "4.0.0": {
            "revision": "E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=",
            "status": "Published"
        },
        "4.1.0": {
            "revision": "25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=",
            "status": "Published"
        }
    },
    "failedVersions": {}
}
```

Saat memperbarui beberapa versi paket, versi yang diteruskan `--version-revisions` harus sama dengan versi yang diteruskan`--versions`. Jika revisi ditentukan secara tidak benar, versi itu tidak akan diperbarui statusnya.

## Menggunakan parameter status yang diharapkan
<a name="using-expected-status"></a>

`update-package-versions-status`Perintah menyediakan `--expected-status` parameter yang mendukung menentukan status saat ini yang diharapkan dari versi paket. Jika status saat ini tidak sesuai dengan nilai yang diteruskan`--expected-status`, status versi paket tersebut tidak akan diperbarui.

Misalnya, di*my\$1repo*, versi 4.0.0 dan 4.1.0 dari paket npm `chalk` saat ini memiliki status. `Published` Panggilan `update-package-versions-status` yang menentukan status yang diharapkan `Unlisted` akan gagal memperbarui kedua versi paket karena ketidakcocokan status.

```
aws codeartifact update-package-versions-status --domain my_domain
--domain-owner 111122223333 --repository my_repo --format npm --package chalk 
--versions 4.1.0 4.0.0 --target-status Archived --expected-status Unlisted
```

Contoh output:

```
{
    "successfulVersions": {},
    "failedVersions": {
        "4.0.0": {
            "errorCode": "MISMATCHED_STATUS",
            "errorMessage": "current status: Published, expected status: Unlisted"
        },
        "4.1.0": {
            "errorCode": "MISMATCHED_STATUS",
            "errorMessage": "current status: Published, expected status: Unlisted"
        }
    }
}
```

## Kesalahan dengan versi paket individual
<a name="update-package-version-status-errors"></a>

Ada beberapa alasan mengapa status versi paket tidak akan diperbarui saat menelepon`update-package-versions-status`. Misalnya, revisi versi paket mungkin telah ditentukan secara tidak benar, atau status yang diharapkan tidak cocok dengan status saat ini. Dalam kasus ini, versi akan disertakan dalam `failedVersions` peta dalam respons API. Jika satu versi gagal, versi lain yang ditentukan dalam panggilan yang sama `update-package-versions-status` mungkin dilewati dan statusnya tidak diperbarui. Versi tersebut juga akan dimasukkan dalam `failedVersions` peta dengan `errorCode` a`SKIPPED`.

Dalam implementasi saat ini`update-package-versions-status`, jika satu atau lebih versi tidak dapat diubah statusnya, semua versi lain akan dilewati. Artinya, semua versi berhasil diperbarui atau tidak ada versi yang diperbarui. Perilaku ini tidak dijamin dalam kontrak API; di masa depan, beberapa versi mungkin berhasil sementara versi lain gagal dalam satu panggilan ke`update-package-versions-status`.

Perintah contoh berikut mencakup kegagalan pembaruan status versi yang disebabkan oleh ketidakcocokan revisi versi paket. Kegagalan pembaruan itu menyebabkan panggilan pembaruan status versi lain dilewati.

```
aws codeartifact update-package-versions-status --domain my_domain
  --domain-owner 111122223333 --repository my_repo 
  --format npm --package chalk 
  --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ=,4.0.0=E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=" 
  --versions 4.1.0 4.0.0 --target-status Archived
```

Contoh output:

```
{
    "successfulVersions": {},
    "failedVersions": {
        "4.0.0": {
            "errorCode": "SKIPPED",
            "errorMessage": "version 4.0.0 is skipped"
        },
        "4.1.0": {
            "errorCode": "MISMATCHED_REVISION",
            "errorMessage": "current revision: 25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=, expected revision: 25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ="
        }
    }
}
```

## Membuang versi paket
<a name="dispose-package-versions"></a>

Status `Disposed` paket memiliki perilaku yang mirip dengan`Archived`, kecuali bahwa aset paket akan dihapus secara permanen CodeArtifact sehingga akun pemilik domain tidak lagi ditagih untuk penyimpanan aset. Untuk informasi selengkapnya tentang setiap status versi paket, lihat[Status versi paket](packages-overview.md#package-version-status). Untuk mengubah status versi paket ke`Disposed`, gunakan `dispose-package-versions` perintah. Kemampuan ini terpisah dari `update-package-versions-status` karena membuang versi paket tidak dapat dibalik. Karena aset paket akan dihapus, status versi tidak dapat diubah kembali ke`Archived`,`Unlisted`, atau`Published`. Satu-satunya tindakan yang dapat diambil pada versi paket yang telah dibuang adalah untuk menghapusnya menggunakan `delete-package-versions` perintah.

`dispose-package-versions`Agar berhasil menelepon, prinsipal IAM pemanggil harus memiliki `codeartifact:DisposePackageVersions` izin pada sumber daya paket.

Perilaku `dispose-package-versions` perintah mirip dengan`update-package-versions-status`, termasuk perilaku `--version-revisions ` dan `--expected-status` opsi yang dijelaskan dalam [revisi versi](#update-status-specify-package-version-revision) dan bagian [status yang diharapkan](#using-expected-status). Misalnya, perintah berikut mencoba untuk membuang versi paket tetapi gagal karena status yang diharapkan tidak cocok.

```
aws codeartifact dispose-package-versions —domain my_domain --domain-owner 111122223333 
--repository my_repo --format npm --package chalk --versions 4.0.0 
--expected-status Unlisted
```

Contoh output:

```
{
    "successfulVersions": {},
    "failedVersions": {
        "4.0.0": {
            "errorCode": "MISMATCHED_STATUS",
            "errorMessage": "current status: Published, expected status: Unlisted"
        }
    }
}
```

Jika perintah yang sama dijalankan lagi dengan a `--expected-status` of`Published`, pembuangan akan berhasil.

```
aws codeartifact dispose-package-versions —domain my_domain --domain-owner 111122223333 
--repository my_repo --format npm --package chalk --versions 4.0.0 
--expected-status Published
```

Contoh output:

```
{
    "successfulVersions": {
        "4.0.0": {
            "revision": "E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=",
            "status": "Disposed"
        }
    },
    "failedVersions": {}
}
```

# Mengedit kontrol asal paket
<a name="package-origin-controls"></a>

Dalam AWS CodeArtifact, versi paket dapat ditambahkan ke repositori dengan menerbitkannya secara langsung, menariknya ke bawah dari repositori hulu, atau menelannya dari repositori publik eksternal. Mengizinkan versi paket dari sebuah paket ditambahkan baik dengan penerbitan langsung maupun menelan dari repositori publik membuat Anda rentan terhadap serangan substitusi ketergantungan. Untuk informasi selengkapnya, lihat [Serangan substitusi ketergantungan](dependency-substitution-attacks.md). Untuk melindungi diri Anda dari serangan substitusi dependensi, Anda dapat mengonfigurasi kontrol asal paket pada paket dalam repositori untuk membatasi bagaimana versi paket tersebut dapat ditambahkan ke repositori.

Mengkonfigurasi kontrol asal paket harus dipertimbangkan oleh tim mana pun yang ingin mengizinkan versi baru dari paket yang berbeda berasal dari kedua sumber internal, seperti penerbitan langsung, dan sumber eksternal, seperti repositori publik. Secara default, kontrol asal paket akan dikonfigurasi berdasarkan bagaimana versi pertama paket ditambahkan ke repositori. Untuk informasi tentang pengaturan kontrol asal paket dan nilai defaultnya, lihat[Pengaturan kontrol asal paket](#package-origin-control-settings).

Untuk menghapus catatan paket setelah menggunakan operasi `put-package-origin-configuration` API, gunakan `delete-package` (lihat[Hapus versi paket atau paket](delete-package.md)).

## Skenario kontrol akses paket umum
<a name="package-origin-control-scenarios"></a>

Bagian ini mencakup beberapa skenario umum ketika versi paket ditambahkan ke CodeArtifact repositori. Pengaturan kontrol asal paket akan diatur untuk paket baru tergantung pada bagaimana versi paket pertama ditambahkan.

Dalam skenario berikut, *paket internal adalah paket* yang diterbitkan langsung dari manajer paket ke repositori Anda, seperti paket yang Anda atau penulis tim Anda dan pertahankan. *Paket eksternal adalah paket* yang ada di repositori publik yang dapat dicerna ke dalam repositori Anda dengan koneksi eksternal.

**Versi paket eksternal diterbitkan untuk paket internal yang ada**

Dalam skenario ini, pertimbangkan paket internal, *PackageA*. Tim Anda menerbitkan versi paket pertama untuk *PackageA* ke repositori. CodeArtifact Karena ini adalah versi paket pertama untuk paket itu, pengaturan kontrol asal paket secara otomatis diatur ke **Publish: Allow** and **Upstream: Block**. Setelah paket ada di repositori Anda, paket dengan nama yang sama dipublikasikan ke repositori publik yang terhubung ke repositori Anda. CodeArtifact Ini bisa berupa percobaan serangan substitusi ketergantungan terhadap paket internal, atau bisa juga kebetulan. Terlepas dari itu, kontrol asal paket dikonfigurasi untuk memblokir konsumsi versi eksternal baru untuk melindungi diri dari serangan potensial.

Pada gambar berikut, *RePoA adalah CodeArtifact repositori* Anda dengan koneksi eksternal ke repositori publik. Repositori Anda berisi versi 1.1 dan 2.1 dari *PackageA*, tetapi versi 3.0 dipublikasikan ke repositori publik. Biasanya, *RepOA* akan menelan versi 3.0 setelah paket diminta oleh manajer paket. Karena konsumsi paket diatur ke **Blokir**, versi 3.0 tidak tertelan ke dalam CodeArtifact repositori Anda dan tidak tersedia untuk manajer paket yang terhubung dengannya.

![\[Grafik sederhana yang menunjukkan versi paket eksternal baru yang diblokir dari repositori publik.\]](http://docs.aws.amazon.com/id_id/codeartifact/latest/ug/images/package-origin-controls-one.png)


**Versi paket internal diterbitkan untuk paket eksternal yang ada**

Dalam skenario ini, sebuah paket, *PackageB* ada secara eksternal di repositori publik yang telah Anda sambungkan ke repositori Anda. Ketika manajer paket yang terhubung ke repositori Anda meminta *PackageB*, versi paket diserap ke dalam repositori Anda dari repositori publik. **Karena ini adalah versi paket pertama dari *PackageB* yang ditambahkan ke repositori Anda, pengaturan asal paket dikonfigurasi untuk **Publish: BLOCK dan Upstream: ALLOW**.** Kemudian, Anda mencoba mempublikasikan versi dengan nama paket yang sama ke repositori. Entah Anda tidak mengetahui paket publik dan mencoba menerbitkan paket yang tidak terkait dengan nama yang sama, atau Anda mencoba menerbitkan versi yang ditambal, atau Anda mencoba untuk secara langsung menerbitkan versi paket persis yang sudah ada secara eksternal. CodeArtifact akan menolak versi yang Anda coba terbitkan, tetapi memungkinkan Anda untuk secara eksplisit mengganti penolakan dan mempublikasikan versi jika perlu.

Pada gambar berikut, *RePoA adalah CodeArtifact repositori* Anda dengan koneksi eksternal ke repositori publik. Repositori Anda berisi versi 3.0 yang dicerna dari repositori publik. Anda ingin mempublikasikan versi 1.1 ke repositori Anda. Biasanya, Anda dapat mempublikasikan versi 1.2 ke *RePoA*, tetapi karena penerbitan diatur ke **Blokir**, versi 1.2 tidak dapat dipublikasikan.

![\[Grafik sederhana yang menunjukkan versi paket eksternal baru yang diblokir dari repositori publik.\]](http://docs.aws.amazon.com/id_id/codeartifact/latest/ug/images/package-origin-controls-two.png)


**Menerbitkan versi paket yang ditambal dari paket eksternal yang ada**

Dalam skenario ini, sebuah paket, *PackageB* ada secara eksternal di repositori publik yang telah Anda sambungkan ke repositori Anda. Ketika manajer paket yang terhubung ke repositori Anda meminta *PackageB*, versi paket diserap ke dalam repositori Anda dari repositori publik. **Karena ini adalah versi paket pertama dari *PackageB* yang ditambahkan ke repositori Anda, pengaturan asal paket dikonfigurasi untuk **Publish: BLOCK dan Upstream: ALLOW**.** Tim Anda memutuskan bahwa perlu mempublikasikan versi paket yang ditambal dari paket ini ke repositori. Untuk dapat mempublikasikan versi paket secara langsung, tim Anda mengubah pengaturan kontrol asal paket menjadi **Publish:** ALLOW dan **Upstream: BLOCK**. Versi paket ini sekarang dapat dipublikasikan langsung ke repositori Anda dan dicerna dari repositori publik. Setelah tim Anda menerbitkan versi paket yang ditambal, tim Anda mengembalikan setelan asal paket ke **Publish: BLOCK dan **Upstream**: ALLOW**.

## Pengaturan kontrol asal paket
<a name="package-origin-control-settings"></a>

Dengan kontrol asal paket, Anda dapat mengonfigurasi bagaimana versi paket dapat ditambahkan ke repositori. Daftar berikut mencakup pengaturan dan nilai kontrol asal paket yang tersedia.

**catatan**  
Pengaturan dan nilai yang tersedia berbeda saat mengonfigurasi kontrol asal pada grup paket. Untuk informasi selengkapnya, lihat [Kontrol asal grup Package](package-group-origin-controls.md).

**Publikasikan**

Pengaturan ini mengonfigurasi apakah versi paket dapat dipublikasikan langsung ke repositori menggunakan manajer paket atau alat serupa.
+ **ALLOW**: Versi Package dapat dipublikasikan secara langsung.
+ **BLOCK**: Versi Package tidak dapat dipublikasikan secara langsung.

**Hulu**

Pengaturan ini mengonfigurasi apakah versi paket dapat dicerna dari eksternal, repositori publik, atau disimpan dari repositori hulu saat diminta oleh manajer paket.
+ **ALLOW**: Setiap versi paket dapat dipertahankan dari repositori lain yang dikonfigurasi sebagai CodeArtifact repositori upstream atau dicerna dari sumber publik dengan koneksi eksternal.
+ **BLOCK**: Versi Package tidak dapat dipertahankan dari CodeArtifact repositori lain yang dikonfigurasi sebagai repositori upstream atau dicerna dari sumber publik dengan koneksi eksternal.

## Pengaturan kontrol asal paket default
<a name="default-package-origin-control-settings"></a>

Pengaturan kontrol asal paket default dikonfigurasi berdasarkan pengaturan kontrol asal grup paket terkait paket. Untuk informasi selengkapnya tentang grup paket dan kontrol asal grup paket, lihat [Bekerja dengan kelompok paket di CodeArtifact](package-groups.md) dan[Kontrol asal grup Package](package-group-origin-controls.md).

Jika sebuah paket dikaitkan dengan grup paket dengan pengaturan pembatasan `ALLOW` untuk setiap jenis pembatasan, kontrol asal paket default untuk paket akan didasarkan pada bagaimana versi pertama paket itu ditambahkan ke repositori.
+ Jika versi paket pertama diterbitkan secara langsung oleh manajer paket, pengaturannya adalah **Publish: ALLOW dan **Upstream:**** BLOCK.
+ Jika versi paket pertama dicerna dari sumber publik, pengaturannya adalah **Publish: BLOCK dan **Upstream:**** ALLOW.

**catatan**  
Paket yang ada di CodeArtifact repositori sebelum sekitar Mei 2022 akan memiliki kontrol asal paket default **Publish: ALLOW dan **Upstream: ALLOW****. Package origin control harus diatur secara manual untuk paket-paket tersebut. Nilai default saat ini telah ditetapkan pada paket baru sejak saat itu, dan mulai diberlakukan ketika fitur diluncurkan pada 14 Juli 2022. Untuk informasi selengkapnya tentang pengaturan kontrol asal paket, lihat[Mengedit kontrol asal paket](#edit-package-origin-controls).

Jika tidak, jika paket dikaitkan dengan grup paket yang memiliki setidaknya satu pengaturan pembatasan `BLOCK` atau`ALLOW_SPECIFIC_REPOSITORIES`, maka pengaturan kontrol asal default untuk paket tersebut akan disetel ke **Publish: ALLOW dan Upstream:** **ALLOW**.

## Bagaimana kontrol asal paket berinteraksi dengan kontrol asal grup paket
<a name="package-origin-controls-interaction-package-groups"></a>

Karena paket memiliki pengaturan kontrol asal, dan grup paket terkait memiliki pengaturan kontrol asal, penting untuk memahami bagaimana kedua pengaturan yang berbeda berinteraksi satu sama lain.

Interaksi antara dua pengaturan adalah bahwa pengaturan `BLOCK` selalu menang atas pengaturan`ALLOW`. Tabel berikut mencantumkan beberapa contoh konfigurasi dan pengaturan kontrol asal yang efektif.


| Pengaturan kontrol asal Package | Pengaturan kontrol asal grup Package | Pengaturan kontrol asal yang efektif | 
| --- | --- | --- | 
| MEMPUBLIKASIKAN: IZINKANHULU: IZINKAN | MEMPUBLIKASIKAN: IZINKANHULU: IZINKAN | MEMPUBLIKASIKAN: IZINKANHULU: IZINKAN | 
| MEMPUBLIKASIKAN: BLOKHULU: IZINKAN | MEMPUBLIKASIKAN: IZINKANHULU: IZINKAN | MEMPUBLIKASIKAN: BLOKHULU: IZINKAN | 
| MEMPUBLIKASIKAN: IZINKANHULU: IZINKAN | MEMPUBLIKASIKAN: IZINKANHULU: BLOK | MEMPUBLIKASIKAN: IZINKANHULU: BLOK | 

Apa artinya ini adalah bahwa paket dengan pengaturan asal **Publish: ALLOW** dan **Upstream:** ALLOW, maka secara efektif menunda pengaturan kontrol asal grup paket terkait.

## Mengedit kontrol asal paket
<a name="edit-package-origin-controls"></a>

Kontrol asal paket dikonfigurasi secara otomatis berdasarkan bagaimana versi paket pertama dari sebuah paket ditambahkan ke repositori, untuk informasi selengkapnya lihat. [Pengaturan kontrol asal paket default](#default-package-origin-control-settings) Untuk menambah atau mengedit kontrol asal paket untuk paket dalam CodeArtifact repositori, lakukan langkah-langkah dalam prosedur berikut.

**Untuk menambah atau mengedit kontrol asal paket (konsol)**

1. Buka AWS CodeArtifact konsol di [https://console.aws.amazon.com/codesuite/codeartifact/home](https://console.aws.amazon.com/codesuite/codeartifact/home).

1. Di panel navigasi, pilih **Repositori, dan pilih repositori** yang berisi paket yang ingin Anda edit. 

1. Dalam tabel **Paket**, cari dan pilih paket yang ingin Anda edit.

1. Dari halaman ringkasan paket, di **kontrol Origin**, pilih **Edit**.

1. Di **kontrol Edit asal**, pilih kontrol asal paket yang ingin Anda atur untuk paket ini. Kedua pengaturan kontrol asal paket, Publish dan Upstream, harus diatur pada saat yang sama.
   + Untuk mengizinkan penerbitan versi paket secara langsung, di **Publikasikan**, pilih **Izinkan**. Untuk memblokir penerbitan versi paket, pilih **Blokir**.
   + ****Untuk memungkinkan konsumsi paket dari repositori eksternal dan menarik paket dari repositori upstream, di sumber Upstream, pilih Izinkan.**** **Untuk memblokir semua konsumsi dan penarikan versi paket dari repositori eksternal dan upstream, pilih Blokir.**

**Untuk menambah atau mengedit kontrol asal paket (AWS CLI)**

1. Jika belum, konfigurasikan AWS CLI dengan mengikuti langkah-langkah di[Menyiapkan dengan AWS CodeArtifact](get-set-up-for-codeartifact.md).

1. Gunakan `put-package-origin-configuration` perintah untuk menambah atau mengedit kontrol asal paket. Ganti bidang berikut:
   + Ganti *my\$1domain* dengan CodeArtifact domain yang berisi paket yang ingin Anda perbarui.
   + Ganti *my\$1repo* dengan CodeArtifact repositori yang berisi paket yang ingin Anda perbarui.
   + Ganti *npm* dengan format paket paket yang ingin Anda perbarui.
   + Ganti *my\$1package* dengan nama paket yang ingin Anda perbarui.
   + Ganti *ALLOW* dan *BLOCK* dengan pengaturan kontrol asal paket yang Anda inginkan.

   ```
   aws codeartifact put-package-origin-configuration --domain my_domain \
   --repository my_repo --format npm --package my_package \ 
   --restrictions publish=ALLOW,upstream=BLOCK
   ```

## Publikasi dan repositori hulu
<a name="package-publishing-upstreams"></a>

CodeArtifact tidak mengizinkan penerbitan versi paket yang ada di repositori upstream yang dapat dijangkau atau repositori publik. Misalnya, anggaplah Anda ingin memublikasikan paket Maven `com.mycompany.mypackage:1.0` ke repositori `myrepo`, dan `myrepo` memiliki repositori hulu dengan koneksi eksternal ke Maven Central. Pertimbangkan skenario berikut.

1. Pengaturan kontrol asal paket aktif `com.mycompany.mypackage` adalah **Publish: ALLOW dan** **Upstream: ALLOW.** Jika `com.mycompany.mypackage:1.0` ada di repositori hulu atau di Maven Central, CodeArtifact menolak setiap upaya untuk mempublikasikannya dengan kesalahan konflik 409. `myrepo` Anda masih dapat mempublikasikan versi yang berbeda, seperti`com.mycompany.mypackage:1.1`.

1. Pengaturan kontrol asal paket aktif `com.mycompany.mypackage` adalah **Publish: ALLOW dan** **Upstream: BLOCK**. Anda dapat mempublikasikan versi apa pun `com.mycompany.mypackage` ke repositori Anda yang belum ada karena versi paket tidak dapat dijangkau.

1. Pengaturan kontrol asal paket aktif `com.mycompany.mypackage` adalah **Publish: BLOCK** dan **Upstream: ALLOW.** Anda tidak dapat mempublikasikan versi paket apa pun langsung ke repositori Anda.