Comandos Frecuentes AWS CLI
Comandos Frecuentes AWS CLI
Recuerda buscar con CTRL+F con acentos y sin acentos, a veces lo escribía con teclado en inglés y no era fácil poner los acentos.
Por ejemplo si quieres ver como se pone una ip fija en CentOS busca "direccion" así sin acento y vas saltando entre las respuestas hasta que encuentres lo que buscas.
Los comandos más comunes en AWS CLI
Es una compilación de comandos AWS CLI que fui haciendo mientras aprendía y que aún uso de referencia, espero que también les sirva a ustedes tanto como me ha servido a mí.
Lo primero que se debe hacer es instalar y configurar AWS CLI
-- configurar las llaves
aws configure
-- Conocer el ID de la cuenta actual
aws sts get-caller-identity --query 'Account' --output text
868765432181
-- Ver el alias de la cuenta o el nombre amistoso que se le da a la cuenta
aws iam list-account-aliases --query 'AccountAliases[0]' --output text
-- identificar con que cuenta estamos trabajando tipo whoami en linux
aws sts get-caller-identity
El resultado será un json con más o menos la siguiente información:
{ "UserId": "AIDA52SZJW52SZM5KLUIS", "Account": "868765432181", "Arn": "arn:aws:iam::868765432181:user/hackvolution" }
-- Describir los trails de la cuenta
aws cloudTrail describe-trails
-- Obtener el estado de un trail
aws cloudTrail get-trail-status --name arn:aws:cloudtrail:us-east-1:053329225524:trail/kolibers-cloudtrail-org-prod-security
-- Listar las cuentas que forman parte de la organización
aws organizations list-accounts
-- Listar todos los usuarios de una cuenta y filtrar por el usuario que en su nombre contenga "luis", por favor nota que las comillas del nombre son backticks como se les conoce en inglés o comilla invertida, no es la comilla simple.
aws iam list-users --query 'Users[?contains(UserName, `luis`)].UserName' --output text
-- hacer grep a una salida de AWS CLI
aws iam list-users |grep luis
-- Listar todas las access keys de una cuenta
for user in $(AWS IAM list-users --output-text | awk '{print $NF}'); do aws iam list-access-keys --user $user --output text; done
-- Listar todas las access keys de una cuenta, si tienes más de un perfil agregar la opción --profile
for user in $(AWS IAM list-users --output-text --profile miperfil2aws | awk '{print $NF}'); do aws iam list-access-keys --user $user --output text --profile miperfil2aws; done
-- Listar los buckets s3 que hay en la cuenta (o a los que tienes acceso)
aws s3 ls
-- Listar los archivos de un bucket
aws s3 ls s3://el-nombre-de-tu-bucket/
-- calcular el tamaño del bucket
aws s3 ls s3://el-nombre-de-tu-bucket --recursive --human-readable --summarize
Te dará una salida como la siguiente:
2022-02-22 11:04:13 121Kib Bytes archivos_importantes/0054321.csv 2022-02-22 11:04:21 57.9 MiB Bytes archivos_importantes/hackvolution_ai-x000.csv 2022-02-22 11:04:40 0 Bytes archivos_importantes_kolibers/_EXITO 2022-02-22 11:04:40 0 Bytes media_kolibers/registros_27000.csv 2022-02-22 11:04:40 147 Bytes archivos_importantes_/hvt_20230404.csv
Total Objects: 2486 Total Size: 3.4 GiB
-- Listar todos los delivery streams de Kinesis:
aws firehose list-delivery-streams
-- Describir delivery streams específicos
aws firehose describe-delivery-stream --delivery-stream-name nombre-del-delivery-stream
-- Listar todos los waf de una cuenta
aws wafv2 list-web-acls --scope REGIONAL
-- Listar todos los grupos de CloudWatch
aws logs describe-log-groups
-- Listar los log streams dentro de un grupo:
aws logs describe-log-streams --log-group-name tu-log-group-del-waf
-- Para ver los logs de un stream específico usa el siguiente comando:
aws logs get-log-events --log-group-name mis-logs-waf --log-stream-name "us-east-1_prod-APIWAFy_9"
-- Obtener los nombres de dominio asociados a un API Gateway
aws apigatewayv2 get-domain-names
-- Para solo filtrar el elemento DomainName del json del comando anterior se puede emplear la herramienta jq de la siguiente forma:
aws apigatewayv2 get-domain-names| jq '.Items[].DomainName'
-- ver el contenido de la política
aws iam get-policy-version --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA --version-id v2 --query 'PolicyVersion.Document' --output json
-- ver la versión de la política contenido de una política
aws iam get-policy --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA --query 'Policy.DefaultVersionId' --output text
-- que políticas están vinculadas al usuario
aws iam list-user-policies --user-name mi-usuario-aws
-- que políticas in line están vinculadas al usuario
aws iam list-attached-user-policies --user-name mi-usuario-aws
-- crear una nueva versión de la política, actualizar la política y ponerla como default
aws iam create-policy-version --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA --policy-document file://habilitar-mfa.json --set-as-default
-- Traer la versión específica de la política aws iam get-policy-version --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA --version-id v1 --query 'PolicyVersion.Document' --output json
-- Listar que que SCP existen
aws organizations list-policies --filter SERVICE_CONTROL_POLICY --max-items 25
Es posible cambiar el número de elementos en el ejemplo se usaron 25
-- Encontrar que políticas SCP aplican para una cuenta en particular -- El primer paso es listar todas las cuentas en la organización
aws organizations list-accounts
-- Busca la cuenta de la cuál quieras saber sus datos y anota su id, con el id ahora buscaremos a que OU o unidad organizational pertenece, por ejemplo el id en este caso es: 123456789012
aws organizations list-parents --child-id 123456789012
-- Nuevamente anotar el id que aparece de la OU por ejemplo en este caso ou-klbr-srebil0k y ejecutar el siguiente comando
aws organizations list-policies-for-target --target-id ou-klbr-srebil0k --filter SERVICE_CONTROL_POLICY
Si existen políticas aplicadas para esta OU se mostraran a continuación.
-- También es posible que la política esté aplicada directamente para una cuanta en particular, para este caso ejecutar el comando:
aws organizations list-policies-for-target --target-id 123456789012 --filter SERVICE_CONTROL_POLICY
-- Listar todos los nombres de las cuentas que existen en la organización y solo mostrar el ID y el nombre en la misma línea
aws organizations list-accounts --profile account-master |jq -r '.Accounts[] | "\(.Id) - \(.Name)"'
-- Crear un dispositivo MFA
aws iam create-virtual-mfa-device --virtual-mfa-device-name mi-dispositivo-MFA --bootstrap-method QRCodePNG --outfile CodigoQR.png { "VirtualMFADevice": { "SerialNumber": "arn:aws:iam::123456789012:mfa/mi-dispositivo-MFA" } }
-- Habilitar un dispositivo MFA
aws iam enable-mfa-device --user-name mi-dispositivo-MFA --serial-number arn:aws:iam::123456789012:mfa/mi-dispositivo-MFA --authentication-code-1 866541 --authentication-code-2 987645
-- Vincular el dispositivo con el usuario
aws iam attach-user-policy --user-name mi-usuario-AWS --policy-arn arn:aws:iam::123456789012:policy/AllowCreateEnableMFA
-- Crear el archivo de política con tu editor favorito
vi habilitar-mfa.json
{ "Policy": { "PolicyName": "AllowCreateEnableMFA", "PolicyId": "ABCDEFGHI5LUISN74EMXX", "Arn": "arn:aws:iam::123456789012:policy/AllowCreateEnableMFA", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2023-04-21T23:40:35+00:00", "UpdateDate": "2023-04-21T23:40:35+00:00" } }
-- Crear la política con el archivo recién creado
aws iam create-policy --policy-name AllowCreateEnableMFA --policy-document file://habilitar-mfa.json