

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

# 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) 