本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在儲存庫之間複製套件
您可以在 中將套件版本從一個儲存庫複製到另一個儲存庫 CodeArtifact。這對於套件提升工作流程或團隊或專案之間共用套件版本等案例很有幫助。來源和目的地儲存庫必須位於相同的網域中,才能複製套件版本。
複製套件所需的IAM許可
若要在 中複製套件版本 CodeArtifact,呼叫使用者必須具有所需的IAM許可,且連接至來源和目的地儲存庫的資源型政策必須具有所需的許可。如需資源型許可政策和 CodeArtifact 儲存庫的詳細資訊,請參閱 儲存庫政策。
呼叫使用者copy-package-versions
必須擁有來源儲存庫的ReadFromRepository
許可,以及目的地儲存庫的CopyPackageVersions
許可。
來源儲存庫必須具有 ReadFromRepository
許可,而目的地儲存庫必須擁有指派給IAM帳戶或使用者複製套件的 CopyPackageVersions
許可。下列政策是使用 put-repository-permissions-policy
命令新增至來源儲存庫或目的地儲存庫的範例儲存庫政策。Replace (取代) 111122223333
具有呼叫 之帳戶的 IDcopy-package-versions
。
注意
如果存在儲存庫政策,呼叫put-repository-permissions-policy
將取代目前的儲存庫政策。您可以使用 get-repository-permissions-policy
命令來查看政策是否存在,如需詳細資訊,請參閱 讀取政策。如果政策確實存在,您可能想要將這些許可新增至該政策,而不是取代它。
範例來源儲存庫許可政策
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" }, "Resource": "*" } ] }
範例目的地儲存庫許可政策
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:CopyPackageVersions" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" }, "Resource": "*" } ] }
複製套件版本
使用 中的 copy-package-versions
命令 CodeArtifact ,將一或多個套件版本從來源儲存庫複製到相同網域中的目的地儲存庫。下列範例會將名為 npm 套件的 6.0.2 和 4.0.0 版my-package
從my_repo
儲存庫複製到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
您可以在單一操作中複製相同套件名稱的多個版本。若要複製不同套件名稱的版本,您必須copy-package-versions
針對每個套件名稱呼叫 。
假設兩個版本都能成功複製,則先前的命令會產生下列輸出。
{ "successfulVersions": { "6.0.2": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, "4.0.0": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }
從上游儲存庫複製套件
通常, copy-package-versions
只會在要複製版本--source-repository
的選項所指定的儲存庫中尋找 。不過,您可以使用 --include-from-upstream
選項,從來源儲存庫及其上游儲存庫複製版本。如果您使用 CodeArtifact SDK,請呼叫 includeFromUpstream
參數設定為 true CopyPackageVersions
API的 。如需詳細資訊,請參閱使用中的上游存儲庫 CodeArtifact。
複製範圍 npm 套件
若要複製範圍內的 npm 套件版本,請使用 --namespace
選項來指定範圍。例如,若要複製套件 @types/react
,請使用 --namespace types
。使用 時,必須省略 @
符號--namespace
。
aws codeartifact copy-package-versions --domain
my_domain
--domain-owner111122223333
--source-repositoryrepo-1
\ --destination-repositoryrepo-2
--format npm --namespacetypes
\ --packagereact
--versions0.12.2
複製 Maven 套件版本
若要在儲存庫之間複製 Maven 套件版本,請指定要複製的套件,方法是將 Maven 群組 ID 與 --namespace
選項一起傳遞,並將 Maven artifactID 與 --name
選項一起傳遞。例如,若要複製單一版本的 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
如果成功複製套件版本,輸出將類似於以下內容。
{ "successfulVersions": { "27.1-jre": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }
來源儲存庫中不存在的版本
如果您指定來源儲存庫中不存在的版本,則複製將會失敗。如果來源儲存庫中存在某些版本,而有些版本不存在,則所有版本將無法複製。在下列範例中,來源儲存庫中存在 npm array-unique
套件的 0.2.0 版,但 5.6.7 版不是:
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
此案例中的輸出類似於以下內容。
{ "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" } } }
SKIPPED
錯誤碼用於指示版本未複製到目的地儲存庫,因為無法複製另一個版本。
已存在於目的地儲存庫中的版本
將套件版本複製到已存在的儲存庫時, CodeArtifact 會比較兩個儲存庫中的套件資產和套件版本層級中繼資料。
如果來源和目的地儲存庫中的套件版本資產和中繼資料相同,則不會執行複本,但操作會被視為成功。這表示 copy-package-versions
是無能的。發生這種情況時,來源和目的地儲存庫中已存在的版本不會列在 的輸出中copy-package-versions
。
在下列範例中,來源儲存庫 中array-unique
存在兩個版本的 npm 套件repo-1
。版本 0.2.1 也存在於目的地儲存庫中,dest-repo
而版本 0.2.0 則不存在。
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
此案例中的輸出類似於以下內容。
{ "successfulVersions": { "0.2.0": { "revision": "Yad+B1QcBq2kdEVrx1E1vSfHJVh8Pr61hBUkoWPGWX0=", "status": "Published" } }, "failedVersions": {} }
0.2.0 版已列在 中,successfulVersions
因為它已成功從來源複製到目的地儲存庫。輸出中不會顯示 0.2.1 版,因為其已存在於目的地儲存庫中。
如果來源和目的地儲存庫中的套件版本資產或中繼資料不同,複製操作將會失敗。您可以使用 --allow-overwrite
參數來強制覆寫。
如果目的地儲存庫中存在某些版本,但有些版本不存在,則所有版本將無法複製。在下列範例中,來源和目的地儲存庫中都有 array-unique
npm 套件的 0.3.2 版,但套件版本的內容不同。版本 0.2.1 存在於來源儲存庫中,但目的地不存在。
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
此案例中的輸出類似於以下內容。
{ "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" } } }
0.2.1 版會標記為 ,SKIPPED
因為其未複製到目的地儲存庫。未複製 ,因為版本 0.3.2 的複本已失敗,因為它已存在於目的地儲存庫中,但在來源和目的地儲存庫中不同。
指定套件版本修訂
套件版本修訂是指定套件版本特定資產和中繼資料集的字串。您可以指定套件版本修訂,以複製處於特定狀態的套件版本。若要指定套件版本修訂,請使用 --version-revisions
參數將一或多個逗號分隔的套件版本和套件版本修訂對傳遞至 copy-package-versions
命令。
注意
您必須使用 指定 --versions
或 --version-revisions
參數copy-package-versions
。您不能同時指定兩者。
下列範例只會複製套件的 0.3.2 版,my-package
如果其存在於具有套件版本修訂 的來源儲存庫中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
下列範例會複製套件 0my-package
.3.2 和 0.3.13 的兩個版本。只有在 的來源儲存庫 0.3.2 版中有修訂,REVISION-1-SAMPLE-6C81EFF7DA55CC
且 0.3.13 版my-package
有修訂 時,才會成功複製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
若要尋找套件版本的修訂版本,請使用 describe-package-version
或 list-package-versions
命令。
如需詳細資訊,請參閱參考 CopyPackageVersion中的 Package 版本修訂和 。 CodeArtifact API
複製 npm 套件
如需使用 npm 套件copy-package-versions
之行為的詳細資訊,請參閱 npm 標籤和 CopyPackageVersions API。