Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Implementación de funciones de Lambda de Ruby con imágenes de contenedor

Modo de enfoque
Implementación de funciones de Lambda de Ruby con imágenes de contenedor - AWS Lambda

Hay tres formas de crear una imagen de contenedor para una función de Lambda en Ruby:

sugerencia

Para reducir el tiempo que tardan las funciones de contenedor de Lambda en activarse, consulte Uso de compilaciones de varias fases en la documentación de Docker. Para compilar imágenes de contenedores eficientes, siga Prácticas recomendadas para escribir Dockerfiles.

En esta página, se explica cómo compilar, probar e implementar imágenes de contenedor para Lambda.

Imágenes base de AWS para Ruby

AWS proporciona las siguientes imágenes base para Ruby:

Etiquetas Tiempo de ejecución Sistema operativo Dockerfile Obsolescencia

3.3

Ruby 3.3 Amazon Linux 2023 Dockerfile para Ruby 3.3 en GitHub

31 de marzo de 2027

3.2

Ruby 3.2 Amazon Linux 2 Dockerfile para Ruby 3.2 en GitHub

31 de marzo de 2026

Repositorio de Amazon ECR: gallery.ecr.aws/lambda/ruby

Uso de una imagen base de AWS para Ruby

Para completar los pasos de esta sección, debe disponer de lo siguiente:

Para completar los pasos de esta sección, debe disponer de lo siguiente:

Cómo crear una imagen de contenedor para Ruby
  1. Cree un directorio para el proyecto y, a continuación, cambie a ese directorio.

    mkdir example cd example
  2. Cree un nuevo archivo denominado Gemfile. Aquí se enumeran los paquetes de RubyGems necesarios para la aplicación. AWS SDK para Ruby está disponible en RubyGems. Debe elegir archivos gem de servicios de AWS específicos para instalar. Por ejemplo, para utilizar la gema de Ruby para Lambda, su Gemfile debe tener este aspecto:

    source 'https://rubygems.org' gem 'aws-sdk-lambda'

    Como alternativa, el archivo gem aws-sdk contiene todos los archivos gem de los servicios de AWS disponibles. Este archivo gem es muy grande. Le recomendamos que lo utilice solo si depende de muchos servicios de AWS.

  3. Instale las dependencias especificadas en el Gemfile mediante el paquete de instalación.

    bundle install
  4. Cree un nuevo archivo denominado lambda_function.rb. Puede agregar el siguiente código de función de muestra al archivo para realizar pruebas o utilizar su propio código.

    ejemplo Función de Ruby
    module LambdaFunction class Handler def self.process(event:,context:) "Hello from Lambda!" end end end
  5. Cree un nuevo Dockerfile. El siguiente Dockerfile de ejemplo utiliza una imagen base de AWS. Este Dockerfile utiliza la siguiente configuración:

    • Establezca la propiedad FROM en el URI de la imagen base.

    • Utilice el comando COPY para copiar el código de la función y las dependencias del tiempo de ejecución a {LAMBDA_TASK_ROOT}, una variable de entorno definido de Lambda.

    • Establezca el argumento CMD para el controlador de la función de Lambda.

    Tenga en cuenta que el Dockerfile de ejemplo no incluye una instrucción USER. Al implementar una imagen de contenedor en Lambda, Lambda define automáticamente un usuario predeterminado de Linux con permisos de privilegio mínimo. Esto es diferente del comportamiento estándar de Docker, que utiliza de forma predeterminada el usuario root cuando no se proporciona ninguna instrucción USER.

    ejemplo Dockerfile
    FROM public.ecr.aws/lambda/ruby:3.2 # Copy Gemfile and Gemfile.lock COPY Gemfile Gemfile.lock ${LAMBDA_TASK_ROOT}/ # Install Bundler and the specified gems RUN gem install bundler:2.4.20 && \ bundle config set --local path 'vendor/bundle' && \ bundle install # Copy function code COPY lambda_function.rb ${LAMBDA_TASK_ROOT}/ # Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile) CMD [ "lambda_function.LambdaFunction::Handler.process" ]
  6. Cree la imagen de Docker con el comando docker build. En el siguiente ejemplo se asigna un nombre a la imagen docker-image y se le asigna la etiqueta test. Para que la imagen sea compatible con Lambda, debe usar la opción --provenance=false.

    docker buildx build --platform linux/amd64 --provenance=false -t docker-image:test .
    nota

    El comando especifica la opción --platform linux/amd64 para garantizar que el contenedor sea compatible con el entorno de ejecución de Lambda, independientemente de la arquitectura de la máquina de compilación. Si tiene intención de crear una función de Lambda con la arquitectura del conjunto de instrucciones ARM64, asegúrese de cambiar el comando para utilizar la opción --platform linux/arm64 en su lugar.

