in

Agregue sus gemas Ruby a AWS CodeArtifact | Servicios web de Amazon

Actualizado el 8 de mayo de 2024: Actualicé el comando para recolectar RUBYGEMS_HOST para suprimir el seguimiento /


Los desarrolladores de Ruby ahora pueden utilizar AWS CodeArtifact para almacenar y recuperar de forma segura sus gemas. CodeArtifact se integra con herramientas de desarrollo estándar como gem y bundler.

Las aplicaciones suelen utilizar numerosos paquetes para acelerar el desarrollo proporcionando código reutilizable para tareas comunes como acceso a la red, criptografía o manipulación de datos. Los desarrolladores también incorporan SDK, como los SDK de AWS, para acceder a servicios remotos. Estos paquetes pueden provenir de su organización o de terceros, como proyectos de código abierto. La gestión de paquetes y dependencias es parte integral del desarrollo de software. Lenguajes como Java, C#, JavaScript, Swift y Python tienen herramientas para descargar y resolver dependencias, y los desarrolladores de Ruby suelen utilizar gem y bundler.

Sin embargo, el uso de paquetes de terceros presenta desafíos legales y de seguridad. Las organizaciones deben asegurarse de que las licencias de paquetes sean compatibles con sus proyectos y no violen la propiedad intelectual. También deben verificar que el código incluido sea seguro y no introduzca vulnerabilidades, una táctica conocida como ataque a la cadena de suministro. Para abordar estos desafíos, las organizaciones suelen utilizar servidores de paquetes privados. Los desarrolladores solo pueden utilizar paquetes examinados por equipos legales y de seguridad disponibles a través de repositorios privados.

CodeArtifact es un servicio administrado que permite la distribución segura de paquetes a equipos de desarrolladores internos sin administrar la infraestructura subyacente. CódigoArtefacto ahora admite gemas Ruby además de mpn, PyPI, experto, NuGet, SwiftPMy formatos genéricos.

Puede publicar y descargar dependencias de gemas Ruby desde su repositorio CodeArtifact en la nube de AWS, trabajando con herramientas existentes como gem y bundler. Después de almacenar paquetes en CodeArtifact, puede hacer referencia a ellos en su Gemfile. Luego, su sistema de compilación descargará los paquetes aprobados del repositorio de CodeArtifact durante el proceso de compilación.

Cómo empezar
Imagine que estoy trabajando en un paquete para compartir con otros equipos de desarrollo de mi organización.

En esta demostración, les muestro cómo preparo mi entorno, subo el paquete al repositorio y uso esta compilación de paquete específica como una dependencia para mi proyecto. Me concentro en los pasos específicos de los paquetes Ruby. Puede leer el tutorial escrito por mi colega Steven para comenzar con CodeArtifact.

Utilizo una cuenta de AWS que tiene un repositorio de paquetes (MyGemsRepo) y dominio (stormacq-test) ya configurado.

CodeArtifact - Repositorio Ruby

Para permitir que las herramientas de Ruby accedan a mi repositorio de CodeArtifact, empiezo recopilando un token de autenticación de CodeArtifact.

