

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.

# Empaquetado de una compilación de servidor de juegos para su implementación
<a name="gamelift-build-intro"></a>

Prepare el software de servidor de juegos para la implementación en recursos de alojamiento. Una vez implementado, el software se instala en cada recurso de alojamiento y, a continuación, se inician uno o más procesos del servidor de juegos y se preparan para alojar las sesiones de juego de los jugadores.

La preparación de una compilación de servidor de juegos varía en función del tipo de opciones de alojamiento de Amazon GameLift Servers que se esté utilizando. Todas las compilaciones de servidor de juegos deben estar integradas con el SDK del servidor de Amazon GameLift Servers, tal como se describe en [Integración de un servidor de juegos con Amazon GameLift Servers](gamelift-sdk-server.md).

En los temas de esta sección, se proporcionan instrucciones sobre cómo preparar el software para la implementación en los siguientes escenarios. 
+ Para el EC2 alojamiento gestionado, empaquete el software de su servidor y cárguelo Amazon GameLift Servers para su implementación.
+ Para el alojamiento de contenedores administrados, cree una imagen de contenedor con el software de servidor y guárdela en Amazon Elastic Container Registry para su implementación.
+ Para el alojamiento con Amazon GameLift Servers Anywhere, empaquete el software de servidor según corresponda para instalarlo en sus propios recursos de alojamiento.

