Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Copiar paquetes entre repositorios
Puede copiar versiones de paquetes de un repositorio a otro en CodeArtifact. Esto puede resultar útil en situaciones como los flujos de trabajo de promoción de paquetes o el intercambio de versiones de paquetes entre equipos o proyectos. Los repositorios de origen y destino deben estar en el mismo dominio para copiar versiones de paquetes.
IAMPermisos necesarios para copiar paquetes
Para copiar las versiones de los paquetes CodeArtifact, el usuario que realiza la llamada debe tener IAM los permisos necesarios y la política basada en recursos adjunta a los repositorios de origen y destino debe tener los permisos necesarios. Para obtener más información sobre las políticas de permisos y los repositorios basados en recursos, consulte. CodeArtifact Políticas de repositorios
El usuario que realiza la llamada a copy-package-versions
debe tener el permiso ReadFromRepository
en el repositorio de origen y el permiso CopyPackageVersions
en el repositorio de destino.
El repositorio de origen debe tener el ReadFromRepository
permiso y el repositorio de destino debe tener el CopyPackageVersions
permiso asignado a la IAM cuenta o al usuario que copia los paquetes. Las siguientes políticas son ejemplos de políticas de repositorio que se deben añadir al repositorio de origen o al repositorio de destino con el comando put-repository-permissions-policy
. Reemplazar 111122223333
con el identificador de la cuenta que realiza la llamadacopy-package-versions
.
nota
La llamada put-repository-permissions-policy
sustituirá a la política de repositorio actual, si existe alguna. Puede usar el comando get-repository-permissions-policy
para comprobar si existe una política; para obtener más información, consulte Leer una política. Si existe una política, es posible que desee agregarle estos permisos en lugar de reemplazarla.
Ejemplo de política de permisos del repositorio de origen
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:ReadFromRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" }, "Resource": "*" } ] }
Ejemplo de política de permisos del repositorio de destino
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:CopyPackageVersions" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:root" }, "Resource": "*" } ] }
Copiar versiones de los paquetes
Use el copy-package-versions
comando in CodeArtifact para copiar una o más versiones de paquetes de un repositorio de origen a un repositorio de destino del mismo dominio. El siguiente ejemplo copiará las versiones 6.0.2 y 4.0.0 de un paquete npm denominado my-package
del repositorio my_repo
al repositorio 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
Puede copiar varias versiones del mismo nombre de paquete en una sola operación. Para copiar versiones de distintos nombres de paquetes, debe llamar a copy-package-versions
para cada una.
El comando anterior producirá el siguiente resultado, suponiendo que ambas versiones se hayan copiado correctamente.
{ "successfulVersions": { "6.0.2": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" }, "4.0.0": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }
Copiar un paquete de los repositorios originales
Normalmente, copy-package-versions
solo busca en el repositorio especificado por la opción --source-repository
las versiones que desee copiar. Sin embargo, puede copiar versiones tanto del repositorio de origen como de sus repositorios anteriores mediante la opción --include-from-upstream
. Si usa el CodeArtifact SDK, llame al CopyPackageVersions
API con el includeFromUpstream
parámetro establecido en true. Para obtener más información, consulte Trabajar con repositorios ascendentes en CodeArtifact.
Copiar un paquete npm con alcance
Para copiar una versión del paquete npm en un alcance, utilice la opción --namespace
para especificar el alcance. Por ejemplo, para copiar el paquete @types/react
, utilice --namespace types
. Se debe omitir el símbolo @
cuando se utilice --namespace
.
aws codeartifact copy-package-versions --domain
my_domain
--domain-owner111122223333
--source-repositoryrepo-1
\ --destination-repositoryrepo-2
--format npm --namespacetypes
\ --packagereact
--versions0.12.2
Copiar las versiones de los paquetes de Maven
Para copiar versiones de paquetes de Maven entre repositorios, especifique el paquete que desea copiar pasando el ID de grupo de Maven con la opción --namespace
y el Maven ArtifactID con la opción --name
. Por ejemplo, para copiar una sola versión de: 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
Si se copia correctamente la versión del paquete, el resultado será similar al que se incluye a continuación.
{ "successfulVersions": { "27.1-jre": { "revision": "REVISION-1-SAMPLE-6C81EFF7DA55CC", "status": "Published" } }, "failedVersions": {} }
Versiones que no existen en el repositorio de origen
Si especifica una versión que no existe en el repositorio de origen, se producirá un error en la copia. Si existen algunas versiones en el repositorio de origen y otras no, no se copiarán todas las versiones. En el siguiente ejemplo, la versión 0.2.0 del paquete npm array-unique
está presente en el repositorio de origen, pero la versión 5.6.7 no:
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
El resultado en esta situación será similar al siguiente.
{ "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" } } }
El código de error SKIPPED
se usa para indicar que la versión no se copió en el repositorio de destino porque no se pudo copiar otra versión.
Versiones que ya existen en el repositorio de destino
Cuando la versión de un paquete se copia en un repositorio donde ya existe, CodeArtifact compara los activos del paquete y los metadatos a nivel de versión del paquete en los dos repositorios.
Si los activos y los metadatos de la versión del paquete son idénticos en los repositorios de origen y destino, no se realiza una copia, pero la operación se considera correcta. Esto significa que copy-package-versions
es idempotente. Cuando esto ocurre, la versión que ya estaba presente en los repositorios de origen y destino no aparecerá en la salida de copy-package-versions
.
En el siguiente ejemplo, hay dos versiones del paquete npm array-unique
en el repositorio de origen repo-1
. La versión 0.2.1 también está presente en el repositorio de destino dest-repo
y la versión 0.2.0 no.
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
El resultado en esta situación será similar al siguiente.
{ "successfulVersions": { "0.2.0": { "revision": "Yad+B1QcBq2kdEVrx1E1vSfHJVh8Pr61hBUkoWPGWX0=", "status": "Published" } }, "failedVersions": {} }
La versión 0.2.0 aparece en la lista successfulVersions
porque se copió correctamente del repositorio de origen al de destino. La versión 0.2.1 no se muestra en la salida porque ya estaba presente en el repositorio de destino.
Si los activos o los metadatos de la versión del paquete difieren en los repositorios de origen y destino, la operación de copia fallará. Puede usar el parámetro --allow-overwrite
para forzar una sobrescritura.
Si existen algunas versiones en el repositorio de destino y otras no, no se copiarán todas las versiones. En el siguiente ejemplo, la versión 0.3.2 del paquete npm array-unique
está presente en los repositorios de origen y de destino, pero el contenido de la versión del paquete es diferente. La versión 0.2.1 está presente en el repositorio de origen pero no en el de destino.
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
El resultado en esta situación será similar al siguiente.
{ "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" } } }
La versión 0.2.1 está marcada como SKIPPED
porque no se copió en el repositorio de destino. No se copió porque la copia de la versión 0.3.2 falló porque ya estaba presente en el repositorio de destino, pero no era idéntica en los repositorios de origen y destino.
Especificación de una versión de paquete
La revisión de la versión de un paquete es una cadena que especifica un conjunto específico de activos y metadatos para una versión de paquete. Puede especificar una revisión de la versión del paquete para copiar las versiones del paquete que se encuentran en un estado específico. Para especificar una revisión de la versión del paquete, utilice el parámetro --version-revisions
para pasar una o más versiones del paquete separadas por comas y los pares de revisión de la versión del paquete al comando copy-package-versions
.
nota
Debe especificar el parámetro --versions
o --version-revisions
con copy-package-versions
. No puede especificar ambos.
El siguiente ejemplo solo copiará la versión 0.3.2 del paquete my-package
si está presente en el repositorio de origen con la versión revisada del paquete 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
En el siguiente ejemplo, se copian dos versiones del paquete my-package
, la 0.3.2 y la 0.3.13. La copia solo se realizará correctamente si en el repositorio de origen la versión 0.3.2 de my-package
tiene una revisión REVISION-1-SAMPLE-6C81EFF7DA55CC
y la versión 0.3.13 tiene una revisión 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
Para buscar las revisiones de una versión de paquete, utilice el comando describe-package-version
o list-package-versions
.
Para obtener más información, consulte Revisión de la versión del paquete y CopyPackageVersionen la CodeArtifact APIReferencia.
Copiar paquetes npm
Para obtener más información sobre copy-package-versions
el comportamiento de los paquetes npm, consulte las etiquetas npm y. CopyPackageVersions API