es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Clave y secreto de AWS para el script de Docker R que utiliza feather desplegado en ECR.

En mi máquina local algo como esto funciona bien:

library(arrow)
library(aws.s3)

Sys.setenv(
    "AWS_ACCESS_KEY_ID" = Sys.getenv("awsaccesskey"),
    "AWS_SECRET_ACCESS_KEY" = Sys.getenv("awssecret"),
    "AWS_DEFAULT_REGION" = "eu-west-2"
)

feather_data <- s3read_using(read_feather, bucket = "amazingbucket", object = "somefile.feather")

Si envuelvo esto en una imagen de Docker y quiero evitar codificar en duro AWS ACCESS KEY ID + AWS SECRET ACCESS KEY, los cuales se obtienen aquí desde las variables de entorno de Windows, ¿cómo obtiene ECR esta información?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en r, docker, amazon-s3, amazon-ecr y aws.s3, recomiendo utilizar variables de entorno para pasar los valores de AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY al contenedor de Docker. Puedes configurar estas variables de entorno en el Dockerfile o al ejecutar el contenedor con la opción -e.

    Por ejemplo, puedes modificar el código proporcionado de la siguiente manera:

    library(arrow)
    library(aws.s3)
    
    feather_data <- s3read_using(read_feather, bucket = "amazingbucket", object = "somefile.feather",
                        key = Sys.getenv("AWS_ACCESS_KEY_ID"),
                        secret = Sys.getenv("AWS_SECRET_ACCESS_KEY"))
    
    

    Luego, puedes configurar las variables de entorno en el Dockerfile utilizando el comando ENV:

    FROM rocker/tidyverse:latest
    
    ENV AWS_ACCESS_KEY_ID=tu_access_key_id
    ENV AWS_SECRET_ACCESS_KEY=tu_secret_access_key
    
    # Instalar los paquetes requeridos
    RUN R -e "install.packages(c('arrow', 'aws.s3'))"
    

    Alternativamente, al ejecutar el contenedor de Docker, puedes utilizar la opción -e para configurar las variables de entorno:

    docker run -e AWS_ACCESS_KEY_ID=tu_access_key_id -e AWS_SECRET_ACCESS_KEY=tu_secret_access_key tu-imagen
    

    Al utilizar variables de entorno, puedes evitar codificar de manera fija los valores de AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY en tu código o Dockerfile, aumentando así la seguridad y flexibilidad.

Comments are closed.