Cómo crear una imagen de contenedor para Ruby
  1. Cree un directorio para el proyecto y, a continuación, cambie a ese directorio.

    mkdir example cd example
  2. Cree un nuevo archivo denominado Gemfile. Aquí se enumeran los paquetes de RubyGems necesarios para la aplicación. AWS SDK para Ruby está disponible en RubyGems. Debe elegir archivos gem de servicios de AWS específicos para instalar. Por ejemplo, para utilizar la gema de Ruby para Lambda, su Gemfile debe tener este aspecto:

    source 'https://rubygems.org' gem 'aws-sdk-lambda'

    Como alternativa, el archivo gem aws-sdk contiene todos los archivos gem de los servicios de AWS disponibles. Este archivo gem es muy grande. Le recomendamos que lo utilice solo si depende de muchos servicios de AWS.

  3. Instale las dependencias especificadas en el Gemfile mediante el paquete de instalación.

    bundle install
  4. Cree un nuevo archivo denominado lambda_function.rb. Puede agregar el siguiente código de función de muestra al archivo para realizar pruebas o utilizar su propio código.

    ejemplo Función de Ruby
    module LambdaFunction class Handler def self.process(event:,context:) "Hello from Lambda!" end end end
  5. Cree un nuevo Dockerfile. El siguiente Dockerfile de ejemplo utiliza una imagen base de AWS. Este Dockerfile utiliza la siguiente configuración:

    • Establezca la propiedad FROM en el URI de la imagen base.

    • Utilice el comando COPY para copiar el código de la función y las dependencias del tiempo de ejecución a {LAMBDA_TASK_ROOT}, una variable de entorno definido de Lambda.

    • Establezca el argumento CMD para el controlador de la función de Lambda.

    Tenga en cuenta que el Dockerfile de ejemplo no incluye una instrucción USER. Al implementar una imagen de contenedor en Lambda, Lambda define automáticamente un usuario predeterminado de Linux con permisos de privilegio mínimo. Esto es diferente del comportamiento estándar de Docker, que utiliza de forma predeterminada el usuario root cuando no se proporciona ninguna instrucción USER.

    ejemplo Dockerfile
    FROM public.ecr.aws/lambda/ruby:3.2 # Copy Gemfile and Gemfile.lock COPY Gemfile Gemfile.lock ${LAMBDA_TASK_ROOT}/ # Install Bundler and the specified gems RUN gem install bundler:2.4.20 && \ bundle config set --local path 'vendor/bundle' && \ bundle install # Copy function code COPY lambda_function.rb ${LAMBDA_TASK_ROOT}/ # Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile) CMD [ "lambda_function.LambdaFunction::Handler.process" ]
  6. Cree la imagen de Docker con el comando docker build. En el siguiente ejemplo se asigna un nombre a la imagen docker-image y se le asigna la etiqueta test. Para que la imagen sea compatible con Lambda, debe usar la opción --provenance=false.

    docker buildx build --platform linux/amd64 --provenance=false -t docker-image:test .
    nota

    El comando especifica la opción --platform linux/amd64 para garantizar que el contenedor sea compatible con el entorno de ejecución de Lambda, independientemente de la arquitectura de la máquina de compilación. Si tiene intención de crear una función de Lambda con la arquitectura del conjunto de instrucciones ARM64, asegúrese de cambiar el comando para utilizar la opción --platform linux/arm64 en su lugar.

  1. Inicie la imagen de Docker con el comando docker run. En este ejemplo, docker-image es el nombre de la imagen y test es la etiqueta.

    docker run --platform linux/amd64 -p 9000:8080 docker-image:test

    Este comando ejecuta la imagen como un contenedor y crea un punto de conexión local en localhost:9000/2015-03-31/functions/function/invocations.

    nota

    Si creó la imagen de Docker para la arquitectura del conjunto de instrucciones ARM64, asegúrese de utilizar la opción --platform linux/arm64 en lugar de --platform linux/amd64.

  2. Desde una nueva ventana de terminal, publique un evento en el punto de conexión local.

    Linux/macOS

    En Linux y macOS, ejecute el siguiente comando curl:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

    Este comando invoca la función con un evento vacío y devuelve una respuesta. Si utiliza su propio código de función en lugar del código de función de ejemplo, quizás quiera invocar la función con una carga JSON. Ejemplo:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"payload":"hello world!"}'
    PowerShell

    En PowerShell, ejecute el siguiente comando Invoke-WebRequest:

    Invoke-WebRequest -Uri "http://localhost:9000/2015-03-31/functions/function/invocations" -Method Post -Body '{}' -ContentType "application/json"

    Este comando invoca la función con un evento vacío y devuelve una respuesta. Si utiliza su propio código de función en lugar del código de función de ejemplo, quizás quiera invocar la función con una carga JSON. Ejemplo:

    Invoke-WebRequest -Uri "http://localhost:9000/2015-03-31/functions/function/invocations" -Method Post -Body '{"payload":"hello world!"}' -ContentType "application/json"
  3. Obtenga el ID del contenedor.

    docker ps
  4. Use el comando docker kill para detener el contenedor. En este comando, reemplace 3766c4ab331c por el ID del contenedor del paso anterior.

    docker kill 3766c4ab331c

  1. Inicie la imagen de Docker con el comando docker run. En este ejemplo, docker-image es el nombre de la imagen y test es la etiqueta.

    docker run --platform linux/amd64 -p 9000:8080 docker-image:test

    Este comando ejecuta la imagen como un contenedor y crea un punto de conexión local en localhost:9000/2015-03-31/functions/function/invocations.

    nota

    Si creó la imagen de Docker para la arquitectura del conjunto de instrucciones ARM64, asegúrese de utilizar la opción --platform linux/arm64 en lugar de --platform linux/amd64.

  2. Desde una nueva ventana de terminal, publique un evento en el punto de conexión local.

    Linux/macOS

    En Linux y macOS, ejecute el siguiente comando curl:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

    Este comando invoca la función con un evento vacío y devuelve una respuesta. Si utiliza su propio código de función en lugar del código de función de ejemplo, quizás quiera invocar la función con una carga JSON. Ejemplo:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"payload":"hello world!"}'
    PowerShell

    En PowerShell, ejecute el siguiente comando Invoke-WebRequest:

    Invoke-WebRequest -Uri "http://localhost:9000/2015-03-31/functions/function/invocations" -Method Post -Body '{}' -ContentType "application/json"

    Este comando invoca la función con un evento vacío y devuelve una respuesta. Si utiliza su propio código de función en lugar del código de función de ejemplo, quizás quiera invocar la función con una carga JSON. Ejemplo:

    Invoke-WebRequest -Uri "http://localhost:9000/2015-03-31/functions/function/invocations" -Method Post -Body '{"payload":"hello world!"}' -ContentType "application/json"

    En Linux y macOS, ejecute el siguiente comando curl:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

    Este comando invoca la función con un evento vacío y devuelve una respuesta. Si utiliza su propio código de función en lugar del código de función de ejemplo, quizás quiera invocar la función con una carga JSON. Ejemplo:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"payload":"hello world!"}'
  3. Obtenga el ID del contenedor.

    docker ps
  4. Use el comando docker kill para detener el contenedor. En este comando, reemplace 3766c4ab331c por el ID del contenedor del paso anterior.

    docker kill 3766c4ab331c
