Je suis sur une instance EC2 à laquelle est associé un rôle IAM et je voudrais pouvoir vérifier que j'utilise bien ce rôle à partir de l'AWS CLI.
J'imagine pouvoir appeler quelque chose comme ça (mais je ne trouve rien de semblable dans les documents CLI):
$ aws get-current-role-details
Cette fonctionnalité existe-t-elle?
Voir commande AWS STSget-caller-identity
.
Renvoie des détails sur l'identité IAM dont les informations d'identification sont utilisées pour appeler l'API.
$ aws sts get-caller-identity
{
"Account": "0123456789",
"UserId": "AROAxxx:i-abc123",
"Arn": "arn:aws:sts::0123456789:assumed-role/EMR_EC2_DefaultRole/i-abc123"
}
Vous pouvez ensuite prendre le nom du rôle et interroger IAM pour les détails du rôle.
$ aws iam list-attached-role-policies --role-name EMR_EC2_DefaultRole
{
"AttachedPolicies": [
{
"PolicyName": "AmazonElasticMapReduceforEC2Role",
"PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role"
},
{
"PolicyName": "AmazonEC2RoleforDataPipelineRole",
"PolicyArn": "arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforDataPipelineRole"
}
]
}
Malheureusement, il n'y a pas de moyen simple d'obtenir ces informations. Vous devrez vous y rendre par le chemin suivant:
Étape 1. Obtenez l'ID d'instance EC2 actuel à partir des métadonnées d'instance.
curl -s http://169.254.169.254/latest/meta-data/instance-id
Vous pouvez également avoir besoin de la région actuelle.
curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone/ | sed 's/\(.*\)[a-z]/\1/'
Étape 2. Obtenez l'ID du profil d'instance IAM attaché à votre instance EC2.
aws ec2 describe-instances \
--region us-east-1 \
--instance-id i-12345678 \
--query 'Reservations[0].Instances[0].IamInstanceProfile.Id'
N'oubliez pas de remplacer l'ID d'instance EC2 et la région si nécessaire.
Étape 3. Obtenez les rôles de profil d'instance IAM.
aws iam list-instance-profiles \
--query "InstanceProfiles[?InstanceProfileId=='ABCDEFG'].Roles"
N'oubliez pas de remplacer l'ID de profil d'instance IAM.
Remarques:
Il existe un moyen plus simple et élégant d'obtenir les détails du rôle actuel.
$ curl http://169.254.169.254/latest/meta-data/iam/info
{
"Code" : "Success",
"LastUpdated" : "2019-05-08T13:15:52Z",
"InstanceProfileArn" : "arn:aws:iam::xxxxxxxxxxxx:instance-profile/rolename",
"InstanceProfileId" : "AIPAIFNV5UU4JJLAXXXXX"
}
Dans InstanceProfileArn, vous pouvez voir le nom de votre rôle