Verwendet on-line decomentation ich mit dem folgenden Code kommen die aktuelle EC2 Instanz zu beenden:Wie kann ich mit den SDKs von AWS Java den CloudFormation-Stack der aktuellen Instanz beenden?
public class Ec2Utility {
static private final String LOCAL_META_DATA_ENDPOINT = "http://169.254.169.254/latest/meta-data/";
static private final String LOCAL_INSTANCE_ID_SERVICE = "instance-id";
static public void terminateMe() throws Exception {
TerminateInstancesRequest terminateRequest = new TerminateInstancesRequest().withInstanceIds(getInstanceId());
AmazonEC2 ec2 = new AmazonEC2Client();
ec2.terminateInstances(terminateRequest);
}
static public String getInstanceId() throws Exception {
//SimpleRestClient, is an internal wrapper on http client.
SimpleRestClient client = new SimpleRestClient(LOCAL_META_DATA_ENDPOINT);
HttpResponse response = client.makeRequest(METHOD.GET, LOCAL_INSTANCE_ID_SERVICE);
return IOUtils.toString(response.getEntity().getContent(), "UTF-8");
}
}
Mein Problem, dass meine EC2-Instanz eine AutoScalingGroup ist, unter denen ein CloudFormationStack ist unter, wegen meines also ist Organisationsbereitstellungsstandards, obwohl diese einzige EC2 alles ist, was es für diese Funktion gibt.
Also, ich möchte den gesamten CloudFormationStack von der JavaSDK beenden, bedenken Sie, ich habe nicht den CloudFormation Stack Name im Voraus, da ich nicht die EC2 Instance Id hatte, so dass ich es bekommen muss der Code, der die API-Aufrufe verwendet.
Wie kann ich das tun, wenn ich es kann?
Ich denke, ich war nicht klar in der Frage (ich werde es in einer Sekunde bearbeiten). Ich habe den StackName nicht im Voraus. Um den EC2 zu löschen, könnte ich die Instanz-ID aus dem Code erhalten. Gibt es eine Möglichkeit, den entsprechenden StackName-Code zu erhalten? –
Wenn Sie 'describeInstances' auf Ihrer ec2-Instanz ausführen, sollte die Tag-Liste normalerweise den Namen des Wolkenbildungsstapels enthalten –