AWS n'a pas pu valider les informations d'identification fournies
J'ai essayé de créer le Groupe de Sécurité à l'aide d'AWS SDK, mais de toute façon il ne parvient pas à s'authentifier. Pour la Clé d'Accès et la Clé Secrète, j'ai donné les droits d'Administration, puis aussi il ne parvient pas à valider. De l'autre côté, j'ai essayé les mêmes informations d'identification sur AWS S3 Exemple, il s'exécute correctement.
L'obtention d'erreur suivant lors de la création du groupe de sécurité:
com.amazonaws.AmazonServiceException: AWS was not able to validate the provided access credentials (Service: AmazonEC2; Status Code: 401; Error Code: AuthFailure; Request ID: 1584a035-9a88-4dc7-b5e2-a8b7bde6f43c)
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1077)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:725)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:460)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:295)
at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.java:9393)
at com.amazonaws.services.ec2.AmazonEC2Client.createSecurityGroup(AmazonEC2Client.java:1146)
at com.sunil.demo.ec2.SetupEC2.createSecurityGroup(SetupEC2.java:84)
at com.sunil.demo.ec2.SetupEC2.main(SetupEC2.java:25)
Voici le Code Java:
public class SetupEC2 {
AWSCredentials credentials = null;
AmazonEC2Client amazonEC2Client ;
public static void main(String[] args) {
SetupEC2 setupEC2Instance = new SetupEC2();
setupEC2Instance.init();
setupEC2Instance.createSecurityGroup();
}
public void init(){
//Intialize AWS Credentials
try {
credentials = new BasicAWSCredentials("XXXXXXXX", "XXXXXXXXX");
} catch (Exception e) {
throw new AmazonClientException(
"Cannot load the credentials from the credential profiles file. " +
"Please make sure that your credentials file is at the correct " +
"location (/home/sunil/.aws/credentials), and is in valid format.",
e);
}
//Initialize EC2 instance
try {
amazonEC2Client = new AmazonEC2Client(credentials);
amazonEC2Client.setEndpoint("ec2.ap-southeast-1.amazonaws.com");
amazonEC2Client.setRegion(Region.getRegion(Regions.AP_SOUTHEAST_1));
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean createSecurityGroup(){
boolean securityGroupCreated = false;
String groupName = "sgec2securitygroup";
String sshIpRange = "0.0.0.0/0";
String sshprotocol = "tcp";
int sshFromPort = 22;
int sshToPort =22;
String httpIpRange = "0.0.0.0/0";
String httpProtocol = "tcp";
int httpFromPort = 80;
int httpToPort = 80;
String httpsIpRange = "0.0.0.0/0";
String httpsProtocol = "tcp";
int httpsFromPort = 443;
int httpsToProtocol = 443;
try {
CreateSecurityGroupRequest createSecurityGroupRequest = new CreateSecurityGroupRequest();
createSecurityGroupRequest.withGroupName(groupName).withDescription("Created from AWS SDK Security Group");
createSecurityGroupRequest.setRequestCredentials(credentials);
CreateSecurityGroupResult csgr = amazonEC2Client.createSecurityGroup(createSecurityGroupRequest);
String groupid = csgr.getGroupId();
System.out.println("Security Group Id : " + groupid);
System.out.println("Create Security Group Permission");
Collection<IpPermission> ips = new ArrayList<IpPermission>();
//Permission for SSH only to your ip
IpPermission ipssh = new IpPermission();
ipssh.withIpRanges(sshIpRange).withIpProtocol(sshprotocol).withFromPort(sshFromPort).withToPort(sshToPort);
ips.add(ipssh);
//Permission for HTTP, any one can access
IpPermission iphttp = new IpPermission();
iphttp.withIpRanges(httpIpRange).withIpProtocol(httpProtocol).withFromPort(httpFromPort).withToPort(httpToPort);
ips.add(iphttp);
//Permission for HTTPS, any one can accesss
IpPermission iphttps = new IpPermission();
iphttps.withIpRanges(httpsIpRange).withIpProtocol(httpsProtocol).withFromPort(httpsFromPort).withToPort(httpsToProtocol);
ips.add(iphttps);
System.out.println("Attach Owner to security group");
//Register this security group with owner
AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest = new AuthorizeSecurityGroupIngressRequest();
authorizeSecurityGroupIngressRequest.withGroupName(groupName).withIpPermissions(ips);
amazonEC2Client.authorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest);
securityGroupCreated = true;
} catch (Exception e) {
//TODO: handle exception
e.printStackTrace();
securityGroupCreated = false;
}
System.out.println("securityGroupCreated: " + securityGroupCreated);
return securityGroupCreated;
}
}
source d'informationauteur Sunil Gulabani
Vous devez vous connecter pour publier un commentaire.
Essayer de mettre à jour votre Systemtime.
Lorsque la diffrence entre AWS-datetime et votre datetime sont trop grandes, les informations d'identification ne seront pas acceptées.
Pour Debian/Ubuntu Utilisateurs:
lorsque vous ne jamais régler votre fuseau horaire, vous pouvez le faire avec
Arrêter le ntp-Service, parce que trop de temps important diffrences, ne peuvent pas être modifiées par l'exécution du service.
Synchroniser l'heure et la date (-q Régler l'heure et la quitter /Exécuter qu'une seule fois) (-g Permettre à l'ajustement d'être Grand) (-x Tuèrent jusqu'à 600 secondes /Adjuste aussi le temps de la sorcière de grandes diffrences) (-n N'a pas de fourche /processus ne vais pas à fond)
Redémarrer le service
vérifier réels datetime
ensemble du système datetime pour votre matériel datetime
montrer votre matériel datetime
Si vous mettez vos informations d'identification dans ~/.aws/informations d'identification, alors vous n'avez pas besoin de fournir un paramètre à votre AmazonEC2Client appel. Si vous faites cela, alors sur une instance EC2 le même code fonctionne avec des Suppositions STS rôles.
Pour plus d'infos, voir: http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/credentials.html
"Une erreur du client (AuthFailure) s'est produite lors de l'appel de la [Remplir les espaces vides] opération: AWS n'a pas été en mesure de valider l'accès des informations d'identification"
Si vous êtes sûr de la validité des informations d'identification AWS c'est à dire la clé d'accès et la clé secrète et de profil correspondant nom, votre date et l'heure d'être " hors-piste est un très bon coupable.
Dans mon cas, j'étais confiant, mais j'ai eu tort - j'avais utilisé les mauvaises touches. N'a pas de mal à vérifier.
Disons que vous avez créé un utilisateur IAM appelé "guignol". Configurer le "guignol" dans ~/.aws/config comme suit:
[profile guignol]
region = us-east-1
aws-access-key_id = AKXXXYYY...
aws-secret-key-access = ...
Installer aws cli (command niveau de l'interface) si vous ne l'avez pas déjà fait. Comme un test, exécutez aws ec2 décrivez-les instances --profil de guignol Si vous cumulez un message d'erreur aws n'a pas été en mesure de valider les informations d'identification, d'exécuter aws configure --profil de guignol , entrez vos informations d'identification et exécutez le test de la commande à nouveau.