Skip to content

Instantly share code, notes, and snippets.

@mariocesar
Created March 10, 2025 16:11
Show Gist options
  • Save mariocesar/34a15d76a902f089630552dacc3ac363 to your computer and use it in GitHub Desktop.
Save mariocesar/34a15d76a902f089630552dacc3ac363 to your computer and use it in GitHub Desktop.
Apagar/Encender/Reiniciar instancias EC2 con Policy. Util para gitlab CI

Comandos AWS CLI:

Apagar una instancia EC2 por ID y esperar a que se detenga:

aws ec2 stop-instances --instance-ids i-1234567890abcdef0
aws ec2 wait instance-stopped --instance-ids i-1234567890abcdef0

Encender una instancia EC2 por ID y esperar a que inicie:

aws ec2 start-instances --instance-ids i-1234567890abcdef0
aws ec2 wait instance-running --instance-ids i-1234567890abcdef0

IAM Policy para otorgar permisos mínimos:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:DescribeInstances"
            ],
            "Resource": "arn:aws:ec2:*:*:instance/i-1234567890abcdef0"
        }
    ]
}

Esto es util para simples ambientes sandbox que administrar. Por ejemplo en Gitlab CI

stages:
  - manage_ec2

stop_instance:
  stage: manage_ec2
  script:
    - aws ec2 stop-instances --instance-ids i-1234567890abcdef0
    - aws ec2 wait instance-stopped --instance-ids i-1234567890abcdef0
  when: manual
  allow_failure: false
  only:
    - main

start_instance:
  stage: manage_ec2
  script:
    - aws ec2 start-instances --instance-ids i-1234567890abcdef0
    - aws ec2 wait instance-running --instance-ids i-1234567890abcdef0
  when: manual
  allow_failure: false
  only:
    - main

restart_instance:
  stage: manage_ec2
  script:
    - aws ec2 reboot-instances --instance-ids i-1234567890abcdef0
  when: manual
  allow_failure: false
  only:
    - main
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment