// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 using System.Collections.Generic; using System.Threading.Tasks; using Amazon.AppRunner.Model; using Amazon.CloudFormation.Model; using Amazon.CloudFront.Model; using Amazon.CloudWatchEvents.Model; using Amazon.EC2.Model; using Amazon.ECR.Model; using Amazon.ECS.Model; using Amazon.ElasticBeanstalk.Model; using Amazon.ElasticLoadBalancingV2; using Amazon.IdentityManagement.Model; using Amazon.S3.Model; using Amazon.SecurityToken.Model; using LoadBalancer = Amazon.ElasticLoadBalancingV2.Model.LoadBalancer; using Listener = Amazon.ElasticLoadBalancingV2.Model.Listener; using Amazon.CloudControlApi.Model; namespace AWS.Deploy.Common.Data { /// /// Enum for filtering the type of Elastic Beanstalk platform to deploy to. /// public enum BeanstalkPlatformType { Linux, Windows } /// /// Retrieves AWS resources /// /// /// This is meant to be a lightweight wrapper around the SDK, /// business logic should generally be implemented in the caller. /// public interface IAWSResourceQueryer { Task GetDefaultVpc(); Task GetCloudControlApiResource(string type, string identifier); Task> GetCloudFormationStackEvents(string stackName); /// /// Lists all of the EC2 instance types available in the deployment region without any filtering /// /// List of Task> ListOfAvailableInstanceTypes(); /// /// Describes a single EC2 instance type /// /// Instance type (for example, "t2.micro") /// The first if the specified type exists Task DescribeInstanceType(string instanceType); Task DescribeAppRunnerService(string serviceArn); Task> DescribeCloudFormationResources(string stackName); Task DescribeElasticBeanstalkEnvironment(string environmentName); Task DescribeElasticLoadBalancer(string loadBalancerArn); Task> DescribeElasticLoadBalancerListeners(string loadBalancerArn); Task DescribeCloudWatchRule(string ruleName); Task GetS3BucketLocation(string bucketName); Task GetS3BucketWebSiteConfiguration(string bucketName); Task> ListOfECSClusters(string? ecsClusterName = null); Task> ListOfElasticBeanstalkApplications(string? applicationName = null); Task> ListOfElasticBeanstalkEnvironments(string? applicationName = null, string? environmentName = null); Task> ListElasticBeanstalkResourceTags(string resourceArn); Task> ListOfEC2KeyPairs(); Task CreateEC2KeyPair(string keyName, string saveLocation); Task> ListOfIAMRoles(string? servicePrincipal); Task> GetListOfVpcs(); Task> GetElasticBeanstalkPlatformArns(params BeanstalkPlatformType[]? platformTypes); Task GetLatestElasticBeanstalkPlatformArn(BeanstalkPlatformType platformType); Task> GetECRAuthorizationToken(); Task> GetECRRepositories(List? repositoryNames = null); Task CreateECRRepository(string repositoryName); Task> GetCloudFormationStacks(); Task GetCloudFormationStack(string stackName); Task GetCallerIdentity(string awsRegion); Task> ListOfLoadBalancers(LoadBalancerTypeEnum loadBalancerType); Task GetCloudFrontDistribution(string distributionId); Task> ListOfDyanmoDBTables(); Task> ListOfSQSQueuesUrls(); Task> ListOfSNSTopicArns(); Task> ListOfS3Buckets(); Task> GetBeanstalkEnvironmentConfigurationSettings(string environmentName); Task DescribeECRRepository(string respositoryName); Task> DescribeAppRunnerVpcConnectors(); Task> DescribeSubnets(string? vpcID = null); Task> DescribeSecurityGroups(string? vpcID = null); Task GetParameterStoreTextValue(string parameterName); } }