Actualización del estado de la versión del paquete - CodeArtifact

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.

Actualización del estado de la versión del paquete

Cada versión del paquete CodeArtifact tiene un estado que describe el estado actual y la disponibilidad de la versión del paquete. Puede cambiar el estado de la versión del paquete mediante la consola AWS CLI y la consola.

nota

Para obtener más información sobre el estado de la versión del paquete, incluida una lista de los estados disponibles, consulte El estado de la versión del paquete.

Actualizar el estado de la versión del paquete

Establecer el estado de la versión de un paquete permite controlar cómo se puede usar una versión del paquete sin eliminarla por completo del repositorio. Por ejemplo, cuando la versión de un paquete tiene el estado de Unlisted, se puede seguir descargando de forma normal, pero no aparecerá en las listas de versiones de paquetes devueltas a comandos como npm view. UpdatePackageVersionsStatus APIPermite configurar el estado de la versión del paquete de varias versiones del mismo paquete en una sola API llamada. Para obtener una descripción de los diferentes estados, consulte Información general sobre paquetes.

Utilice el comando update-package-versions-status para cambiar el estado de una versión de paquete a Published, Unlisted, o Archived. Para ver los IAM permisos necesarios para usar el comando, consulteIAMPermisos necesarios para actualizar el estado de la versión de un paquete. El siguiente ejemplo establece el estado de la versión 4.1.0 del paquete npm chalk en Archived.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --versions 4.1.0 --target-status Archived

Resultado de ejemplo:

{ "successfulVersions": { "4.1.0": { "revision": "+Oz8skWbwY3k8M6SrNIqNj6bVH/ax+CxvkJx+No5j8I=", "status": "Archived" } }, "failedVersions": {} }

En este ejemplo se utiliza un paquete npm, pero el comando funciona de forma idéntica en otros formatos. Se pueden mover varias versiones al mismo estado de destino con un solo comando; consulte el siguiente ejemplo.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --versions 4.1.0 4.1.1 --target-status Archived

Resultado de ejemplo:

{ "successfulVersions": { "4.1.0": { "revision": "25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=", "status": "Archived" }, "4.1.1": { "revision": "+Oz8skWbwY3k8M6SrNIqNj6bVH/ax+CxvkJx+No5j8I=", "status": "Archived" } }, "failedVersions": {} }

Tenga en cuenta que, una vez publicada, la versión de un paquete no se puede volver a mover al estado Unfinished, por lo que este estado no está permitido como valor para el parámetro --target-status. Para mover la versión del paquete al estado Disposed, utilice el comando dispose-package-versions en su lugar, tal como se describe a continuación.

IAMPermisos necesarios para actualizar el estado de la versión de un paquete

Para llamar a update-package-versions-status para un paquete, debe tener el permiso codeartifact:UpdatePackageVersionsStatus en el recurso del paquete. Esto significa que puede otorgar permiso para llamar a update-package-versions-status por paquete. Por ejemplo, una IAM política que otorga permiso para invocar update-package-versions-status el paquete npm chalk incluiría una declaración como la siguiente.

{ "Action": [ "codeartifact:UpdatePackageVersionsStatus" ], "Effect": "Allow", "Resource": "arn:aws:codeartifact:us-east-1:111122223333:package/my_domain/my_repo/npm//chalk" }

Se está actualizando el estado de un paquete npm específico

Para actualizar el estado de la versión del paquete de una versión del paquete npm con un alcance, utilice el parámetro --namespace. Por ejemplo, para eliminar la versión 8.0.0 de @nestjs/core, utilice el siguiente comando.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --namespace nestjs --package core --versions 8.0.0 --target-status Unlisted

Estado de actualización de un paquete de Maven

Los paquetes de Maven siempre tienen un identificador de grupo, que se denomina espacio de nombres en. CodeArtifact Utilice el parámetro --namespace para especificar el ID de grupo de Maven al llamar a update-package-versions-status. Por ejemplo, para archivar la versión 2.13.1 del paquete Maven org.apache.logging.log4j:log4j, utilice el siguiente comando.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format maven --namespace org.apache.logging.log4j --package log4j --versions 2.13.1 --target-status Archived

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 actualizar el estado de 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 revisiones de versiones del paquete. El estado de la versión de un paquete solo se actualizará si la revisión actual de la versión del paquete coincide con el valor especificado.

nota

El parámetro —-versions también debe definirse cuando se utilice el parámetro --version-revisions.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8bzVMJ4=" --versions 4.1.0 --target-status Archived

Para actualizar varias versiones con un solo comando, pase a las opciones una lista separada por comas de pares de versiones y revisiones a las opciones --version-revisions. El siguiente comando de ejemplo define dos pares diferentes de versiones de paquetes y revisiones de versiones de paquetes.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=,4.0.0=E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=" --versions 4.1.0 4.0.0 --target-status Published

Resultado de ejemplo:

{ "successfulVersions": { "4.0.0": { "revision": "E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=", "status": "Published" }, "4.1.0": { "revision": "25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=", "status": "Published" } }, "failedVersions": {} }

