AwsInspector\Command\CloudwatchLogs\DeleteLambdaTriggerCommand::execute PHP Method

execute() protected method

protected execute ( Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output )
$input Symfony\Component\Console\Input\InputInterface
$output Symfony\Component\Console\Output\OutputInterface
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        // TODO: refactor this to use \AwsInspector\Model\CloudWatchLogs\Repository
        $groupPattern = $input->getArgument('group');
        $lambdaArn = $input->getArgument('lambdaArn');
        $filterName = $input->getArgument('filterName');
        /* @var $cloudwatchLogsClient \Aws\CloudWatchLogs\CloudWatchLogsClient */
        $cloudwatchLogsClient = \AwsInspector\SdkFactory::getClient('cloudwatchlogs');
        $lambdaClient = \AwsInspector\SdkFactory::getClient('lambda');
        $nextToken = null;
        do {
            $params = ['limit' => 50];
            if ($nextToken) {
                $params['nextToken'] = $nextToken;
            }
            $result = $cloudwatchLogsClient->describeLogGroups($params);
            foreach ($result->get('logGroups') as $logGroup) {
                $name = $logGroup['logGroupName'];
                if (preg_match('/' . $groupPattern . '/', $name)) {
                    try {
                        $subscriptionFilters = $cloudwatchLogsClient->describeSubscriptionFilters(['logGroupName' => $logGroup['logGroupName']]);
                        if (empty($subscriptionFilters->get('subscriptionFilters'))) {
                            continue;
                        }
                        $cloudwatchLogsClient->deleteSubscriptionFilter(['filterName' => $filterName, 'logGroupName' => $logGroup['logGroupName']]);
                        $lambdaClient->removePermission(['FunctionName' => $lambdaArn, 'StatementId' => (string) md5($logGroup['logGroupName'])]);
                        $output->writeln('Delete lambda trigger for ' . $logGroup['logGroupName']);
                    } catch (\Aws\CloudWatchLogs\Exception\CloudWatchLogsException $e) {
                        if ($e->getAwsErrorCode() != 'ResourceNotFoundException') {
                            throw $e;
                        }
                    }
                }
            }
            $nextToken = $result->get("nextToken");
        } while ($nextToken);
    }
DeleteLambdaTriggerCommand