Para cargar la imagen en Amazon ECR y crear la función de Lambda
  1. Para autenticar la CLI de Docker en su registro de Amazon ECR, ejecute el comando get-login-password.

    • Establezca el valor de --region en la Región de AWS en la que desee crear el repositorio de Amazon ECR.

    • Reemplace 111122223333 por el ID de su Cuenta de AWS.

    aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-1.amazonaws.com
  2. Cree un repositorio en Amazon ECR con el comando create-repository.

    aws ecr create-repository --repository-name hello-world --region us-east-1 --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
    nota

    El repositorio de Amazon ECR debe estar en la misma Región de AWS que la función de Lambda.

    Si se realiza de la forma correcta, verá una respuesta como la siguiente:

    { "repository": { "repositoryArn": "arn:aws:ecr:us-east-1:111122223333:repository/hello-world", "registryId": "111122223333", "repositoryName": "hello-world", "repositoryUri": "111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world", "createdAt": "2023-03-09T10:39:01+00:00", "imageTagMutability": "MUTABLE", "imageScanningConfiguration": { "scanOnPush": true }, "encryptionConfiguration": { "encryptionType": "AES256" } } }
  3. Copie el valor de repositoryUri de la salida del paso anterior.

  4. Ejecute el comando docker tag para etiquetar la imagen local en su repositorio de Amazon ECR como la versión más reciente. En este comando:

    • docker-image:test es el nombre y la etiqueta de su imagen de Docker. Son el nombre y la etiqueta de la imagen que especificó en el comando docker build.

    • Reemplace <ECRrepositoryUri> por el repositoryUri que ha copiado. Asegúrese de incluir :latest al final del URI.

    docker tag docker-image:test <ECRrepositoryUri>:latest

    Ejemplo:

    docker tag docker-image:test 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  5. Ejecute el comando docker push para implementar la imagen local en el repositorio de Amazon ECR. Asegúrese de incluir :latest al final del URI del repositorio.

    docker push 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  6. Cree un rol de ejecución para la función si aún no tiene uno. Necesitará el nombre de recurso de Amazon (ARN) del rol en el paso siguiente.

  7. Cree la función de Lambda. En ImageUri, especifique el URI del repositorio anterior. Asegúrese de incluir :latest al final del URI.

    aws lambda create-function \ --function-name hello-world \ --package-type Image \ --code ImageUri=111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest \ --role arn:aws:iam::111122223333:role/lambda-ex
    nota

    Puede crear una función con una imagen de una cuenta AWS diferente, siempre que la imagen esté en la misma región que la función de Lambda. Para obtener más información, consulte Permisos entre cuentas de Amazon ECR.

  8. Invoque la función.

    aws lambda invoke --function-name hello-world response.json

    Debería ver una respuesta como la siguiente:

    { "ExecutedVersion": "$LATEST", "StatusCode": 200 }
  9. Para ver la salida de la función, compruebe el archivo response.json.

Para actualizar el código de la función, debe volver a compilar la imagen, cargar la nueva imagen en el repositorio de Amazon ECR y, a continuación, utilizar el comando update-function-code para implementar la imagen en la función de Lambda.

Lambda resuelve la etiqueta de la imagen en un resumen de imagen específico. Esto significa que si apunta la etiqueta de imagen que se utilizó para implementar la función a una nueva imagen en Amazon ECR, Lambda no actualiza automáticamente la función para usar la nueva imagen.

Para implementar la nueva imagen en la misma función de Lambda, debe usar el comando update-function-code, incluso si la etiqueta de la imagen en Amazon ECR sigue siendo la misma. En el siguiente ejemplo, la opción --publish crea una nueva versión de la función con la imagen del contenedor actualizada.

aws lambda update-function-code \ --function-name hello-world \ --image-uri 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest \ --publish

