* Important: Be sure to fill in your AWS access credentials in the
* AwsCredentials.properties file before you try to run this
* sample.
* http://aws.amazon.com/security-credentials
*/
AmazonCloudFormation stackbuilder = new AmazonCloudFormationClient(new PropertiesCredentials(
CloudFormationSample.class.getResourceAsStream("AwsCredentials.properties")));
System.out.println("===========================================");
System.out.println("Getting Started with AWS CloudFormation");
System.out.println("===========================================\n");
String stackName = "CloudFormationSampleStack";
String logicalResourceName = "SampleNotificationTopic";
try {
// Create a stack
CreateStackRequest createRequest = new CreateStackRequest();
createRequest.setStackName(stackName);
createRequest.setTemplateBody(convertStreamToString(CloudFormationSample.class.getResourceAsStream("CloudFormationSample.template")));
System.out.println("Creating a stack called " + createRequest.getStackName() + ".");
stackbuilder.createStack(createRequest);
// Wait for stack to be created
// Note that you could use SNS notifications on the CreateStack call to track the progress of the stack creation
System.out.println("Stack creation completed, the stack " + stackName + " completed with " + waitForCompletion(stackbuilder, stackName));
// Show all the stacks for this account along with the resources for each stack
for (Stack stack : stackbuilder.describeStacks(new DescribeStacksRequest()).getStacks()) {
System.out.println("Stack : " + stack.getStackName() + " [" + stack.getStackStatus().toString() + "]");
DescribeStackResourcesRequest stackResourceRequest = new DescribeStackResourcesRequest();
stackResourceRequest.setStackName(stack.getStackName());
for (StackResource resource : stackbuilder.describeStackResources(stackResourceRequest).getStackResources()) {
System.out.format(" %1$-40s %2$-25s %3$s\n", resource.getResourceType(), resource.getLogicalResourceId(), resource.getPhysicalResourceId());
}
}
// Lookup a resource by its logical name
DescribeStackResourcesRequest logicalNameResourceRequest = new DescribeStackResourcesRequest();
logicalNameResourceRequest.setStackName(stackName);
logicalNameResourceRequest.setLogicalResourceId(logicalResourceName);
System.out.format("Looking up resource name %1$s from stack %2$s\n", logicalNameResourceRequest.getLogicalResourceId(), logicalNameResourceRequest.getStackName());
for (StackResource resource : stackbuilder.describeStackResources(logicalNameResourceRequest).getStackResources()) {
System.out.format(" %1$-40s %2$-25s %3$s\n", resource.getResourceType(), resource.getLogicalResourceId(), resource.getPhysicalResourceId());
}
// Delete the stack
DeleteStackRequest deleteRequest = new DeleteStackRequest();
deleteRequest.setStackName(stackName);
System.out.println("Deleting the stack called " + deleteRequest.getStackName() + ".");
stackbuilder.deleteStack(deleteRequest);
// Wait for stack to be deleted
// Note that you could used SNS notifications on the original CreateStack call to track the progress of the stack deletion
System.out.println("Stack creation completed, the stack " + stackName + " completed with " + waitForCompletion(stackbuilder, stackName));