Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
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.
IAMIzin yang diperlukan untuk menyalin paket
Untuk menyalin versi paket CodeArtifact, pengguna panggilan harus memiliki IAM izin 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 IAM akun atau CopyPackageVersions
paket 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 akuncopy-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-owner111122223333
--source-repositorymy_repo
\ --destination-repositoryrepo-2
--packagemy-package
--format npm \ --versions6.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-owner111122223333
--source-repositoryrepo-1
\ --destination-repositoryrepo-2
--format npm --namespacetypes
\ --packagereact
--versions0.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-owner111122223333
\ --source-repositorymy_repo
--destination-repositoryrepo-2
--format maven --namespacecom.google.guava
\ --packageguava
--versions27.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-owner111122223333
\ --source-repositorymy_repo
--destination-repositoryrepo-2
--format npm \ --packagearray-unique
--versions0.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-owner111122223333
\ --source-repositorymy_repo
--destination-repositoryrepo-2
--format npm --packagearray-unique
\ --versions0.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-owner111122223333
\ --source-repositorymy_repo
--destination-repositoryrepo-2
--format npm --packagearray-unique
\ --versions0.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-owner111122223333
--source-repositoryrepo-1
\ --destination-repositoryrepo-2
--format npm --namespacemy-namespace
\ --packagemy-package
--version-revisions0.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-owner111122223333
--source-repositoryrepo-1
\ --destination-repositoryrepo-2
--format npm --namespacemy-namespace
\ --packagemy-package
--version-revisions0.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 lebih lanjut, lihat Revisi versi paket dan CopyPackageVersiondi CodeArtifact APIReferensi.
Menyalin paket npm
Untuk informasi selengkapnya tentang copy-package-versions
perilaku dengan paket npm, lihat tag npm dan. CopyPackageVersions API