Помогите мне решить проблему с развертыванием моего Java-приложения Spring на AWS (EC2, ECS) с помощью GitHub Action.
Итак, я следую рекомендациям, представленным в файле рабочего процесса по умолчанию. для «Развертывания в Amazon ECS» на GitHub Actions.
Сначала я создал частный репозиторий на AWS и создал образ с помощью «Просмотра push-команд» в AWS.
введите описание изображения здесь
введите описание изображения здесь
Кроме того, я создал определение задачи и кластер. Вы можете увидеть это дальше.
введите описание изображения здесь
введите описание изображения здесь
Мой файл Docker:
введите описание изображения здесь
Моя рабочая жизнь:
name: Deploy to Amazon ECS
on:
push:
branches: \[ "master" \]
pull_request:
branches: \[ "master" \]
env:
AWS_REGION: eu-north-1 # set this to your preferred AWS region, e.g. us-west-1
ECR_REPOSITORY: techtask # set this to your Amazon ECR repository name
ECS_SERVICE: techtaskservice # set this to your Amazon ECS service name
ECS_CLUSTER: techtask-claster # set this to your Amazon ECS cluster name
ECS_TASK_DEFINITION: ./td-test.json # set this to the path to your Amazon ECS task definition
\# file, e.g. .aws/task-definition.json
CONTAINER_NAME: container # set this to the name of the container in the
\# containerDefinitions section of your task definition
permissions:
contents: read
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
environment: production
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v3
with:
java-version: '21'
distribution: 'temurin'
cache: maven
- name: run compile
run: mvn clean install -DskipTests
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Build, tag, and push image to Amazon ECR
id: build-image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
IMAGE_TAG: ${{ github.sha }}
run: |
# Build a docker container and
# push it to ECR so that it can
# be deployed to ECS.
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG .
docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
echo "image=$ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG" >> $GITHUB_OUTPUT
- name: Fill in the new image ID in the Amazon ECS task definition
id: task-def
uses: aws-actions/amazon-ecs-render-task-definition@v1
with:
task-definition: ${{ env.ECS_TASK_DEFINITION }}
container-name: ${{ env.CONTAINER_NAME }}
image: ${{ steps.build-image.outputs.image }}
- name: Deploy Amazon ECS task definition
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
task-definition: ${{ steps.task-def.outputs.task-definition }}
service: ${{ env.ECS_SERVICE }}
cluster: ${{ env.ECS_CLUSTER }}
wait-for-service-stability: true
Однако при попытке создать службу я столкнулся с проблемой. Задача и служба не создаются и всегда имеют статус «Инициализация» (для задачи) и «CREATE_IN_PROGRESS» (для службы).
Мой пользователь и роли имеют следующие разрешения:< /p>
AdministratorAccess
AmazonEC2ContainerRegistryFullAccess
AmazonEC2ContainerServiceRole
AmazonEC2FullAccess
AmazonEC2RoleforAWSCodeDeploy
AmazonECS_FullAccess
AWSCodeDeployRoleForECS
EC2InstanceConnect
И когда я запускаю файл рабочего процесса в Hithub Action (развертывание моего приложения на AWS), процесс останавливается на шаге «Развертывание определения задачи Amazon ECS» и не завершается. >
Также не могу подключиться к экземпляру:
Failed to connect to your instance
EC2 Instance Connect is unable to connect to your instance. Ensure your instance network settings are configured correctly for EC2 Instance Connect. For more information, see EC2 Instance Connect Prerequisites at https://docs.aws.amazon.com/AWSEC2/late ... sites.html.
I tried setting a HEALTHCHECK in the Dockerfile with:
HEALTHCHECK --interval=5s --timeout=10s --retries=3
CMD curl --silent --fail http://localhost:8080 || exit 1
Я также пытался создать HEALTHCHECK при создании файла определения задачи, но он не работает.
Я пытался создать репозиторий без использования «Просмотра push-команд» (вручную) собрать и отправить образ), но он тоже не работает.
Пожалуйста, помогите мне найти проблему.
Подробнее здесь: https://stackoverflow.com/questions/786 ... s-provisio
Сервис и задача в aws не создаются и всегда имеют статус «Provisioning». ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
API токенов списка Google Pay Push Provisioning, возвращающий пустой массив
Anonymous » » в форуме Android - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-