2016-03-22 7 views
0

Ich habe gerade mit AWS begonnen und ich habe einige Fragen.Verwendet AWS SDK, um eine Instanz und aws CLI zu starten, um es zu verwalten, ein guter Ansatz?

Zuerst folgte ich die offizielle Dokumentation darüber, wie eine Instanz mit AWS SDK für Java wie folgt zu starten:

AmazonEC2 Client = new AmazonEC2Client(awsCreds); 
    CreateSecurityGroupRequest csgr = new CreateSecurityGroupRequest(); 
    csgr.withGroupName("Azzouz_group").withDescription("My security group"); 
    IpPermission ipPermission = new IpPermission(); 
    ipPermission.withIpRanges("0.0.0.0/0").withIpProtocol("tcp"); 
    AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest = new AuthorizeSecurityGroupIngressRequest(); 

    authorizeSecurityGroupIngressRequest.withGroupName("Azzouz_group").withIpPermissions(ipPermission); 


    RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); 

    runInstancesRequest.withImageId("ami-4b814f22") 
      .withInstanceType("m1.small") 
      .withMinCount(1) 
      .withMaxCount(1) 
      .withKeyName("azzouz_key") 
      .withSecurityGroups("Azzouz_group"); 

    RunInstancesResult runInstancesResult = Client.runInstances(runInstancesRequest); 
    RunInstancesResult runInstancesResult = Client.runInstances(runInstancesRequest); 

    String instanceId = runInstancesResult.getReservation().getInstances().get(0).getInstanceId(); 

ich nicht den CreateKeyPairRequest Teil verwendet haben, weil ich meinen öffentlichen Schlüssel zu Amazon hochladen möchten so, wenn ich versuche zu ssh in in ich habe nicht -i path/to/key.pem hinzufügen und ich habe nur die Schlüsselnamen in meinem Java-Code zu erwähnen ("azzouz_key"), in den nächsten Zeilen, $USER enthält azzouz_key:

keypair=$USER # just a name 
publickeyfile=$HOME/.ssh/id_rsa.pub 
regions=$(aws ec2 describe-regions \ 
    --output text \ 
    --query 'Regions[*].RegionName') 

for region in $regions; do 
    echo $region 
    aws ec2 import-key-pair \ 
    --region "$region" \ 
    --key-name "$keypair" \ 
    --public-key-material "file://$publickeyfile" 
done 

was ich jetzt will, ist eine Verbindung mit der Instanz und automatisieren einige Sachen. Also werde ich eine Shell aus dem Java Code aufrufen, das Skript bekommt eine Instanz ID als Parameter, dann bekommt es die IP Adresse (mit aws ec2 describe-instances), ssh hinein und macht ein paar Sachen.

Ich wollte ssh-Verbindung zu der Instanz von jeder IP nur als Start (0.0.0.0/0) autorisieren und ich bin mir nicht sicher, ob das ist, was ich tun soll.

Also, meine Frage ist: Ist das der beste Ansatz ?! Soll ich nur den aws cli verwenden, um die Instanz zu erstellen und zu verwalten ?! Erwähnen nur den Namen des Schlüsselpaars passt mit dem Mechanismus des Hochladens des öffentlichen SSH-Schlüssel zu Amazon ?!

Bitte, ich fange gerade an, ich bin ein Praktikant und ich habe noch keinen Zugang zu einem Amazon Konto, so dass ich meine Arbeit testen kann. Ich arbeite das alles nur in meinem Kopf. VIELEN DANK!

Antwort

2

Ich empfehle Ihnen, ein Konto in AWS einzurichten und die AWS-Optionen für freie Ebenen zu verwenden.

Alles in allem ist es da und es ist kostenlos (nur darauf achten, was Sie starten oder im Service verwenden).

Abgesehen davon, Ihre Frage, wie von überall Verbindungen über SSH zu autorisieren, wird diese über Sicherheitsgruppen durchgeführt (http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)

über das, was ist die beste Option, das hängt wirklich von dir ab.

Wenn Sie 2 Instanzen in Ihrem Leben auf AWS starten müssen, dann ist die Konsole gut genug. Wenn Sie Ihr Hybrid-Setup orchestrieren möchten, ist wahrscheinlich Ihr Weg der Beste.

CLI ist eine ausgezeichnete Lösung auch für den täglichen Betrieb.

In einfachen Worten, es gibt keinen guten Weg oder einen guten oder schlechten Ansatz. Es hängt alles von Ihren Bedürfnissen ab.

Ich hoffe, das hilft irgendwie.

+0

Vielen Dank Maurizio. Über das kostenlose Tierkonto braucht es eine Kreditkarte, und in meinem Land haben wir solche Karten nicht. Das ist das Problem, also warte ich darauf, dass mein Chef mir nächste Woche Zugang gewährt. –

+0

Richtig, leider keine Kreditkarte keine Party auf AWS. Gibt es eine Möglichkeit, eine virtuelle Kreditkarte in Ihrem Land zu erhalten? –

+0

Ich arbeite daran. Vielen Dank! –

0

Automatisierung ist ein großes Thema. Wenn Sie die AWS-Automatisierung mithilfe von Skripten erweitern möchten, müssen Sie zunächst die AWS-Ressourcen-Tags benennen, bevor Sie das API/SDK anfassen.

Tags Benennung ist eine implizite Möglichkeit, auf AWS-Ressource zu verweisen, ohne explizit die Ressourcen-ID anzugeben (z. B. VPC-ID, EC2-ID, Schnittstellen-ID usw.). Bei Ressourcen wie EC2, bei denen die Verwendung von Tags während der Erstellung nicht möglich ist, müssen Sie die Verwendung von "client-token" untersuchen.

Mit AWS CLI können Sie viel automatisieren, um jedoch das Ergebnis der Antwort zu manipulieren, benötigen Sie Shell Script Skill, um sie zu manipulieren. Ich schlage vor, dass Sie die Sprache des AWS SDK auswählen, mit der Sie vertraut sind.

Cloud-Konfigurations-Management-Tools (es gibt begrenzte Unterstützung von Tools wie Ansible, Salzstapel, Marionette) kann der nächste Schritt sein, wenn Sie planen, die gesamte Source-Deployment-, Server-Konfiguration zu erweitern.