<?php

# Simple configuration;
$OLD_CERTIFICATE = 'old-certificate-name';
$NEW_CERTIFICATE = 'new-certificate-name';
require '/usr/share/php/AWSSDKforPHP/sdk.class.php';
$ec2 = new AmazonEC2();
$elb = new AmazonELB();
$iam = new AmazonIAM();
$response = $iam->get_server_certificate($NEW_CERTIFICATE);
$response_available_regions = $ec2->describe_regions();
$available_regions = array(AmazonELB::REGION_US_E1, AmazonELB::REGION_US_W1, AmazonELB::REGION_EU_W1, AmazonELB::REGION_APAC_SE1, AmazonELB::REGION_APAC_SE2, AmazonELB::REGION_APAC_NE1, AmazonELB::REGION_SA_E1);
foreach ($available_regions as $region) {
    $elb->set_region($region);
    $list_of_elbs = $elb->describe_load_balancers();
    $elbs = $list_of_elbs->body->to_stdClass();
    foreach ($elbs->DescribeLoadBalancersResult->LoadBalancerDescriptions->member as $single_elb) {
        echo $single_elb->LoadBalancerName . "\n";
        foreach ($single_elb->ListenerDescriptions->member as $single_listener) {
            if ($single_listener->SSLCertificateId != "") {
                $pos = strpos($single_listener->SSLCertificateId, $OLD_CERTIFICATE);
                if ($pos === false) {
                    echo "\t- No need to replace: " . $single_listener->SSLCertificateId . "\n";
                } else {
                    echo "\t- Replacing certificate for port " . $single_listener->LoadBalancerPort . "...";
                    $elb->set_load_balancer_listener_ssl_certificate($single_elb->LoadBalancerName, $single_listener->LoadBalancerPort, $response->body->GetServerCertificateResult->ServerCertificate->ServerCertificateMetadata->Arn);
                    echo " Done!\n";
                }
            }
        }
    }
Exemple #2
0
function EC2_GetRunningInstances()
{
    $now = time();
    $instances = array();
    $key = GetSetting('ec2_key');
    $secret = GetSetting('ec2_secret');
    if ($key && $secret) {
        $ec2 = new AmazonEC2($key, $secret);
        $regions = array();
        $response = $ec2->describe_regions();
        if (isset($response) && $response->isOK()) {
            foreach ($response->body->regionInfo->item as $region) {
                $regions[] = (string) $region->regionName;
            }
        }
        foreach ($regions as $region) {
            $ec2->set_region($region);
            $response = $ec2->describe_instances();
            if (isset($response) && $response->isOK()) {
                foreach ($response->body->reservationSet->item as $item) {
                    foreach ($item->instancesSet->item as $instance) {
                        $wptLocations = null;
                        if (isset($instance->tagSet)) {
                            foreach ($instance->tagSet->item as $tag) {
                                if ($tag->key == 'WPTLocations') {
                                    $wptLocations = explode(',', $tag->value);
                                    break;
                                }
                            }
                        }
                        if (isset($wptLocations)) {
                            $launchTime = strtotime((string) $instance->launchTime);
                            $elapsed = $now - $launchTime;
                            $instances[] = array('region' => $region, 'id' => (string) $instance->instanceId, 'ami' => (string) $instance->imageId, 'state' => (int) $instance->instanceState->code, 'launchTime' => (string) $instance->launchTime, 'launched' => $launchTime, 'runningTime' => $elapsed, 'locations' => $wptLocations);
                        }
                    }
                }
            }
        }
    }
    // update the AMI counts we are tracking locally
    if (count($instances)) {
        $lock = Lock('ec2-instances', true, 120);
        if ($lock) {
            $amis = array();
            foreach ($instances as $instance) {
                if (isset($instance['ami']) && strlen($instance['ami']) && is_numeric($instance['state']) && $instance['state'] <= 16) {
                    if (!isset($amis[$instance['ami']])) {
                        $amis[$instance['ami']] = array('count' => 0);
                    }
                    $amis[$instance['ami']]['count']++;
                }
            }
            file_put_contents('./tmp/ec2-instances.dat', json_encode($amis));
            Unlock($lock);
        }
    }
    return $instances;
}