2017-06-29 4 views
0

Je suis en train de mettre en place une instance EC2 (RHEL7) pour pousser les mesures à CloudWatch en utilisant des scripts Perl comme décrit dans http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.htmlAWS: Problèmes d'authentification qui tentent de pousser les mesures à CloudWatch de EC2

Je reçois un statut HTTP 400 messages « le jeton de sécurité inclus dans la demande est non valide » profil

Une instance est associée à l'instance qui a la politique suivante jointe:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "cloudwatch:PutMetricData", 
       "cloudwatch:GetMetricStatistics", 
       "cloudwatch:ListMetrics" 
      ], 
      "Resource": "*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "ec2:DescribeTags" 
      ], 
      "Resource": "*" 
     } 
    ] 
} 

Je tire les AWSAccessKe DIJ et AWSSecretKey à partir des données méta-exemple comme suit:

ROLE=$(curl http://169.254.169.254/latest/meta-data/iam/security-credentials/) 
CRED=$(curl http://169.254.169.254/latest/meta-data/iam/security-credentials/$ROLE) 

AWSAccessKeyId=$(sed '/AccessKeyId/!d; s/.*:\ \+"\(.\+\)",/\1/g' <<< "$CRED") 
AWSSecretKey=$(sed '/SecretAccessKey/!d; s/.*:\ \+"\(.\+\)",/\1/g' <<< "$CRED") 

... les valeurs définies dans les variables ci-dessus sont correctes quand je les vérifier ...

Je courais le script pour pousser à CloudWatch comme suit (en utilisant creds stockées dans des variables ci-dessus):

./mon-put-instance-data.pl --mem-util --verbose --aws-access-key-id $AWSAccessKeyId --aws-secret-key $AWSSecretKey 

Toutes les idées pourquoi il rejette mes lettres de créance?

Merci à l'avance

+0

Utilisez-vous un rôle IAM? Si oui, vous n'avez pas besoin des informations d'identification, il est géré pour vous – Henry

Répondre

0

Si vous utilisez un profil IAM, vous n'avez pas besoin de mettre dans les informations d'identification pour votre appel de script. Supprimez la clé d'accès et la clé secrète de votre appel.

./mon-put-instance-data.pl --mem-util --verbose 
0

Oui. Vous avez tous les deux raison - il prend automatiquement le rôle de creds si vous ne spécifiez pas et semble fonctionner.

Je ne sais pas pourquoi cela ne fonctionne pas en définissant manuellement les creds, mais je peux regarder le script perl pour travailler assez facilement.

Merci pour votre aide.