Menyalin paket antar-repositori - CodeArtifact

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

Menyalin paket antar-repositori

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

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

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 lihatMembaca kebijakan. Jika ada kebijakan, Anda mungkin ingin menambahkan izin ini ke sana alih-alih menggantinya.

Contoh kebijakan izin repositori sumber

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

Contoh kebijakan izin repositori tujuan

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

Menyalin versi paket

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

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.

Menyalin paket npm dalam lingkup

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

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

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

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

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 dan CopyPackageVersiondi Referensi CodeArtifact API.

Menyalin paket npm

Untuk informasi selengkapnya tentang copy-package-versions perilaku dengan paket npm, lihat tag npm dan API. CopyPackageVersions