public AvailableServiceResponse getAvailableServices() {
        AWSPolicy awsPolicy = buildAwsSetupPolicy();

        ArrayList<AvailableService> services = new ArrayList<>();

        String policy;
        try {
            policy = objectMapper.writeValueAsString(awsPolicy);
        } catch (JsonProcessingException e) {
            LOG.error(POLICY_ENCODING_ERROR, e);
            throw new InternalServerErrorException(POLICY_ENCODING_ERROR, e);
        }
        AvailableService cloudWatchService =
                AvailableService.create("CloudWatch",
                        "Retrieve CloudWatch logs via Kinesis. Kinesis allows streaming of the logs " +
                                "in real time. AWS CloudWatch is a monitoring and management service built " +
                                "for developers, system operators, site reliability engineers (SRE), " +
                                "and IT managers.",
                        policy,
                        "Requires Kinesis",
                        "https://aws.amazon.com/cloudwatch/");
        services.add(cloudWatchService);
        return AvailableServiceResponse.create(services, services.size());
    }
@Test
    public void testAvailableServices() {

        AvailableServiceResponse services = awsService.getAvailableServices();

        // There should be one service.
        assertEquals(1, services.total());
        assertEquals(1, services.services().size());

        // CloudWatch should be in the list of available services.
        assertTrue(services.services().stream().anyMatch(s -> s.name().equals("CloudWatch")));

        // Verify that some of the needed actions are present.
        String policy = services.services().get(0).policy();
        assertTrue(policy.contains("cloudwatch"));
        assertTrue(policy.contains("dynamodb"));
        assertTrue(policy.contains("ec2"));
        assertTrue(policy.contains("elasticloadbalancing"));
        assertTrue(policy.contains("kinesis"));
    }