**nota**  
Si está implementando un script configurado de Amazon GameLift Servers Realtime, consulte [Carga de un script para Amazon GameLift Servers Realtime](https://docs.aws.amazon.com/gameliftservers/latest/realtimeguide/realtime-script-uploading.html).

**Topics**
+ [Creación de una compilación de servidor de juegos para Amazon GameLift Servers](gamelift-build-cli-uploading.md)
+ [Creación de una imagen de contenedor para Amazon GameLift Servers](containers-prepare-images.md)

# Creación de una compilación de servidor de juegos para Amazon GameLift Servers
<a name="gamelift-build-cli-uploading"></a>

Después de integrar el servidor de juegos con Amazon GameLift Servers (consulte [Preparación de un juego para su alojamiento con Amazon GameLift Servers](integration-intro.md)), instale el software del servidor de juegos en los recursos de computación para el alojamiento. Este proceso varía en función del tipo de alojamiento de Amazon GameLift Servers que esté usando.

## Implementación para el alojamiento administrado
<a name="gamelift-build-custom-upload"></a>

Si utiliza el alojamiento de EC2 administrado por Amazon GameLift Servers, debe empaquetar el software del servidor de juegos y cargarlo en Amazon GameLift Servers. Al crear una flota administrada, Amazon GameLift Servers la implementa automáticamente en cada instancia de la flota. 

En los temas de esta sección se describe cómo empaquetar los archivos de compilación para cargarlos, cómo crear un script de instalación de compilación opcional y, a continuación, cómo cargar los archivos mediante [AWS Command Line Interface (AWS CLI)](https://aws.amazon.com/cli/) o el AWS SDK.

## Implementación para el alojamiento en Anywhere
<a name="gamelift-build-custom-anywhere"></a>

Si utiliza flotas de Amazon GameLift Servers Anywhere para el alojamiento autoadministrado, deberá instalar el software del servidor de juegos en cada uno de los recursos de computación de la flota y mantenerlo actualizado.

Cuando se empieza a ejecutar un proceso del servidor de juegos integrado, se inicializa automáticamente y establece la comunicación con el servicio Amazon GameLift Servers. El proceso del servidor inicia las sesiones de juego a partir de las peticiones de Amazon GameLift Servers y le devuelve al servicio información sobre la actividad.

**Topics**
+ [Implementación para el alojamiento administrado](#gamelift-build-custom-upload)
+ [Implementación para el alojamiento en Anywhere](#gamelift-build-custom-anywhere)
+ [Empaquetado de los archivos de compilación del juego](gamelift-build-packaging.md)
+ [Agregar un script de instalación de la compilación](gamelift-build-cli-uploading-install.md)
+ [Cree un recurso de Amazon GameLift Servers compilación para el alojamiento gestionado](gamelift-build-cli-uploading-builds.md)

# Empaquetado de los archivos de compilación del juego
<a name="gamelift-build-packaging"></a>

Antes de cargar el servidor de juegos configurado en Amazon GameLift Servers, empaquete los archivos de compilación del juego en un directorio de compilación. Este proceso es obligatorio cuando el alojamiento se lleva a cabo con una flota de EC2 administrada, y es la práctica recomendada al hacer el alojamiento con una flota de Anywhere. El directorio de compilación debe incluir todos los componentes necesarios para ejecutar los servidores de juegos y alojar las sesiones de juego. Esto podría incluir lo siguiente:
+ **Archivos binarios del servidor de juegos**: son los archivos binarios necesarios para ejecutar el servidor de juegos. Una compilación puede incluir archivos binarios para varios servidores de juegos diseñados para ejecutarlos en la misma plataforma. Para obtener una lista de plataformas admitidas, consulte [Obtención de herramientas de desarrollo de Amazon GameLift Servers](gamelift-supported.md).
+ **Dependencias**: cualquier archivo dependiente necesario para que los archivos ejecutables del servidor de juegos funcione. Por ejemplo, activos, archivos de configuración y bibliotecas dependientes.
**nota**  
En el caso de compilaciones de juegos creadas con el SDK del servidor Amazon GameLift Servers para C\$1\$1 (incluidas las creadas con el complemento de Unreal), incluya el DLL de OpenSSL para la misma versión de OpenSSL con la que creó el SDK del servidor. Consulte el archivo README del SDK del servidor para obtener más información.
+ **Script de instalación** (opcional): archivo de script para administrar las tareas de instalación de la compilación del juego en los servidores de alojamiento de Amazon GameLift Servers. Coloque ese archivo en la raíz del directorio de compilación. Amazon GameLift Servers ejecuta el script de instalación como parte de la creación de la flota.

Puedes configurar cualquier aplicación de tu compilación, incluido el script de instalación, para acceder a tus recursos de forma segura en otros AWS servicios. Para obtener información sobre cómo hacerlo, consulte [Conecta tu servidor de juegos Amazon GameLift Servers alojado a otros AWS recursos](gamelift-sdk-server-resources.md).

Después de empaquetar los archivos de compilación, asegúrese de que el servidor de juegos pueda ejecutarse en una instalación limpia de su sistema operativo de destino, a fin de verificar que se hayan incluido todas las dependencias obligatorias y que el script de la instalación sea preciso.

# Agregar un script de instalación de la compilación
<a name="gamelift-build-cli-uploading-install"></a>

Cree un script de instalación para el sistema operativo (SO) de la compilación del juego:
+ Windows: cree un archivo de procesamiento por lotes denominado “`install.bat`”.
+ Linux: cree un archivo de script de intérprete de comandos denominado “`install.sh`“.

Al crear un script de instalación, tenga en cuenta lo siguiente:
+ El script no puede aceptar ninguna entrada por parte del usuario.
+ Amazon GameLift Servers instala la compilación y vuelve a crear los directorios de archivos del paquete de compilación en un servidor de alojamiento en las siguientes ubicaciones:
  + Flotas de Windows: `C:\game`
  + Flotas de Linux: `/local/game`
+ Durante el proceso de instalación para flotas de Linux, el usuario que realiza la ejecución tiene acceso limitado a la estructura de archivos de la instancia. Dicho usuario dispone de acceso completo al directorio en el que se instalan los archivos de compilación. Si el script de instalación realiza acciones que requieren permisos de administrador, especifique el acceso de administrador mediante **sudo**. El usuario en ejecución para las flotas de Windows dispone de permisos de administrador de forma predeterminada. Los errores de permisos relacionados con el script de instalación generan un mensaje de evento que indica un problema con el script.
+ En Linux, Amazon GameLift Servers admite lenguajes comunes de intérprete de comandos, como bash. Añada un shebang (como `#!/bin/bash`) al principio del script de instalación. Para verificar la compatibilidad con los comandos de intérprete de comandos de su preferencia, inicie una sesión remota en una instancia de Linux activa y abra una petición del intérprete de comandos. Para obtener más información, consulte [Conéctese a instancias de flota](fleets-remote-access.md).
+ El script de instalación no puede confiar en una conexión de emparejamiento de VPC. La conexión de emparejamiento de VPC no estará disponible hasta que Amazon GameLift Servers instale la compilación en las instancias de la flota.

**Example Archivo bash de instalación de Windows**  
En este ejemplo, el archivo `install.bat` instala los componentes del tiempo de ejecución de Visual C\$1\$1 necesarios para el servidor de juegos y escribe los resultados en un archivo de registro. El script incluye el archivo de componente en el paquete de compilación en la raíz.  

```
vcredist_x64.exe /install /quiet /norestart /log c:\game\vcredist_2013_x64.log
```

**Example Script de intérprete de comandos de instalación de Linux**  
Este archivo `install.sh` de ejemplo utiliza bash en el script de instalación y escribe los resultados en un archivo de registro.  

```
#!/bin/bash
echo 'Hello World' > install.log
```
Este `install.sh` archivo de ejemplo muestra cómo puedes usar el CloudWatch agente de Amazon para recopilar métricas personalizadas y a nivel del sistema y gestionar la rotación de registros. Puesto que Amazon GameLift Servers se ejecuta en una VPC de servicio, debe conceder permisos a Amazon GameLift Servers para que asuma un rol de AWS Identity and Access Management (IAM) en su nombre. Amazon GameLift ServersPara poder asumir un rol, crea un rol que incluya la política AWS `CloudWatchAgentAdminPolicy` gestionada y utilízalo cuando crees una flota.  

```
sudo yum install -y amazon-cloudwatch-agent
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install -y collectd
cat <<'EOF' > /tmp/config.json
{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "root",
        "credentials": {
            "role_arn": "arn:aws:iam::account#:role/rolename"
        }
    },
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/tmp/log",
                        "log_group_name": "gllog",
                        "log_stream_name": "{instance_id}"
                    }
                ]
            }
        }
    },
    "metrics": {
       "namespace": "GL_Metric",
        "append_dimensions": {
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
            // Configure metrics you want to collect.
            // For more information, see [Manually create or edit the CloudWatch agent configuration file](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html).
        }
    }
}
EOF
sudo mv /tmp/config.json /opt/aws/amazon-cloudwatch-agent/bin/config.json
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
sudo systemctl enable amazon-cloudwatch-agent.service
```

# Cree un recurso de Amazon GameLift Servers compilación para el alojamiento gestionado
<a name="gamelift-build-cli-uploading-builds"></a>

Al crear una compilación y cargar sus archivos, tiene dos opciones:
+ [Creación de una compilación a partir de un directorio de archivos](gamelift-build-cli-uploading-upload-build.md). Esta es la opción más sencilla y la que se utiliza habitualmente.
+ [Cree una compilación con archivos en Amazon Simple Storage Service (Amazon S3)](gamelift-build-cli-uploading-create-build.md). Con esta opción, puede administrar sus versiones de compilación en Amazon S3.

Con ambos métodos, Amazon GameLift Servers crea un nuevo recurso de compilación con un ID de compilación único y otros metadatos. La compilación comienza con el estado **Inicializado**. Cuando Amazon GameLift Servers adquiere los archivos del servidor de juegos, la compilación pasa al estado **Listo**. 

Cuando la compilación esté lista, podrá implementarla en una nueva flota de Amazon GameLift Servers. Para obtener más información, consulte [Cree una EC2 flota Amazon GameLift Servers gestionada](fleets-creating.md). Cuando Amazon GameLift Servers configure la nueva flota, descargará los archivos de compilación en cada instancia de la flota e instalará los archivos de compilación.

# Creación de una compilación a partir de un directorio de archivos
<a name="gamelift-build-cli-uploading-upload-build"></a>

Para crear una compilación de juego almacenada en cualquier ubicación, incluido un directorio local, usa el [https://docs.aws.amazon.com/cli/latest/reference/gamelift/upload-build.html](https://docs.aws.amazon.com/cli/latest/reference/gamelift/upload-build.html) AWS CLI comando. Este comando crea un registro de compilación nuevo en Amazon GameLift Servers y carga archivos desde la ubicación que especifique.

**Envíe una solicitud de carga.** En una ventana de línea de comandos, especifique el comando **upload-build** y los parámetros siguientes.

```
aws gamelift upload-build \
    --name user-defined name of build \
    --operating-system supported OS \
    --server-sdk-version server SDK for Amazon GameLift Servers version \
    --build-root build path \
    --build-version user-defined build number \
    --region region name
```
+ **operating-system**: el entorno de tiempo de ejecución de la compilación del servidor de juegos. Debe especificar un valor para el sistema operativo. El valor no podrá actualizarse más tarde.
+ **server-sdk-version**: la versión del SDK del servidor de Amazon GameLift Servers con la que se ha integrado el servidor de juegos. Si no proporciona un valor, Amazon GameLift Servers utiliza el valor por defecto `4.0.2`. Si especifica una versión incorrecta del SDK del servidor, es posible que la compilación del servidor de juegos falle al llamar a `InitSdk` para establecer una conexión con el servicio Amazon GameLift Servers.
+ **build-root**: es la ruta del directorio de los archivos de compilación.
+ **name**: es un nombre descriptivo para la nueva compilación.
+ **build-version**: los detalles de la versión de los archivos de compilación.
+ **region**— La AWS región en la que quieres crear tu construcción. Cree la compilación en la región en la que tiene previsto implementar las flotas. Si va a implementar el juego en varias regiones, cree una compilación en cada región.
**nota**  
Vea su región predeterminada actual mediante el comando [https://docs.aws.amazon.com/cli/latest/reference/configure/get.html](https://docs.aws.amazon.com/cli/latest/reference/configure/get.html). Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/configure/set.html](https://docs.aws.amazon.com/cli/latest/reference/configure/set.html) para cambiar la región predeterminada.

*Ejemplos*

```
aws gamelift upload-build \
    --operating-system AMAZON_LINUX_2023 \
    --server-sdk-version "5.0.0" \
    --build-root "~/mygame" \
    --name "My Game Nightly Build" \
    --build-version "build 255" \
    --region us-west-2
```

```
aws gamelift upload-build \
    --operating-system WINDOWS_2022 \
    --server-sdk-version "5.0.0" \
    --build-root "C:\mygame" \
    --name "My Game Nightly Build" \
    --build-version "build 255" \
    --region us-west-2
```

Como respuesta a su solicitud de carga, Amazon GameLift Servers proporciona el progreso de la carga. Si la carga se realiza correctamente, Amazon GameLift Servers devuelve el nuevo ID de registro de compilación. El tiempo de carga depende del tamaño de los archivos del juego y de la velocidad de conexión.

# Creación de una compilación con archivos en Amazon S3
<a name="gamelift-build-cli-uploading-create-build"></a>

Puede almacenar sus archivos de compilación en Amazon S3 y cargarlos en Amazon GameLift Servers desde allí. Al crear la compilación, debe especificar la ubicación del depósito de S3 y Amazon GameLift Servers recuperar los archivos de compilación directamente de Amazon S3.

**Para crear un recurso de compilación, realice el siguiente procedimiento:**

1. **Almacene los archivos de compilación en Amazon S..** Cree un archivo.zip que contenga los archivos de compilación empaquetados y cárguelo en un bucket de S3 que tenga. Cuenta de AWS Toma nota de la etiqueta del depósito y del nombre del archivo, ya que los necesitarás para crear una Amazon GameLift Servers compilación.

1. **Otorgue acceso a Amazon GameLift Servers a los archivos de compilación.** Para crear un rol de IAM;, siga las instrucciones en [Acceso a un archivo de compilación de un juego en Amazon S3](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-access-storage-loc). En cuanto haya creado el rol, tome nota del nombre de recurso de Amazon (ARN) del nuevo rol, ya que lo necesitará para crear una compilación.

1. **Cree una compilación.** Usa la Amazon GameLift Servers consola o el AWS CLI para crear un nuevo registro de compilación. Debe tener el permiso `PassRole`, tal y como se describe en [Ejemplo de permisos de IAM para Amazon GameLift Servers](gamelift-iam-policy-examples.md).

------
#### [ Console ]

1. En la [consola de Amazon GameLift Servers](https://console.aws.amazon.com/gamelift/), en el panel de navegación, elija **Alojamiento**, **Compilaciones**.

1. En la página **Compilaciones**, seleccione **Crear compilación**.

1. En la página **Crear compilación**, en **Configuración de compilación**, realice el siguiente procedimiento:

   1. En **Nombre**, especifique un nombre de script.

   1. En **Versión**, escriba una versión. Como puede actualizar el contenido de una compilación, los datos de la versión pueden ayudarle a realizar un seguimiento de las actualizaciones.

   1. Para **Sistema operativo (SO)**, elija el sistema operativo de la compilación del servidor de juegos. El valor no podrá actualizarse más tarde.

   1. En **Compilación del servidor de juegos**, especifique el **URI de S3** del objeto de compilación que cargó en Amazon S3 y elija la **versión del objeto**. Si no recuerda el URI y la versión del objeto de Amazon S3, elija **Explorar S3** y busque el objeto de compilación.

   1. Para el **rol de IAM**, elija el rol creado que permite a Amazon GameLift Servers acceder a su bucket de S3 y al objeto de compilación.

1. En **Etiquetas**, añada etiquetas a la compilación introduciendo los pares **Clave** y **Valor** (opcional).

1. Seleccione **Crear**.

Amazon GameLift Servers asigna un ID a la nueva compilación y carga el archivo .zip designado. Puede ver la nueva compilación, incluido su estado, en la página **Compilaciones**

------
#### [ AWS CLI ]

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/gamelift/create-build.html](https://docs.aws.amazon.com/cli/latest/reference/gamelift/create-build.html) para definir la nueva compilación y cargar los archivos de compilación del servidor.

1. Abra una ventana de línea de comandos y cambie a un directorio en el que pueda usar la AWS CLI.

1. Escriba el siguiente comando **create-build**:

   ```
   aws gamelift create-build \
       --name user-defined name of build \
       --server-sdk-version server SDK for Amazon GameLift Servers version \
       --operating-system supported OS \
       --build-version user-defined build number \
       --storage-location "Bucket"=S3 bucket label,"Key"=Build .zip file name,"RoleArn"=Access role ARN} \
       --region region name
   ```
   + **name**: es un nombre descriptivo para la nueva compilación.
   + **server-sdk-version**: la versión del SDK del servidor de Amazon GameLift Servers utilizado para integrar el servidor de juegos con Amazon GameLift Servers. Si no proporciona un valor, Amazon GameLift Servers utiliza el valor por defecto `4.0.2`.
   + **operating-system**: el entorno de tiempo de ejecución de la compilación del servidor de juegos. Debe especificar un valor para el sistema operativo. El valor no podrá actualizarse más tarde.
   + **build-version**: los detalles de la versión de los archivos de compilación. Esa información puede resultar útil porque cada nueva versión del servidor de juegos requiere un nuevo recurso de compilación.
   + **storage-location**
     + **Bucket**: nombre del bucket de S3 que contiene la compilación. Por ejemplo, “my\$1build\$1files”.
     + **Key**: nombre del archivo .zip que contiene los archivos de compilación. Por ejemplo, “my\$1game\$1build\$17.0.1, 7.0.2”.
     + **RoleARN**: el ARN asignado al rol de IAM creado. Por ejemplo, «arn:aws:iam: :111122223333:role/». GameLiftAccess Para ver una política de ejemplo, consulte [Acceso a un archivo de compilación de un juego en Amazon S3](security_iam_id-based-policy-examples.md#security_iam_id-based-policy-examples-access-storage-loc).
   + **region**— Crea la construcción en la región en la que planeas desplegar las flotas. AWS Si va a implementar el juego en varias regiones, cree una compilación en cada región.
**nota**  
Le recomendamos que compruebe la región predeterminada actual mediante el comando [https://docs.aws.amazon.com/cli/latest/reference/configure/get.html](https://docs.aws.amazon.com/cli/latest/reference/configure/get.html)[https://docs.aws.amazon.com/cli/latest/reference/configure/get.html](https://docs.aws.amazon.com/cli/latest/reference/configure/get.html). Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/configure/set.html](https://docs.aws.amazon.com/cli/latest/reference/configure/set.html) para cambiar la región predeterminada.

   *Ejemplo*

   ```
   aws gamelift create-build \
       --operating-system WINDOWS_2022 \
       --storage-location "Bucket"="my_game_build_files","Key"="mygame_build_101.zip","RoleArn"="arn:aws:iam::111122223333:role/gamelift" \
       --name "My Game Nightly Build" \
       --build-version "build 101" \
       --region us-west-2
   ```

1. Para ver la nueva compilación, utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-build.html](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-build.html).

------

# Creación de una imagen de contenedor para Amazon GameLift Servers
<a name="containers-prepare-images"></a>

En este tema se describe cómo crear una imagen de contenedor con el software de servidor de juegos para su uso con Amazon GameLift Servers. Una imagen de contenedor de servidor de juegos incluye el ejecutable del servidor de juegos, así como cualquier dependencia que este necesite para ejecutarse. Las imágenes de contenedor de servidor de juegos se utilizan con una solución de alojamiento de contenedores administrados de Amazon GameLift Servers. Para obtener más información sobre cómo crear la solución completa, consulte:
+ [Hoja de ruta de desarrollo para el alojamiento con contenedores administrados por Amazon GameLift Servers](gamelift-roadmap-containers.md)
+ [Cómo funcionan los contenedores en Amazon GameLift Servers](containers-howitworks.md)

Complete las siguientes tareas para preparar la imagen de contenedor del servidor de juegos para su implementación en una flota de contenedores de Amazon GameLift Servers. Antes de iniciar estas tareas, termine de integrar el código del servidor de juegos con el SDK del servidor de Amazon GameLift Servers.

**Topics**
+ [Creación de una imagen de contenedor del servidor de juegos](#containers-prepare-images-build)
+ [Inserción de una imagen de contenedor en Amazon ECR](#containers-prepare-images-upload)

## Creación de una imagen de contenedor del servidor de juegos
<a name="containers-prepare-images-build"></a>

Siga estas instrucciones cuando trabaje en una plataforma basada en Linux o utilice Windows Subsystem para Linux (WSL) con Docker instalado.

**Creación de una imagen de contenedor del servidor de juegos**

1. Prepare un directorio de trabajo con el software de servidor de juegos. En una máquina local, cree un directorio de trabajo para organizar los archivos del contenedor del servidor de juegos. La imagen de contenedor utiliza esta estructura de archivos al implementar el contenedor en los recursos de Amazon GameLift Servers para el alojamiento. Por ejemplo:

   ```
   [~/]$ mkdir -p work/glc/gamebuild && cd work && find .
   .
   ./glc
   ./glc/gamebuild
   ```
**nota**  
Si estás probando esta función y aún no tienes una versión de servidor de juegos que funcione, prueba nuestro servidor de juegos de muestra [SimpleServer](https://github.com/aws-solutions-library-samples/guidance-for-custom-game-backend-hosting-on-aws/tree/main/BackendFeatures/AmazonGameLiftIntegration/SimpleServer), que está disponible en GitHub.

1. Cree un nuevo archivo Dockerfile utilizando la plantilla proporcionada.

1. Siga las instrucciones de la plantilla de Dockerfile para actualizarla para su propio uso. 
   + Actualice la imagen base como corresponda.
   + Establezca variables de entorno para la compilación del servidor de juegos. 

1. Compile la imagen de contenedor. Ejecute la `docker build` especificando el nombre de su propio repositorio. Por ejemplo:

   ```
   [~/work/glc]$ docker build -t <local repository name>:<optional tag> .
   ```

   Puedes ver tus repositorios e imágenes IDs con el `docker images` comando, tal y como se muestra en este ejemplo:

## Plantilla de Dockerfile para una imagen de contenedor de servidor de juegos
<a name="w2aab9c11c13c17c15b1"></a>

Esta plantilla contiene las instrucciones mínimas que necesita un contenedor de servidor de juegos para poder utilizarse en una flota de Amazon GameLift Servers. Modifique el contenido como sea necesario para el servidor de juegos. 

```
# Base image
# ----------
  # Add the base image that you want to use,
  # Make sure to use an image with the same architecture as the
  # Instance type you are planning to use on your fleets.
FROM public.ecr.aws/amazonlinux/amazonlinux
  #
# Game build directory
# --------------------
  # Add your gamebuild directory to the env variable below.
  # The game build provided here needs to be integrated with server sdk for Amazon GameLift Servers.
ENV GAME_BUILD_DIRECTORY="<ADD_GAME_BUILD_DIRECTORY>" \
  #
# Game executable and launch parameters
# ---------------
  # Add the relative path to your executable in the 'GAME_EXECUTABLE' env variable below.
  # The game build provided over here needs to be integrated with server sdk for Amazon GameLift Servers.
  # This template assumes that the executable path is relative to the game build directory.
  # Add any launch parameters to pass into your executable in the 'LAUNCH_PARAMS' env variable below.
  # Add 'HOME_DIR' to identify where the game executable and logs exist.
GAME_EXECUTABLE="<ADD NAME OF EXECUTABLE WITHIN THE GAME DIRECTORY>" \
LAUNCH_PARAMS=<ADD LAUNCH PARAMETERS> \
HOME_DIR="/local/game" \


# Install dependencies as necessary
RUN yum install -y shadow-utils
    
RUN mkdir -p $HOME_DIR
COPY ./$GAME_BUILD_DIRECTORY/ $HOME_DIR
    
# Change directory to home
WORKDIR $HOME_DIR
    
# Set up for 'gamelift' user
RUN useradd -m gamelift && \
  echo "gamelift ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
  chown -R gamelift:gamelift $HOME_DIR

# Add permissions to game build
RUN chmod +x ./$GAME_EXECUTABLE
    
USER gamelift
    
# Check directory before starting the container
RUN ls -lhrt .
    
# Check path before starting the container
RUN echo $PATH
    
# Start the game build
ENTRYPOINT ["/bin/sh", "-c", "./$GAME_EXECUTABLE", "$LAUNCH_PARAMS"]
```

## Inserción de una imagen de contenedor en Amazon ECR
<a name="containers-prepare-images-upload"></a>

Una vez que haya creado una imagen de contenedor para su implementación en Amazon GameLift Servers, almacene la imagen en un repositorio público o privado de Amazon ECR. A este repositorio se le asigna un valor de URI, que Amazon GameLift Servers utiliza para tomar una instantánea de la imagen para la implementación en una flota de contenedores. 

**nota**  
Si aún no tiene un repositorio privado de Amazon ECR, debe [crear uno](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html). 

**Inserción de la imagen de contenedor en Amazon ECR**

1. Obtenga sus credenciales de Amazon ECR. Antes de insertar una imagen de contenedor en Amazon ECR, primero debe adquirir sus credenciales de AWS de forma temporal y proporcionárselas a Docker. Docker necesita estas credenciales para iniciar sesión.

   ```
   [~/work/glc]$ aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.us-west-2.amazonaws.com
   WARNING! Your password will be stored unencrypted in 
   /home/user-name/.docker/config.json.
   Configure a credential helper to remove this warning.
   See https://docs.docker.com/engine/reference/commandline/login/#credentials-store
   
   Login Succeeded
   ```

1. Copie el URI del [repositorio privado de Amazon ECR](https://console.aws.amazon.com/ecr/private-registry/repositories) que desea utilizar. 

1. Aplique una etiqueta de Amazon ECR a la imagen de contenedor.  
**Example**  

   ```
   [~/work/glc]$ docker tag <IMAGE ID from above> <Amazon ECR private repository URI>:<optional tag>
   ```

1. Inserción de la imagen de contenedor en Amazon ECR  
**Example**  

   ```
   [~/work/glc]$ docker image push  <Amazon ECR private repository URI>
   ```