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.
Ejecución del daemon de X-Ray en Amazon ECS
En Amazon ECS, cree una imagen de Docker que ejecute el daemon de X-Ray, cárguelo en el repositorio de imágenes de Docker y luego impleméntelo en su clúster de Amazon ECS. Puede utilizar mapeos de puertos y la configuración del modo de red en el archivo de definición de tareas para permitir que la aplicación se comunique con el contenedor del demonio.
Uso de la imagen de Docker oficial de la
X-Ray proporciona una imagen del contenedor
ejemplo Definición de tarea
{ "name": "xray-daemon", "image": "amazon/aws-xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [
{ "hostPort": 0, "containerPort": 2000, "protocol": "udp" }
] }
Creación y compilación de una imagen de Docker
Si desea realizar una configuración personalizada, es posible que tenga que definir su propia imagen de Docker.
Añada políticas administradas al rol de tarea para conceder permiso al daemon para cargar datos de rastreo en X-Ray. Para obtener más información, consulte Permiso para el envío de datos a X-Ray desde el daemon.
Utilice uno de los siguientes Dockerfiles para crear una imagen que ejecute el demonio.
ejemplo Dockerfile: Amazon Linux
FROM amazonlinux RUN yum install -y unzip RUN curl -o daemon.zip https://s3.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-linux-3.x.zip RUN unzip daemon.zip && cp xray /usr/bin/xray ENTRYPOINT ["/usr/bin/xray", "-t", "0.0.0.0:2000", "-b", "0.0.0.0:2000"] EXPOSE 2000/udp EXPOSE 2000/tcp
nota
Las marcas -t
y -b
son necesarias para especificar una dirección de enlace que escuche el bucle invertido de un entorno con varios contenedores.
ejemplo Dockerfile: Ubuntu
Para los derivados de Debian, tendrá que instalar certificados de una autoridad de certificación (CA) para evitar problemas al descargar el instalador.
FROM ubuntu:16.04
RUN apt-get update && apt-get install -y --force-yes --no-install-recommends apt-transport-https curl ca-certificates wget && apt-get clean && apt-get autoremove && rm -rf /var/lib/apt/lists/*
RUN wget https://s3.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-3.x.deb
RUN dpkg -i aws-xray-daemon-3.x.deb
ENTRYPOINT ["/usr/bin/xray", "--bind=0.0.0.0:2000", "--bind-tcp=0.0.0.0:2000"]
EXPOSE 2000/udp
EXPOSE 2000/tcp
En la definición de tarea, la configuración depende del modo de red que se utilice. El modo de red puente es la opción predeterminada y se puede utilizar en la VPC predeterminada. En una red en modo puente, establezca la variable de entorno AWS_XRAY_DAEMON_ADDRESS
para indicar al SDK de X-Ray a qué puerto del contenedor se ha de hacer referencia y establezca el puerto de host. Por ejemplo, podría publicar el puerto UDP 2000 y crear un enlace desde el contenedor de la aplicación hasta el contenedor del demonio.
ejemplo Definición de tarea
{ "name": "xray-daemon", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [
{ "hostPort": 0, "containerPort": 2000, "protocol": "udp" }
] }, { "name": "scorekeep-api", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/scorekeep-api", "cpu": 192, "memoryReservation": 512, "environment": [ { "name" : "AWS_REGION", "value" : "us-east-2" }, { "name" : "NOTIFICATION_TOPIC", "value" : "arn:aws:sns:us-east-2:123456789012:scorekeep-notifications" },{ "name" : "AWS_XRAY_DAEMON_ADDRESS", "value" : "xray-daemon:2000" }
], "portMappings" : [ { "hostPort": 5000, "containerPort": 5000 } ],"links": [ "xray-daemon" ] }
Si ejecuta el clúster en la subred privada de una VPC, puede utilizar el modo de red awsvpc
para asociar una interfaz de red elástica (ENI) a los contenedores. De este modo, puede evitar utilizar enlaces. Omita el puerto de host en los mapeos de puertos, el enlace y la variable de entorno AWS_XRAY_DAEMON_ADDRESS
.
ejemplo Definición de tarea de VPC
{ "family": "scorekeep",
"networkMode":"awsvpc",
"containerDefinitions": [ { "name": "xray-daemon", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/xray-daemon", "cpu": 32, "memoryReservation": 256, "portMappings" : [ { "containerPort": 2000, "protocol": "udp" } ] }, { "name": "scorekeep-api", "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/scorekeep-api", "cpu": 192, "memoryReservation": 512, "environment": [ { "name" : "AWS_REGION", "value" : "us-east-2" }, { "name" : "NOTIFICATION_TOPIC", "value" : "arn:aws:sns:us-east-2:123456789012:scorekeep-notifications" } ], "portMappings" : [ { "containerPort": 5000 } ] } ] }
Configuración de las opciones de línea de comandos en la consola de Amazon ECS
Las opciones de línea de comandos anulan cualquier valor que presente algún conflicto del archivo de configuración de la imagen. Las opciones de línea de comandos se suelen utilizar para pruebas locales, pero también se pueden utilizar para mayor comodidad al establecer variables de entorno o con el fin de controlar el proceso de inicio.
Al añadir opciones de línea de comandos, se actualiza el CMD
de Docker que se pasa al contenedor. Para obtener más información, consulte Docker run reference
Para establecer una opción de línea de comandos
Abra la consola de Amazon ECS en https://console.aws.amazon.com/ecs/
. -
En la barra de navegación, seleccione la región que contiene la definición de tarea.
-
En el panel de navegación, elija Task Definitions.
-
En la página Task Definitions, seleccione la casilla situada a la izquierda de la definición de tarea que revisar y seleccione Create new revision.
-
En la página Create new revision of Task Definition (Crear nueva revisión de definición de tarea), seleccione el contenedor.
-
En la sección ENVIRONMENT (ENTORNO), añada al campo Command (Comando) la lista de opciones de línea de comandos separadas por comas.
-
Elija Actualizar.
-
Verifique la información y seleccione Create.
En el ejemplo siguiente se muestra cómo escribir una opción de línea de comandos separada por comas para la opción RoleARN
. La opción RoleARN
asume el rol de IAM especificado para cargar segmentos en una cuenta diferente.
--role-arn, arn:aws:iam::
123456789012
:role/xray-cross-account
Para obtener más información sobre las opciones de línea de comandos disponibles en X-Ray, consulte Configuración del daemon de AWS X-Ray.