export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token \
                                     --domain stormacq-test              \
                                     --domain-owner 012345678912         \
                                     --query authorizationToken          \
                                     --output text`

export GEM_HOST_API_KEY="Bearer $CODEARTIFACT_AUTH_TOKEN"

Tenga en cuenta que el token de autenticación caduca después de 12 horas. Debo repetir este comando después de 12 horas para obtener una ficha nueva.

Luego, solicito el punto final del repositorio. paso el domain nombre y domain owner (el ID de la cuenta de AWS). Observe la --format ruby opción.

export RUBYGEMS_HOST=`aws codeartifact get-repository-endpoint  \
                           --domain stormacq-test               \
                           --domain-owner 012345678912          \
                           --format ruby                        \
                           --repository MyGemsRepo              \
                           --query repositoryEndpoint           \
                           --output text | sed 's:/*$::'`

Ahora que tengo el punto final del repositorio y un token de autenticación, gem Usaré estos valores de variables de entorno para conectarme a mi repositorio de paquetes privado.

Creo un proyecto muy simple, lo construyo y lo envío al repositorio de paquetes.

CodeArtifact: creación y envío de un paquete personalizado

$ gem build hola.gemspec 

Successfully built RubyGem
  Name: hola-codeartifact
  Version: 0.0.0
  File: hola-codeartifact-0.0.0.gem
  
$ gem push hola-codeartifact-0.0.0.gem 
Pushing gem to https://stormacq-test-486652066693.d.codeartifact.us-west-2.amazonaws.com/ruby/MyGemsRepo...

Verifico en la consola que el paquete está disponible.

CodeArtifact: el paquete Hola está presente

Ahora que el paquete está disponible, puedo usarlo en mis proyectos como siempre. Esto implica configurar el local ~/.gemrc archivo en mi máquina. Sigo las instrucciones proporcionadas por la consola y me aseguro de reemplazar ${CODEARTIFACT_AUTH_TOKEN} con su valor real.

CodeArtifact: instrucciones de la consola para conectarse al repositorio

Una vez ~/.gemrc está configurado correctamente, puedo instalar gemas como de costumbre. Se descargarán de mi repositorio privado de gemas.

$ gem install hola-codeartifact

Fetching hola-codeartifact-0.0.0.gem
Successfully installed hola-codeartifact-0.0.0
Parsing documentation for hola-codeartifact-0.0.0
Installing ri documentation for hola-codeartifact-0.0.0
Done installing documentation for hola-codeartifact after 0 seconds
1 gem installed

Instalar desde arriba
También puedo asociar mi repositorio con una fuente ascendente. Automáticamente buscará gemas desde arriba cuando solicite una.

Para asociar el repositorio con rubygems.org, uso la consola o escribo

aws codeartifact  associate-external-connection \
                   --domain stormacq-test       \
                   --repository MyGemsRepo      \
                   --external-connection public:ruby-gems-org

{
    "repository": {
        "name": "MyGemsRepo",
        "administratorAccount": "012345678912",
        "domainName": "stormacq-test",
        "domainOwner": "012345678912",
        "arn": "arn:aws:codeartifact:us-west-2:012345678912:repository/stormacq-test/MyGemsRepo",
        "upstreams": [],
        "externalConnections": [
            {
                "externalConnectionName": "public:ruby-gems-org",
                "packageFormat": "ruby",
                "status": "AVAILABLE"
            }
        ],
        "createdTime": "2024-04-12T12:58:44.101000+02:00"
    }
}

Una vez asociado, puedo extraer cualquier gema. CódigoArtefacto. Obtendrá automáticamente paquetes desde el origen cuando no estén disponibles localmente.

$ gem install rake 

Fetching rake-13.2.1.gem
Successfully installed rake-13.2.1
Parsing documentation for rake-13.2.1
Installing ri documentation for rake-13.2.1
Done installing documentation for rake after 0 seconds
1 gem installed

Utilizo la consola para verificar el rake El paquete ya está disponible en mi repositorio.

Cosas que saber
Hay algunas cosas que debe tener en cuenta antes de cargar sus primeros paquetes Ruby.

Precios y disponibilidad
Los costos de CodeArtifact para los paquetes Ruby son los mismos que para los otros formatos de paquetes que ya son compatibles. La facturación de CodeArtifact depende de tres métricas: el almacenamiento (medido en GB por mes), la cantidad de solicitudes y la transferencia de datos a Internet o a otras regiones de AWS. La transferencia de datos a servicios de AWS en la misma región no tiene costo, lo que significa que puede ejecutar sus trabajos de integración y entrega continua (CI/CD) en Amazon Elastic Compute Cloud (Amazon EC2) o AWS CodeBuild, por ejemplo, sin incurrir en un cargo por la Transferencia de datos de CodeArtifact. Como de costumbre, la página de precios tiene los detalles.

Los paquetes CodeArtifact para Ruby están disponibles en las 13 regiones donde CodeArtifact está disponible.

Ahora, ¡compila tus aplicaciones Ruby y sube tus paquetes privados a CodeArtifact!

— seb



Fuente

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

GIPHY App Key not set. Please check settings

Este altavoz Bluetooth resistente al agua ofrece sonido envolvente de 360° a un precio mejor que el de Amazon, ahora $100

hacker

Los grupos nacionalistas chinos están lanzando ciberataques, a menudo en contra de los deseos del gobierno.