Para cargar la imagen en Amazon ECR y crear la función de Lambda
  1. Para autenticar la CLI de Docker en su registro de Amazon ECR, ejecute el comando get-login-password.

    • Establezca el valor de --region en la Región de AWS en la que desee crear el repositorio de Amazon ECR.

    • Reemplace 111122223333 por el ID de su Cuenta de AWS.

    aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-1.amazonaws.com
  2. Cree un repositorio en Amazon ECR con el comando create-repository.

    aws ecr create-repository --repository-name hello-world --region us-east-1 --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
    nota

    El repositorio de Amazon ECR debe estar en la misma Región de AWS que la función de Lambda.

    Si se realiza de la forma correcta, verá una respuesta como la siguiente:

    { "repository": { "repositoryArn": "arn:aws:ecr:us-east-1:111122223333:repository/hello-world", "registryId": "111122223333", "repositoryName": "hello-world", "repositoryUri": "111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world", "createdAt": "2023-03-09T10:39:01+00:00", "imageTagMutability": "MUTABLE", "imageScanningConfiguration": { "scanOnPush": true }, "encryptionConfiguration": { "encryptionType": "AES256" } } }
  3. Copie el valor de repositoryUri de la salida del paso anterior.

  4. Ejecute el comando docker tag para etiquetar la imagen local en su repositorio de Amazon ECR como la versión más reciente. En este comando:

    • docker-image:test es el nombre y la etiqueta de su imagen de Docker. Son el nombre y la etiqueta de la imagen que especificó en el comando docker build.

    • Reemplace <ECRrepositoryUri> por el repositoryUri que ha copiado. Asegúrese de incluir :latest al final del URI.

    docker tag docker-image:test <ECRrepositoryUri>:latest

    Ejemplo:

    docker tag docker-image:test 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  5. Ejecute el comando docker push para implementar la imagen local en el repositorio de Amazon ECR. Asegúrese de incluir :latest al final del URI del repositorio.

    docker push 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  6. Cree un rol de ejecución para la función si aún no tiene uno. Necesitará el nombre de recurso de Amazon (ARN) del rol en el paso siguiente.

  7. Cree la función de Lambda. En ImageUri, especifique el URI del repositorio anterior. Asegúrese de incluir :latest al final del URI.

    aws lambda create-function \ --function-name hello-world \ --package-type Image \ --code ImageUri=111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest \ --role arn:aws:iam::111122223333:role/lambda-ex
    nota

    Puede crear una función con una imagen de una cuenta AWS diferente, siempre que la imagen esté en la misma región que la función de Lambda. Para obtener más información, consulte Permisos entre cuentas de Amazon ECR.

  8. Invoque la función.

    aws lambda invoke --function-name hello-world response.json

    Debería ver una respuesta como la siguiente:

    { "ExecutedVersion": "$LATEST", "StatusCode": 200 }
  9. Para ver la salida de la función, compruebe el archivo response.json.

Para actualizar el código de la función, debe volver a compilar la imagen, cargar la nueva imagen en el repositorio de Amazon ECR y, a continuación, utilizar el comando update-function-code para implementar la imagen en la función de Lambda.

Lambda resuelve la etiqueta de la imagen en un resumen de imagen específico. Esto significa que si apunta la etiqueta de imagen que se utilizó para implementar la función a una nueva imagen en Amazon ECR, Lambda no actualiza automáticamente la función para usar la nueva imagen.

Para implementar la nueva imagen en la misma función de Lambda, debe usar el comando update-function-code, incluso si la etiqueta de la imagen en Amazon ECR sigue siendo la misma. En el siguiente ejemplo, la opción --publish crea una nueva versión de la función con la imagen del contenedor actualizada.

aws lambda update-function-code \ --function-name hello-world \ --image-uri 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest \ --publish

Uso de una imagen base alternativa con el cliente de interfaz de tiempo de ejecución

Si usa una imagen base exclusiva del sistema operativo o una imagen base alternativa, debe incluir el cliente de interfaz de tiempo de ejecución en su imagen. El cliente de interfaz de tiempo de ejecución extiende el Uso de la API de tiempo de ejecución de Lambda para tiempos de ejecución personalizados, que administra la interacción entre Lambda y el código de la función.

Instale el cliente de interfaz de tiempo de ejecución de Lambda para Ruby mediante el administrador de paquetes de RubyGems.org:

gem install aws_lambda_ric

También puede descargar el cliente de interfaz de tiempo de ejecución de Ruby desde GitHub.

En el siguiente ejemplo, se muestra cómo crear una imagen de contenedor para Ruby con una imagen base que no es de AWS. El Dockerfile de ejemplo utiliza una imagen base oficial de Ruby. El Dockerfile incluye el cliente de interfaz de tiempo de ejecución.

Para completar los pasos de esta sección, debe disponer de lo siguiente:

Para completar los pasos de esta sección, debe disponer de lo siguiente:

