기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
리포지토리 간 패키지 복사
의 한 리포지토리에서 다른 리포지토리로 패키지 버전을 복사할 수 있습니다 CodeArtifact. 이 기능은 패키지 프로모션 워크플로우나 팀 또는 프로젝트 간 패키지 버전 공유 같은 시나리오에 유용합니다. 소스 리포지토리와 대상 리포지토리는 패키지 버전을 복사하는 도메인과 동일한 도메인에 있어야 합니다.
패키지를 복사하는 데 필요한 IAM 권한
에서 패키지 버전을 복사하려면 CodeArtifact호출 사용자에게 필요한 IAM 권한이 있어야 하며 소스 및 대상 리포지토리에 연결된 리소스 기반 정책에 필요한 권한이 있어야 합니다. 리소스 기반 권한 정책 및 CodeArtifact 리포지토리에 대한 자세한 내용은 섹션을 참조하세요 리포지토리 정책.
copy-package-versions
를 호출하는 사용자에게는 소스 리포지토리에 대한 ReadFromRepository
권한과 대상 리포지토리에 대한 CopyPackageVersions
권한이 있어야 합니다.
소스 리포지토리에는 ReadFromRepository
권한이 있어야 하며 대상 리포지토리에는 IAM 계정 또는 사용자 복사 패키지에 할당된 CopyPackageVersions
권한이 있어야 합니다. 다음 정책은 put-repository-permissions-policy
명령을 사용하여 소스 리포지토리 또는 대상 리포지토리에 추가할 예제 리포지토리 정책입니다. Replace 111122223333
를 호출하는 계정의 ID. copy-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 리포지토리에서 동일한 도메인의 대상 리포지토리로 하나 이상의 패키지 버전을 복사합니다. 다음 예제는 my_repo
리포지토리에 있는 my-package
라는 npm 패키지의 버전 6.0.2 및 4.0.0을 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
옵션을 사용하면 소스 리포지토리와 업스트림 리포지토리 모두에서 버전을 복사할 수 있습니다. 를 사용하는 경우 includeFromUpstream
파라미터가 true로 설정된 CopyPackageVersions
API 를 CodeArtifact SDK호출합니다. 자세한 내용은 에서 업스트림 리포지토리로 작업하기 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 패키지 버전을 복사하려면 --namespace
옵션을 적용해 Maven 그룹 ID를 전달하고 --name
옵션을 적용해 Maven artifactID를 전달하여 복사할 패키지를 지정하세요. 예를 들어 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": {} }
소스 리포지토리에 없는 버전
소스 리포지토리에 없는 버전을 지정하면 복사가 되지 않습니다. 소스 리포지토리에 있는 버전도 있고 없는 버전도 있다면, 모든 버전이 복사되지 않습니다. 다음 예제에서 array-unique
npm 패키지의 버전 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
의 출력에 나열되지 않습니다.
다음 예제에서는 npm 패키지 array-unique
의 두 버전이 소스 리포지토리 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
명령에 전달합니다.
참고
copy-package-versions
가 있는 --versions
또는 --version-revisions
파라미터를 지정해야 합니다. 둘 다 지정할 수는 없습니다.
다음 예제에서는 패키지 버전 개정 REVISION-1-SAMPLE-6C81EFF7DA55CC
와 함께 소스 리포지토리에 존재하는 패키지 my-package
의 버전 0.3.2만 복사합니다.
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
다음 예제에서는 패키지 my-package
의 두 버전(0.3.2 및 0.3.13)을 복사합니다. my-package
의 소스 리포지토리 버전 0.3.2에 개정 REVISION-1-SAMPLE-6C81EFF7DA55CC
가 있고 버전 0.3.13에 개정 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
명령을 사용합니다.
자세한 내용은 CodeArtifact API 참조CopyPackageVersion의 패키지 버전 개정 및 섹션을 참조하세요.
npm 패키지 복사
npm 패키지의 copy-package-versions
동작에 대한 자세한 내용은 npm 태그 및 를 CopyPackageVersions API참조하세요.