Respuestas:
Puede obtener el número de cuenta del subcomando Secure Token Serviceget-caller-identity
utilizando lo siguiente:
aws sts get-caller-identity --query Account --output text
aws sts get-caller-identity|jq -r ".Account"
aws sts get-caller-identity --output json | jq '.Account' | sed 's/\"//g'
--query 'Account'
pieza.
jq
estar involucrado o instalado en un sistema. Algunos servidores prohíben la instalación de paquetes extraños por motivos de seguridad. Podrías hacer algo como esto, aws sts get-caller-identity --output json |grep Account |awk -F ': "' '{print$2}' |sed 's/\".*//'
pero es un poco molesto y también podrías hacerlo --query 'Account' --output text
en ese momento.
De mi respuesta relacionada para la CLI de AWS PowerShell , su ID de cuenta es parte del Arn de recursos que crea ... y aquellos que se crean automáticamente para usted. Algunos recursos también lo incluirán como OwnerId.
El grupo de seguridad predeterminado se crea automáticamente en la VPC predeterminada de cada región como grupo de seguridad reservado. De la documentación :
No puede eliminar un grupo de seguridad predeterminado. Si intenta eliminar el grupo de seguridad predeterminado EC2-Classic, obtendrá el siguiente error: Client.InvalidGroup.Reserved: El grupo de seguridad 'predeterminado' está reservado. Si intenta eliminar un grupo de seguridad predeterminado de VPC, obtendrá el siguiente error: Client.CannotDelete: el grupo especificado: "sg-51530134" nombre: "default" no puede ser eliminado por un usuario.
Esto lo convierte en un candidato confiable para recuperar nuestro ID de cuenta, siempre que esté en EC2 Classic o tenga una VPC predeterminada (* consulte los casos extremos si no la tiene).
Ejemplo:
aws ec2 describe-security-groups \
--group-names 'Default' \
--query 'SecurityGroups[0].OwnerId' \
--output text
Esto se utiliza --query
para filtrar la salida hasta el "ID de propietario" para el primer resultado de esta solicitud, y luego se utiliza --output
para generar su ID de cuenta como texto sin formato:
123456781234
Casos de borde:
(Gracias @kenchew) Tenga en cuenta que si ha eliminado su VPC predeterminada en una región determinada, este grupo de seguridad ya no existe y debe utilizar una de estas soluciones alternativas:
Otras lecturas:
Si está ejecutando en un servidor que se está ejecutando con un rol asumido, no puede llamar aws sts get-caller-identity
. Además, describe-security-groups
no siempre puede usar el --group-names
filtro (no funciona si no tiene una VPC predeterminada), así que elija el primer grupo de seguridad. Descubrí que este es el más confiable, independientemente del tipo de autenticación que use o del tipo de VPC que tenga.
aws ec2 describe-security-groups --query 'SecurityGroups[0].OwnerId' --output text
Mi método favorito es usarlo, aws iam get-user [--profile <profile>]
ya que solo necesita el rol de autoservicio de IAM para que esto funcione.