Para crear una imagen de contenedor para Ruby a partir de una imagen base alternativa
  1. Cree un directorio para el proyecto y, a continuación, cambie a ese directorio.

    mkdir example cd example
  2. Cree un nuevo archivo denominado Gemfile. Aquí se enumeran los paquetes de RubyGems necesarios para la aplicación. AWS SDK para Ruby está disponible en RubyGems. Debe elegir archivos gem de servicios de AWS específicos para instalar. Por ejemplo, para utilizar la gema de Ruby para Lambda, su Gemfile debe tener este aspecto:

    source 'https://rubygems.org' gem 'aws-sdk-lambda'

    Como alternativa, el archivo gem aws-sdk contiene todos los archivos gem de los servicios de AWS disponibles. Este archivo gem es muy grande. Le recomendamos que lo utilice solo si depende de muchos servicios de AWS.

  3. Instale las dependencias especificadas en el Gemfile mediante el paquete de instalación.

    bundle install
  4. Cree un nuevo archivo denominado lambda_function.rb. Puede agregar el siguiente código de función de muestra al archivo para realizar pruebas o utilizar su propio código.

    ejemplo Función de Ruby
    module LambdaFunction class Handler def self.process(event:,context:) "Hello from Lambda!" end end end
  5. Cree un nuevo Dockerfile. El siguiente Dockerfile utiliza una imagen base de Ruby en lugar de una imagen base de AWS. El Dockerfile incluye el cliente de interfaz de tiempo de ejecución para Ruby, que hace que la imagen sea compatible con Lambda. Como alternativa, puede agregar el cliente de interfaz de tiempo de ejecución al Gemfile de su aplicación.

    • Establezca la propiedad FROM como la imagen base de Ruby.

    • Cree un directorio para el código de la función y una variable de entorno que apunte a ese directorio. En este ejemplo, el directorio es /var/task, que replica el entorno de ejecución de Lambda. Sin embargo, puede elegir cualquier directorio para el código de la función porque el Dockerfile no utiliza una imagen base AWS.

    • Configure ENTRYPOINT como el módulo que desea que el contenedor de Docker ejecute cuando se inicie. En este caso, el módulo es el cliente de interfaz de tiempo de ejecución.

    • Establezca el argumento CMD para el controlador de la función de Lambda.

    Tenga en cuenta que el Dockerfile de ejemplo no incluye una instrucción USER. Al implementar una imagen de contenedor en Lambda, Lambda define automáticamente un usuario predeterminado de Linux con permisos de privilegio mínimo. Esto es diferente del comportamiento estándar de Docker, que utiliza de forma predeterminada el usuario root cuando no se proporciona ninguna instrucción USER.

    ejemplo Dockerfile
    FROM ruby:2.7 # Install the runtime interface client for Ruby RUN gem install aws_lambda_ric # Add the runtime interface client to the PATH ENV PATH="/usr/local/bundle/bin:${PATH}" # Create a directory for the Lambda function ENV LAMBDA_TASK_ROOT=/var/task RUN mkdir -p ${LAMBDA_TASK_ROOT} WORKDIR ${LAMBDA_TASK_ROOT} # Copy Gemfile and Gemfile.lock COPY Gemfile Gemfile.lock ${LAMBDA_TASK_ROOT}/ # Install Bundler and the specified gems RUN gem install bundler:2.4.20 && \ bundle config set --local path 'vendor/bundle' && \ bundle install # Copy function code COPY lambda_function.rb ${LAMBDA_TASK_ROOT}/ # Set runtime interface client as default command for the container runtime ENTRYPOINT [ "aws_lambda_ric" ] # Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile) CMD [ "lambda_function.LambdaFunction::Handler.process" ]
  6. Cree la imagen de Docker con el comando docker build. En el siguiente ejemplo se asigna un nombre a la imagen docker-image y se le asigna la etiqueta test. Para que la imagen sea compatible con Lambda, debe usar la opción --provenance=false.

    docker buildx build --platform linux/amd64 --provenance=false -t docker-image:test .
    nota

    El comando especifica la opción --platform linux/amd64 para garantizar que el contenedor sea compatible con el entorno de ejecución de Lambda, independientemente de la arquitectura de la máquina de compilación. Si tiene intención de crear una función de Lambda con la arquitectura del conjunto de instrucciones ARM64, asegúrese de cambiar el comando para utilizar la opción --platform linux/arm64 en su lugar.

Para crear una imagen de contenedor para Ruby a partir de una imagen base alternativa
  1. Cree un directorio para el proyecto y, a continuación, cambie a ese directorio.

    mkdir example cd example
  2. Cree un nuevo archivo denominado Gemfile. Aquí se enumeran los paquetes de RubyGems necesarios para la aplicación. AWS SDK para Ruby está disponible en RubyGems. Debe elegir archivos gem de servicios de AWS específicos para instalar. Por ejemplo, para utilizar la gema de Ruby para Lambda, su Gemfile debe tener este aspecto:

    source 'https://rubygems.org' gem 'aws-sdk-lambda'

    Como alternativa, el archivo gem aws-sdk contiene todos los archivos gem de los servicios de AWS disponibles. Este archivo gem es muy grande. Le recomendamos que lo utilice solo si depende de muchos servicios de AWS.

  3. Instale las dependencias especificadas en el Gemfile mediante el paquete de instalación.

    bundle install
  4. Cree un nuevo archivo denominado lambda_function.rb. Puede agregar el siguiente código de función de muestra al archivo para realizar pruebas o utilizar su propio código.

    ejemplo Función de Ruby
    module LambdaFunction class Handler def self.process(event:,context:) "Hello from Lambda!" end end end
  5. Cree un nuevo Dockerfile. El siguiente Dockerfile utiliza una imagen base de Ruby en lugar de una imagen base de AWS. El Dockerfile incluye el cliente de interfaz de tiempo de ejecución para Ruby, que hace que la imagen sea compatible con Lambda. Como alternativa, puede agregar el cliente de interfaz de tiempo de ejecución al Gemfile de su aplicación.

    • Establezca la propiedad FROM como la imagen base de Ruby.

    • Cree un directorio para el código de la función y una variable de entorno que apunte a ese directorio. En este ejemplo, el directorio es /var/task, que replica el entorno de ejecución de Lambda. Sin embargo, puede elegir cualquier directorio para el código de la función porque el Dockerfile no utiliza una imagen base AWS.

    • Configure ENTRYPOINT como el módulo que desea que el contenedor de Docker ejecute cuando se inicie. En este caso, el módulo es el cliente de interfaz de tiempo de ejecución.

    • Establezca el argumento CMD para el controlador de la función de Lambda.

    Tenga en cuenta que el Dockerfile de ejemplo no incluye una instrucción USER. Al implementar una imagen de contenedor en Lambda, Lambda define automáticamente un usuario predeterminado de Linux con permisos de privilegio mínimo. Esto es diferente del comportamiento estándar de Docker, que utiliza de forma predeterminada el usuario root cuando no se proporciona ninguna instrucción USER.

    ejemplo Dockerfile
    FROM ruby:2.7 # Install the runtime interface client for Ruby RUN gem install aws_lambda_ric # Add the runtime interface client to the PATH ENV PATH="/usr/local/bundle/bin:${PATH}" # Create a directory for the Lambda function ENV LAMBDA_TASK_ROOT=/var/task RUN mkdir -p ${LAMBDA_TASK_ROOT} WORKDIR ${LAMBDA_TASK_ROOT} # Copy Gemfile and Gemfile.lock COPY Gemfile Gemfile.lock ${LAMBDA_TASK_ROOT}/ # Install Bundler and the specified gems RUN gem install bundler:2.4.20 && \ bundle config set --local path 'vendor/bundle' && \ bundle install # Copy function code COPY lambda_function.rb ${LAMBDA_TASK_ROOT}/ # Set runtime interface client as default command for the container runtime ENTRYPOINT [ "aws_lambda_ric" ] # Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile) CMD [ "lambda_function.LambdaFunction::Handler.process" ]
  6. Cree la imagen de Docker con el comando docker build. En el siguiente ejemplo se asigna un nombre a la imagen docker-image y se le asigna la etiqueta test. Para que la imagen sea compatible con Lambda, debe usar la opción --provenance=false.

    docker buildx build --platform linux/amd64 --provenance=false -t docker-image:test .
    nota

    El comando especifica la opción --platform linux/amd64 para garantizar que el contenedor sea compatible con el entorno de ejecución de Lambda, independientemente de la arquitectura de la máquina de compilación. Si tiene intención de crear una función de Lambda con la arquitectura del conjunto de instrucciones ARM64, asegúrese de cambiar el comando para utilizar la opción --platform linux/arm64 en su lugar.

