{"meta":{"title":"Desplegar en Amazon Elastic Container Service","intro":"Aprende a implementar un proyecto en Amazon Elastic Container Service (ECS) como parte de un flujo de trabajo de implementación continua (CD).","product":"GitHub Actions","breadcrumbs":[{"href":"/es/actions","title":"GitHub Actions"},{"href":"/es/actions/how-tos","title":"Procedimientos"},{"href":"/es/actions/how-tos/deploy","title":"Desplegar"},{"href":"/es/actions/how-tos/deploy/deploy-to-third-party-platforms","title":"Implementa en plataformas de terceros"},{"href":"/es/actions/how-tos/deploy/deploy-to-third-party-platforms/amazon-elastic-container-service","title":"Amazon Elastic Container Service"}],"documentType":"article"},"body":"# Desplegar en Amazon Elastic Container Service\n\nAprende a implementar un proyecto en Amazon Elastic Container Service (ECS) como parte de un flujo de trabajo de implementación continua (CD).\n\n## Requisitos previos\n\nAntes de crear el GitHub Actions flujo de trabajo, primero deberá completar los pasos de configuración siguientes para Amazon ECR y ECS:\n\n1. Crea un repositorio de Amazon ECR para almacenar tus imágenes.\n\n   Por ejemplo, mediante [la CLI de AWS](https://aws.amazon.com/cli/):\n\n   ```bash copy\n   aws ecr create-repository \\\n       --repository-name MY_ECR_REPOSITORY \\\n       --region MY_AWS_REGION\n\n   ```\n\n   Asegúrate de usar el mismo nombre de repositorio de Amazon ECR (representado aquí por `MY_ECR_REPOSITORY`) para la variable `ECR_REPOSITORY` en el flujo de trabajo siguiente.\n\n   Asegúrate de usar el mismo valor de región de AWS para la variable `AWS_REGION` (representada aquí por `MY_AWS_REGION`) en el flujo de trabajo siguiente.\n\n2. Crea una definición de tarea, un clúster y un servicio de Amazon ECS.\n\n   Para obtener más información, sigue el [Asistente para introducción en la consola de Amazon ECS](https://us-east-2.console.aws.amazon.com/ecs/home?region=us-east-2#/firstRun) o la [Guía de introducción](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/getting-started-fargate.html) en la documentación de Amazon ECS.\n\n   Asegúrate de anotar los nombres que establezcas para el servicio y el clúster de Amazon ECS, y úsalos para las variables `ECS_SERVICE` y `ECS_CLUSTER` en el flujo de trabajo siguiente.\n\n3. Almacene la definición de tarea de Amazon ECS como un archivo JSON en el GitHub repositorio.\n\n   El formato del archivo debe ser el mismo que el resultado generado por lo siguiente:\n\n   ```bash copy\n\n   aws ecs register-task-definition --generate-cli-skeleton\n\n   ```\n\n   Asegúrate de establecer la variable `ECS_TASK_DEFINITION` en el flujo de trabajo siguiente como la ruta de acceso al archivo JSON.\n\n   Asegúrate de establecer la variable `CONTAINER_NAME` en el flujo de trabajo siguiente como el nombre de contenedor en la sección de la definición `containerDefinitions` de la tarea.\n\n4. Cree secretos GitHub Actions denominados `AWS_ACCESS_KEY_ID` y `AWS_SECRET_ACCESS_KEY` para almacenar los valores de la clave de acceso de IAM de Amazon.\n\n   Para obtener más información sobre cómo crear secretos para GitHub Actions, vea [Uso de secretos en Acciones de GitHub](/es/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets#creating-secrets-for-a-repository).\n\n   Consulta la documentación de cada acción que se usa a continuación para conocer las directivas de IAM recomendadas para el usuario de IAM y los métodos para controlar las credenciales de clave de acceso.\n\n5. Opcionalmente, configure un entorno de implementación. Los entornos se usan para describir un destino de implementación general como `production`, `staging` o `development`. Cuando un GitHub Actions flujo de trabajo se implementa en un entorno, el entorno se muestra en la página principal del repositorio. Puedes usar entornos para requerir aprobación para que un trabajo continúe, restringir qué ramas pueden desencadenar un flujo de trabajo, controlar las implementaciones con reglas de protección de implementación personalizadas o limitar el acceso a los secretos. Para más información sobre la creación de entornos, consulta [Administrar entornos para la implementación](/es/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments).\n\n## Crear un flujo de trabajo\n\nUna vez que hayas completado los prerequisitos, puedes proceder con la creación del flujo de trabajo.\n\nEl siguiente flujo de trabajo demuestra cómo crear una imagen de contenedor y cómo subirla a Amazon ECR. A continuación, actualiza la definición de tarea con el nuevo identificador de imagen e implementa la definición de tarea en Amazon ECS.\n\nAsegúrate de proporcionar tus propios valores para todas las variables en la clave del flujo de trabajo `env`.\n\nSi ha configurado un entorno de implementación, cambie el valor de `environment` por el nombre del entorno. Si no ha configurado un entorno o si el flujo de trabajo está en un repositorio privado y no usa GitHub Enterprise Cloud, borre la clave `environment`.\n\n```yaml copy\n# Este flujo de trabajo usa acciones que no GitHub no certifica.\n# Estas las proporcionan entidades terceras y las gobiernan\n# condiciones de servicio, políticas de privacidad y documentación de soporte\n# en línea.\n\n# GitHub recomienda anclar acciones a un SHA de confirmación.\n# Para obtener una versión más reciente, debes actualizar el SHA.\n# También puedes hacer referencia a una etiqueta o rama, pero la acción puede cambiar sin ninguna advertencia.\n\nname: Deploy to Amazon ECS\n\non:\n  push:\n    branches:\n      - main\n\nenv:\n  AWS_REGION: MY_AWS_REGION                   # set this to your preferred AWS region, e.g. us-west-1\n  ECR_REPOSITORY: MY_ECR_REPOSITORY           # set this to your Amazon ECR repository name\n  ECS_SERVICE: MY_ECS_SERVICE                 # set this to your Amazon ECS service name\n  ECS_CLUSTER: MY_ECS_CLUSTER                 # set this to your Amazon ECS cluster name\n  ECS_TASK_DEFINITION: MY_ECS_TASK_DEFINITION # set this to the path to your Amazon ECS task definition\n                                               # file, e.g. .aws/task-definition.json\n  CONTAINER_NAME: MY_CONTAINER_NAME           # set this to the name of the container in the\n                                               # containerDefinitions section of your task definition\n\njobs:\n  deploy:\n    name: Deploy\n    runs-on: ubuntu-latest\n    environment: production\n\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n\n      - name: Configure AWS credentials\n        uses: aws-actions/configure-aws-credentials@0e613a0980cbf65ed5b322eb7a1e075d28913a83\n        with:\n          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}\n          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}\n          aws-region: ${{ env.AWS_REGION }}\n\n      - name: Login to Amazon ECR\n        id: login-ecr\n        uses: aws-actions/amazon-ecr-login@62f4f872db3836360b72999f4b87f1ff13310f3a\n\n      - name: Build, tag, and push image to Amazon ECR\n        id: build-image\n        env:\n          ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}\n          IMAGE_TAG: ${{ github.sha }}\n        run: |\n          # Build a docker container and\n          # push it to ECR so that it can\n          # be deployed to ECS.\n          docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .\n          docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG\n          echo \"image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG\" >> $GITHUB_OUTPUT\n\n      - name: Fill in the new image ID in the Amazon ECS task definition\n        id: task-def\n        uses: aws-actions/amazon-ecs-render-task-definition@c804dfbdd57f713b6c079302a4c01db7017a36fc\n        with:\n          task-definition: ${{ env.ECS_TASK_DEFINITION }}\n          container-name: ${{ env.CONTAINER_NAME }}\n          image: ${{ steps.build-image.outputs.image }}\n\n      - name: Deploy Amazon ECS task definition\n        uses: aws-actions/amazon-ecs-deploy-task-definition@df9643053eda01f169e64a0e60233aacca83799a\n        with:\n          task-definition: ${{ steps.task-def.outputs.task-definition }}\n          service: ${{ env.ECS_SERVICE }}\n          cluster: ${{ env.ECS_CLUSTER }}\n          wait-for-service-stability: true\n```\n\n## Información adicional\n\nPara obtener la plantilla de flujo de trabajo original, consulte [`aws.yml`](https://github.com/actions/starter-workflows/blob/main/deployments/aws.yml) en el GitHub Actions`starter-workflows` repositorio.\n\nPara obtener más información sobre los servicios que se utilizan en estos ejemplos, consulta la siguiente documentación:\n\n* [Procedimientos recomendados de seguridad en IAM ](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la documentación de Amazon AWS.\n* Acción oficial de AWS [Configurar credenciales de AWS](https://github.com/aws-actions/configure-aws-credentials).\n* Acción oficial de AWS [\"Iniciar sesión en Amazon ECR](https://github.com/aws-actions/amazon-ecr-login)\".\n* Acción oficial de AWS Amazon ECS [\"Render Task Definition\"](https://github.com/aws-actions/amazon-ecs-render-task-definition).\n* Acción oficial de AWS [\"Implementar definición de tarea\" de Amazon ECS](https://github.com/aws-actions/amazon-ecs-deploy-task-definition)."}