|
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.
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.
$ 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.
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.
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!
GIPHY App Key not set. Please check settings