Utilice el emulador de interfaz de tiempo de ejecución para probar la imagen localmente. Puede crear el emulador en su imagen o usar el procedimiento siguiente para instalarlo en su equipo local.

Para instalar y ejecutar el emulador de interfaz de tiempo de ejecución en su equipo local
  1. Desde el directorio del proyecto, ejecute el siguiente comando para descargar el emulador de interfaz de tiempo de ejecución (arquitectura x86-64) de GitHub e instalarlo en su equipo local.

    Linux/macOS
    mkdir -p ~/.aws-lambda-rie && \ curl -Lo ~/.aws-lambda-rie/aws-lambda-rie https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie && \ chmod +x ~/.aws-lambda-rie/aws-lambda-rie

    Para instalar el emulador arm64, reemplace la URL del repositorio de GitHub en el comando anterior por lo siguiente:

    https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie-arm64
    PowerShell
    $dirPath = "$HOME\.aws-lambda-rie" if (-not (Test-Path $dirPath)) { New-Item -Path $dirPath -ItemType Directory } $downloadLink = "https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie" $destinationPath = "$HOME\.aws-lambda-rie\aws-lambda-rie" Invoke-WebRequest -Uri $downloadLink -OutFile $destinationPath

    Para instalar el emulador arm64, reemplace el $downloadLink con lo siguiente:

    https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie-arm64
  2. Inicie la imagen de Docker con el comando docker run. Tenga en cuenta lo siguiente:

    • docker-image es el nombre de la imagen y test es la etiqueta.

    • aws_lambda_ric lambda_function.LambdaFunction::Handler.process es el ENTRYPOINT seguido del CMD de su Dockerfile.

    Linux/macOS
    docker run --platform linux/amd64 -d -v ~/.aws-lambda-rie:/aws-lambda -p 9000:8080 \ --entrypoint /aws-lambda/aws-lambda-rie \ docker-image:test \ aws_lambda_ric lambda_function.LambdaFunction::Handler.process
    PowerShell
    docker run --platform linux/amd64 -d -v "$HOME\.aws-lambda-rie:/aws-lambda" -p 9000:8080 ` --entrypoint /aws-lambda/aws-lambda-rie ` docker-image:test ` aws_lambda_ric lambda_function.LambdaFunction::Handler.process

    Este comando ejecuta la imagen como un contenedor y crea un punto de conexión local en localhost:9000/2015-03-31/functions/function/invocations.

    nota

    Si creó la imagen de Docker para la arquitectura del conjunto de instrucciones ARM64, asegúrese de utilizar la opción --platform linux/arm64 en lugar de --platform linux/amd64.

  3. Publique un evento en el punto de conexión local.

    Linux/macOS

    En Linux y macOS, ejecute el siguiente comando curl:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

    Este comando invoca la función con un evento vacío y devuelve una respuesta. Si utiliza su propio código de función en lugar del código de función de ejemplo, quizás quiera invocar la función con una carga JSON. Ejemplo:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"payload":"hello world!"}'
    PowerShell

    En PowerShell, ejecute el siguiente comando Invoke-WebRequest:

    Invoke-WebRequest -Uri "http://localhost:9000/2015-03-31/functions/function/invocations" -Method Post -Body '{}' -ContentType "application/json"

    Este comando invoca la función con un evento vacío y devuelve una respuesta. Si utiliza su propio código de función en lugar del código de función de ejemplo, quizás quiera invocar la función con una carga JSON. Ejemplo:

    Invoke-WebRequest -Uri "http://localhost:9000/2015-03-31/functions/function/invocations" -Method Post -Body '{"payload":"hello world!"}' -ContentType "application/json"
  4. Obtenga el ID del contenedor.

    docker ps
  5. Use el comando docker kill para detener el contenedor. En este comando, reemplace 3766c4ab331c por el ID del contenedor del paso anterior.

    docker kill 3766c4ab331c

Utilice el emulador de interfaz de tiempo de ejecución para probar la imagen localmente. Puede crear el emulador en su imagen o usar el procedimiento siguiente para instalarlo en su equipo local.

Para instalar y ejecutar el emulador de interfaz de tiempo de ejecución en su equipo local
  1. Desde el directorio del proyecto, ejecute el siguiente comando para descargar el emulador de interfaz de tiempo de ejecución (arquitectura x86-64) de GitHub e instalarlo en su equipo local.

    Linux/macOS
    mkdir -p ~/.aws-lambda-rie && \ curl -Lo ~/.aws-lambda-rie/aws-lambda-rie https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie && \ chmod +x ~/.aws-lambda-rie/aws-lambda-rie

    Para instalar el emulador arm64, reemplace la URL del repositorio de GitHub en el comando anterior por lo siguiente:

    https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie-arm64
    PowerShell
    $dirPath = "$HOME\.aws-lambda-rie" if (-not (Test-Path $dirPath)) { New-Item -Path $dirPath -ItemType Directory } $downloadLink = "https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie" $destinationPath = "$HOME\.aws-lambda-rie\aws-lambda-rie" Invoke-WebRequest -Uri $downloadLink -OutFile $destinationPath

    Para instalar el emulador arm64, reemplace el $downloadLink con lo siguiente:

    https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie-arm64
    mkdir -p ~/.aws-lambda-rie && \ curl -Lo ~/.aws-lambda-rie/aws-lambda-rie https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie && \ chmod +x ~/.aws-lambda-rie/aws-lambda-rie

    Para instalar el emulador arm64, reemplace la URL del repositorio de GitHub en el comando anterior por lo siguiente:

    https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie-arm64
  2. Inicie la imagen de Docker con el comando docker run. Tenga en cuenta lo siguiente:

    • docker-image es el nombre de la imagen y test es la etiqueta.

    • aws_lambda_ric lambda_function.LambdaFunction::Handler.process es el ENTRYPOINT seguido del CMD de su Dockerfile.

    Linux/macOS
    docker run --platform linux/amd64 -d -v ~/.aws-lambda-rie:/aws-lambda -p 9000:8080 \ --entrypoint /aws-lambda/aws-lambda-rie \ docker-image:test \ aws_lambda_ric lambda_function.LambdaFunction::Handler.process
    PowerShell
    docker run --platform linux/amd64 -d -v "$HOME\.aws-lambda-rie:/aws-lambda" -p 9000:8080 ` --entrypoint /aws-lambda/aws-lambda-rie ` docker-image:test ` aws_lambda_ric lambda_function.LambdaFunction::Handler.process
    docker run --platform linux/amd64 -d -v ~/.aws-lambda-rie:/aws-lambda -p 9000:8080 \ --entrypoint /aws-lambda/aws-lambda-rie \ docker-image:test \ aws_lambda_ric lambda_function.LambdaFunction::Handler.process

    Este comando ejecuta la imagen como un contenedor y crea un punto de conexión local en localhost:9000/2015-03-31/functions/function/invocations.

    nota

    Si creó la imagen de Docker para la arquitectura del conjunto de instrucciones ARM64, asegúrese de utilizar la opción --platform linux/arm64 en lugar de --platform linux/amd64.

  3. Publique un evento en el punto de conexión local.

    Linux/macOS

    En Linux y macOS, ejecute el siguiente comando curl:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

    Este comando invoca la función con un evento vacío y devuelve una respuesta. Si utiliza su propio código de función en lugar del código de función de ejemplo, quizás quiera invocar la función con una carga JSON. Ejemplo:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"payload":"hello world!"}'
    PowerShell

    En PowerShell, ejecute el siguiente comando Invoke-WebRequest:

    Invoke-WebRequest -Uri "http://localhost:9000/2015-03-31/functions/function/invocations" -Method Post -Body '{}' -ContentType "application/json"

    Este comando invoca la función con un evento vacío y devuelve una respuesta. Si utiliza su propio código de función en lugar del código de función de ejemplo, quizás quiera invocar la función con una carga JSON. Ejemplo:

    Invoke-WebRequest -Uri "http://localhost:9000/2015-03-31/functions/function/invocations" -Method Post -Body '{"payload":"hello world!"}' -ContentType "application/json"

    En Linux y macOS, ejecute el siguiente comando curl:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

    Este comando invoca la función con un evento vacío y devuelve una respuesta. Si utiliza su propio código de función en lugar del código de función de ejemplo, quizás quiera invocar la función con una carga JSON. Ejemplo:

    curl "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{"payload":"hello world!"}'
  4. Obtenga el ID del contenedor.

    docker ps
  5. Use el comando docker kill para detener el contenedor. En este comando, reemplace 3766c4ab331c por el ID del contenedor del paso anterior.

    docker kill 3766c4ab331c