Al actualizar varias versiones de paquetes, las versiones que se han pasado a --version-revisions deben ser las mismas que las versiones pasadas a --versions. Si se especifica una revisión de forma incorrecta, el estado de esa versión no se actualizará.

Uso del parámetro de estado esperado

El comando update-package-versions-status proporciona el parámetro --expected-status que permite especificar el estado actual esperado de una versión del paquete. Si el estado actual no coincide con el valor al que se ha pasado a --expected-status, el estado de esa versión del paquete no se actualizará.

Por ejemplo, en my_repo, las versiones 4.0.0 y 4.1.0 del paquete npm tienen chalk actualmente un estado de. Published Una llamada a update-package-versions-status que especifique el estado esperado de no Unlisted podrá actualizar ambas versiones del paquete debido a la discordancia de estados.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --versions 4.1.0 4.0.0 --target-status Archived --expected-status Unlisted

Resultado de ejemplo:

{ "successfulVersions": {}, "failedVersions": { "4.0.0": { "errorCode": "MISMATCHED_STATUS", "errorMessage": "current status: Published, expected status: Unlisted" }, "4.1.0": { "errorCode": "MISMATCHED_STATUS", "errorMessage": "current status: Published, expected status: Unlisted" } } }

Errores con las versiones individuales de los paquetes

Existen varios motivos por los que el estado de la versión de un paquete no se actualiza cuando se llama a update-package-versions-status. Por ejemplo, es posible que la revisión de la versión del paquete se haya especificado incorrectamente o que el estado esperado no coincida con el estado actual. En estos casos, la versión se incluirá en el failedVersions mapa de la respuesta. API Si una versión falla, es posible que se omitan las demás versiones especificadas en la misma llamada a update-package-versions-status y que su estado no se actualice. Estas versiones también se incluirán en el mapa failedVersions con un errorCode de SKIPPED.

En la implementación actual de update-package-versions-status, si no se puede cambiar el estado de una o más versiones, se omitirán todas las demás versiones. Es decir, todas las versiones se actualizan correctamente o no se actualiza ninguna versión. Este comportamiento no está garantizado en el API contrato; en el futuro, algunas versiones podrían tener éxito mientras que otras podrían fallar en una sola llamadaupdate-package-versions-status.

El siguiente comando de ejemplo incluye un error en la actualización del estado de la versión provocado por una discordancia entre las versiones de un paquete. Ese error de actualización provoca que se omita otra llamada de actualización del estado de la versión.

aws codeartifact update-package-versions-status --domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --version-revisions "4.1.0=25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ=,4.0.0=E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=" --versions 4.1.0 4.0.0 --target-status Archived

Resultado de ejemplo:

{ "successfulVersions": {}, "failedVersions": { "4.0.0": { "errorCode": "SKIPPED", "errorMessage": "version 4.0.0 is skipped" }, "4.1.0": { "errorCode": "MISMATCHED_REVISION", "errorMessage": "current revision: 25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ4=, expected revision: 25/UjBleHs1DZewk+zozoeqH/R80Rc9gL1P8vbzVMJ=" } } }

Eliminación de las versiones de los paquetes

El estado Disposed del paquete tiene un comportamiento similar al del paqueteArchived, con la salvedad de que los activos del paquete se eliminarán permanentemente para CodeArtifact que el almacenamiento de activos deje de facturarse a la cuenta del propietario del dominio. Para obtener más información sobre el estado de cada versión del paquete, consulte El estado de la versión del paquete. Para cambiar el estado de una versión de paquete a Disposed, use el comando dispose-package-versions. Esta capacidad es independiente de la de update-package-versions-status debido a que la eliminación de una versión de paquete no es reversible. Como los activos del paquete se eliminarán, el estado de la versión no se puede volver a cambiar a Archived, Unlisted o Published. La única acción que se puede realizar en una versión de paquete que se ha eliminado es eliminarla mediante el comando delete-package-versions.

Para que la llamada se realice dispose-package-versions correctamente, la persona IAM que realiza la llamada debe tener el codeartifact:DisposePackageVersions permiso correspondiente al recurso del paquete.

El comportamiento del comando dispose-package-versions es similar a update-package-versions-status, incluido el comportamiento de las opciones --version-revisions y --expected-status que se describen en las secciones de revisión de versión y estado esperado. Por ejemplo, el siguiente comando intenta eliminar la versión de un paquete, pero falla debido a un estado esperado que no coincide.

aws codeartifact dispose-package-versions —domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --versions 4.0.0 --expected-status Unlisted

Resultado de ejemplo:

{ "successfulVersions": {}, "failedVersions": { "4.0.0": { "errorCode": "MISMATCHED_STATUS", "errorMessage": "current status: Published, expected status: Unlisted" } } }

Si se vuelve a ejecutar el mismo comando con un --expected-status de Published, la eliminación se realizará correctamente.

aws codeartifact dispose-package-versions —domain my_domain --domain-owner 111122223333 --repository my_repo --format npm --package chalk --versions 4.0.0 --expected-status Published

Resultado de ejemplo:

{ "successfulVersions": { "4.0.0": { "revision": "E3lhBp0RObRTut4pkjV5c1AQGkgSA7Oxtil6hMMzelc=", "status": "Disposed" } }, "failedVersions": {} }