<?php date_default_timezone_set('UTC'); require 'vendor/autoload.php'; require __DIR__ . '/common.php'; $executionStartTime = microtime(true); $executionUuid = getExecutionUuid(); $executionMetrics = ["executionUuid" => $executionUuid, "startTimestamp" => $executionStartTime, "startDateTime" => date('r', $executionStartTime), "amiBuildQueueUrl" => "", "jobMessage" => null, "jobBuildTemplate" => "", "jobBuildTemplateSha" => "", "createdAmiId" => "", "createdAmiRegion" => "", "endedInError" => false, "endTimestamp" => "", "endDateTime" => "", "processingDuration" => ""]; $logger = getAppLogger($executionUuid); $cliConfigArg = getCliArgValue($argv, '--config'); $configPath = $cliConfigArg ?: __DIR__ . "/config/config.yml"; $config = getConfig($configPath, $logger); $aws = createAwsClient($argv, $config); /** @var \Aws\S3\S3Client $s3Client */ $s3Client = $aws->get('S3'); $s3Client->registerStreamWrapper(); $appConfig = $config->get('appConfig'); // switch to log level in app config $logger->setLogLevelThreshold($appConfig['logLevel']); $sqsConfig = $config->get('sqsConfig'); /** @var \Aws\Sqs\SqsClient $sqsClient */ $sqsClient = $aws->get('sqs'); $queueUrl = $sqsConfig['amiBuildRequestQueueUrl']; $executionMetrics['amiBuildQueueUrl'] = $queueUrl; try { $work = $sqsClient->receiveMessage(["QueueUrl" => $queueUrl, "MaxNumberOfMessages" => 1, "MessageAttributeNames" => []]); } catch (Aws\Sqs\Exception\SqsException $e) { $logger->error($e); shutDown('Error access SQS: ' . $e->getMessage()); } catch (\Exception $e) { $logger->error($e);
/** * @param array $cliDefinitions * @param array $argv * @param \Io\Samk\AmiBuilder\Utils\Config $config */ function processCli($cliDefinitions, $argv, $config) { foreach ($cliDefinitions as $cliArgName => $cliArgDef) { list($sectionKey, $itemKey) = explode('.', $cliArgDef['configKeyPath']); $config->setSectionValue($sectionKey, $itemKey, getCliArg($cliArgName, $argv, $cliDefinitions)); } } /** * @param string $awsRegion */ function createCloudWatchLogsConfigs($awsRegion) { $cloudWatchLogsConfDir = __DIR__ . '/config/cloudwatchLogs'; $awsCliConfContent = file_get_contents("{$cloudWatchLogsConfDir}/awscli.dist.conf"); $awsCliConfContent = str_replace('{{aws-region}}', $awsRegion, $awsCliConfContent); file_put_contents("{$cloudWatchLogsConfDir}/awscli.conf", $awsCliConfContent); // nothing to replace in this file copy("{$cloudWatchLogsConfDir}/awslogs.dist.conf", "{$cloudWatchLogsConfDir}/awslogs.conf"); } $logger = getAppLogger(getExecutionUuid()); $config = getConfig(__DIR__ . '/config/config.dist.yml', $logger); processCli($cliDefinitions, $argv, $config); $config->dumpYamlTo(__DIR__ . "/config/config.yml"); // write the AWS CloudWatch Logs configs to ./config/cloudwatchLogs // the deploy script will mv them to the proper place on the machine filesystem createCloudWatchLogsConfigs(getCliArg('awsRegion', $argv, $cliDefinitions));