Para cargar la imagen en Amazon ECR y crear la función de Lambda
  1. Para autenticar la CLI de Docker en su registro de Amazon ECR, ejecute el comando get-login-password.

    • Establezca el valor de --region en la Región de AWS en la que desee crear el repositorio de Amazon ECR.

    • Reemplace 111122223333 por el ID de su Cuenta de AWS.

    aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-1.amazonaws.com
  2. Cree un repositorio en Amazon ECR con el comando create-repository.

    aws ecr create-repository --repository-name hello-world --region us-east-1 --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
    nota

    El repositorio de Amazon ECR debe estar en la misma Región de AWS que la función de Lambda.

    Si se realiza de la forma correcta, verá una respuesta como la siguiente:

    { "repository": { "repositoryArn": "arn:aws:ecr:us-east-1:111122223333:repository/hello-world", "registryId": "111122223333", "repositoryName": "hello-world", "repositoryUri": "111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world", "createdAt": "2023-03-09T10:39:01+00:00", "imageTagMutability": "MUTABLE", "imageScanningConfiguration": { "scanOnPush": true }, "encryptionConfiguration": { "encryptionType": "AES256" } } }
  3. Copie el valor de repositoryUri de la salida del paso anterior.

  4. Ejecute el comando docker tag para etiquetar la imagen local en su repositorio de Amazon ECR como la versión más reciente. En este comando:

    • docker-image:test es el nombre y la etiqueta de su imagen de Docker. Son el nombre y la etiqueta de la imagen que especificó en el comando docker build.

    • Reemplace <ECRrepositoryUri> por el repositoryUri que ha copiado. Asegúrese de incluir :latest al final del URI.

    docker tag docker-image:test <ECRrepositoryUri>:latest

    Ejemplo:

    docker tag docker-image:test 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  5. Ejecute el comando docker push para implementar la imagen local en el repositorio de Amazon ECR. Asegúrese de incluir :latest al final del URI del repositorio.

    docker push 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  6. Cree un rol de ejecución para la función si aún no tiene uno. Necesitará el nombre de recurso de Amazon (ARN) del rol en el paso siguiente.

  7. Cree la función de Lambda. En ImageUri, especifique el URI del repositorio anterior. Asegúrese de incluir :latest al final del URI.

    aws lambda create-function \ --function-name hello-world \ --package-type Image \ --code ImageUri=111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest \ --role arn:aws:iam::111122223333:role/lambda-ex
    nota

    Puede crear una función con una imagen de una cuenta AWS diferente, siempre que la imagen esté en la misma región que la función de Lambda. Para obtener más información, consulte Permisos entre cuentas de Amazon ECR.

  8. Invoque la función.

    aws lambda invoke --function-name hello-world response.json

    Debería ver una respuesta como la siguiente:

    { "ExecutedVersion": "$LATEST", "StatusCode": 200 }
  9. Para ver la salida de la función, compruebe el archivo response.json.

Para actualizar el código de la función, debe volver a compilar la imagen, cargar la nueva imagen en el repositorio de Amazon ECR y, a continuación, utilizar el comando update-function-code para implementar la imagen en la función de Lambda.

Lambda resuelve la etiqueta de la imagen en un resumen de imagen específico. Esto significa que si apunta la etiqueta de imagen que se utilizó para implementar la función a una nueva imagen en Amazon ECR, Lambda no actualiza automáticamente la función para usar la nueva imagen.

Para implementar la nueva imagen en la misma función de Lambda, debe usar el comando update-function-code, incluso si la etiqueta de la imagen en Amazon ECR sigue siendo la misma. En el siguiente ejemplo, la opción --publish crea una nueva versión de la función con la imagen del contenedor actualizada.

aws lambda update-function-code \ --function-name hello-world \ --image-uri 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest \ --publish

Para cargar la imagen en Amazon ECR y crear la función de Lambda
  1. Para autenticar la CLI de Docker en su registro de Amazon ECR, ejecute el comando get-login-password.

    • Establezca el valor de --region en la Región de AWS en la que desee crear el repositorio de Amazon ECR.

    • Reemplace 111122223333 por el ID de su Cuenta de AWS.

    aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-1.amazonaws.com
  2. Cree un repositorio en Amazon ECR con el comando create-repository.

    aws ecr create-repository --repository-name hello-world --region us-east-1 --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
    nota

    El repositorio de Amazon ECR debe estar en la misma Región de AWS que la función de Lambda.

    Si se realiza de la forma correcta, verá una respuesta como la siguiente:

    { "repository": { "repositoryArn": "arn:aws:ecr:us-east-1:111122223333:repository/hello-world", "registryId": "111122223333", "repositoryName": "hello-world", "repositoryUri": "111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world", "createdAt": "2023-03-09T10:39:01+00:00", "imageTagMutability": "MUTABLE", "imageScanningConfiguration": { "scanOnPush": true }, "encryptionConfiguration": { "encryptionType": "AES256" } } }
  3. Copie el valor de repositoryUri de la salida del paso anterior.

  4. Ejecute el comando docker tag para etiquetar la imagen local en su repositorio de Amazon ECR como la versión más reciente. En este comando:

    • docker-image:test es el nombre y la etiqueta de su imagen de Docker. Son el nombre y la etiqueta de la imagen que especificó en el comando docker build.

    • Reemplace <ECRrepositoryUri> por el repositoryUri que ha copiado. Asegúrese de incluir :latest al final del URI.

    docker tag docker-image:test <ECRrepositoryUri>:latest

    Ejemplo:

    docker tag docker-image:test 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  5. Ejecute el comando docker push para implementar la imagen local en el repositorio de Amazon ECR. Asegúrese de incluir :latest al final del URI del repositorio.

    docker push 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  6. Cree un rol de ejecución para la función si aún no tiene uno. Necesitará el nombre de recurso de Amazon (ARN) del rol en el paso siguiente.

  7. Cree la función de Lambda. En ImageUri, especifique el URI del repositorio anterior. Asegúrese de incluir :latest al final del URI.

    aws lambda create-function \ --function-name hello-world \ --package-type Image \ --code ImageUri=111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest \ --role arn:aws:iam::111122223333:role/lambda-ex
    nota

    Puede crear una función con una imagen de una cuenta AWS diferente, siempre que la imagen esté en la misma región que la función de Lambda. Para obtener más información, consulte Permisos entre cuentas de Amazon ECR.

  8. Invoque la función.

    aws lambda invoke --function-name hello-world response.json

    Debería ver una respuesta como la siguiente:

    { "ExecutedVersion": "$LATEST", "StatusCode": 200 }
  9. Para ver la salida de la función, compruebe el archivo response.json.

Para actualizar el código de la función, debe volver a compilar la imagen, cargar la nueva imagen en el repositorio de Amazon ECR y, a continuación, utilizar el comando update-function-code para implementar la imagen en la función de Lambda.

Lambda resuelve la etiqueta de la imagen en un resumen de imagen específico. Esto significa que si apunta la etiqueta de imagen que se utilizó para implementar la función a una nueva imagen en Amazon ECR, Lambda no actualiza automáticamente la función para usar la nueva imagen.

Para implementar la nueva imagen en la misma función de Lambda, debe usar el comando update-function-code, incluso si la etiqueta de la imagen en Amazon ECR sigue siendo la misma. En el siguiente ejemplo, la opción --publish crea una nueva versión de la función con la imagen del contenedor actualizada.

aws lambda update-function-code \ --function-name hello-world \ --image-uri 111122223333.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest \ --publish
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.