/* * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ package com.amazonaws.services.resourcegroups; import javax.annotation.Generated; import com.amazonaws.*; import com.amazonaws.regions.*; import com.amazonaws.services.resourcegroups.model.*; /** * Interface for accessing Resource Groups. *

* Note: Do not directly implement this interface, new methods are added to it regularly. Extend from * {@link com.amazonaws.services.resourcegroups.AbstractAWSResourceGroups} instead. *

*

*

* Resource Groups lets you organize Amazon Web Services resources such as Amazon Elastic Compute Cloud instances, * Amazon Relational Database Service databases, and Amazon Simple Storage Service buckets into groups using criteria * that you define as tags. A resource group is a collection of resources that match the resource types specified in a * query, and share one or more tags or portions of tags. You can create a group of resources based on their roles in * your cloud infrastructure, lifecycle stages, regions, application layers, or virtually any criteria. Resource Groups * enable you to automate management tasks, such as those in Amazon Web Services Systems Manager Automation documents, * on tag-related resources in Amazon Web Services Systems Manager. Groups of tagged resources also let you quickly view * a custom console in Amazon Web Services Systems Manager that shows Config compliance and other monitoring data about * member resources. *

*

* To create a resource group, build a resource query, and specify tags that identify the criteria that members of the * group have in common. Tags are key-value pairs. *

*

* For more information about Resource Groups, see the Resource Groups User Guide. *

*

* Resource Groups uses a REST-compliant API that you can use to perform the following types of operations. *

* */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public interface AWSResourceGroups { /** * The region metadata service name for computing region endpoints. You can use this value to retrieve metadata * (such as supported regions) of the service. * * @see RegionUtils#getRegionsForService(String) */ String ENDPOINT_PREFIX = "resource-groups"; /** *

* Creates a resource group with the specified name and description. You can optionally include either a resource * query or a service configuration. For more information about constructing a resource query, see Build queries and groups in * Resource Groups in the Resource Groups User Guide. For more information about service-linked groups * and service configurations, see Service configurations for Resource * Groups. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param createGroupRequest * @return Result of the CreateGroup operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.CreateGroup * @see AWS * API Documentation */ CreateGroupResult createGroup(CreateGroupRequest createGroupRequest); /** *

* Deletes the specified resource group. Deleting a resource group does not delete any resources that are members of * the group; it only deletes the group structure. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param deleteGroupRequest * @return Result of the DeleteGroup operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws NotFoundException * One or more of the specified resources don't exist. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.DeleteGroup * @see AWS * API Documentation */ DeleteGroupResult deleteGroup(DeleteGroupRequest deleteGroupRequest); /** *

* Retrieves the current status of optional features in Resource Groups. *

* * @param getAccountSettingsRequest * @return Result of the GetAccountSettings operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.GetAccountSettings * @see AWS API Documentation */ GetAccountSettingsResult getAccountSettings(GetAccountSettingsRequest getAccountSettingsRequest); /** *

* Returns information about a specified resource group. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param getGroupRequest * @return Result of the GetGroup operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws NotFoundException * One or more of the specified resources don't exist. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.GetGroup * @see AWS API * Documentation */ GetGroupResult getGroup(GetGroupRequest getGroupRequest); /** *

* Retrieves the service configuration associated with the specified resource group. For details about the service * configuration syntax, see Service * configurations for Resource Groups. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param getGroupConfigurationRequest * @return Result of the GetGroupConfiguration operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws NotFoundException * One or more of the specified resources don't exist. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.GetGroupConfiguration * @see AWS API Documentation */ GetGroupConfigurationResult getGroupConfiguration(GetGroupConfigurationRequest getGroupConfigurationRequest); /** *

* Retrieves the resource query associated with the specified resource group. For more information about resource * queries, see Create a tag-based group in Resource Groups. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param getGroupQueryRequest * @return Result of the GetGroupQuery operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws NotFoundException * One or more of the specified resources don't exist. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.GetGroupQuery * @see AWS * API Documentation */ GetGroupQueryResult getGroupQuery(GetGroupQueryRequest getGroupQueryRequest); /** *

* Returns a list of tags that are associated with a resource group, specified by an ARN. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param getTagsRequest * @return Result of the GetTags operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws NotFoundException * One or more of the specified resources don't exist. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.GetTags * @see AWS API * Documentation */ GetTagsResult getTags(GetTagsRequest getTagsRequest); /** *

* Adds the specified resources to the specified group. *

* *

* You can use this operation with only resource groups that are configured with the following types: *

* *

* Other resource group type and resource types aren't currently supported by this operation. *

*
*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param groupResourcesRequest * @return Result of the GroupResources operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws NotFoundException * One or more of the specified resources don't exist. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.GroupResources * @see AWS * API Documentation */ GroupResourcesResult groupResources(GroupResourcesRequest groupResourcesRequest); /** *

* Returns a list of ARNs of the resources that are members of a specified resource group. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param listGroupResourcesRequest * @return Result of the ListGroupResources operation returned by the service. * @throws UnauthorizedException * The request was rejected because it doesn't have valid credentials for the target resource. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws NotFoundException * One or more of the specified resources don't exist. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.ListGroupResources * @see AWS API Documentation */ ListGroupResourcesResult listGroupResources(ListGroupResourcesRequest listGroupResourcesRequest); /** *

* Returns a list of existing Resource Groups in your account. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param listGroupsRequest * @return Result of the ListGroups operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.ListGroups * @see AWS API * Documentation */ ListGroupsResult listGroups(ListGroupsRequest listGroupsRequest); /** *

* Attaches a service configuration to the specified group. This occurs asynchronously, and can take time to * complete. You can use GetGroupConfiguration to check the status of the update. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param putGroupConfigurationRequest * @return Result of the PutGroupConfiguration operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws NotFoundException * One or more of the specified resources don't exist. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.PutGroupConfiguration * @see AWS API Documentation */ PutGroupConfigurationResult putGroupConfiguration(PutGroupConfigurationRequest putGroupConfigurationRequest); /** *

* Returns a list of Amazon Web Services resource identifiers that matches the specified query. The query uses the * same format as a resource query in a CreateGroup or UpdateGroupQuery operation. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param searchResourcesRequest * @return Result of the SearchResources operation returned by the service. * @throws UnauthorizedException * The request was rejected because it doesn't have valid credentials for the target resource. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.SearchResources * @see AWS API Documentation */ SearchResourcesResult searchResources(SearchResourcesRequest searchResourcesRequest); /** *

* Adds tags to a resource group with the specified ARN. Existing tags on a resource group are not changed if they * are not specified in the request parameters. *

* *

* Do not store personally identifiable information (PII) or other confidential or sensitive information in tags. We * use tags to provide you with billing and administration services. Tags are not intended to be used for private or * sensitive data. *

*
*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param tagRequest * @return Result of the Tag operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws NotFoundException * One or more of the specified resources don't exist. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.Tag * @see AWS API * Documentation */ TagResult tag(TagRequest tagRequest); /** *

* Removes the specified resources from the specified group. This operation works only with static groups that you * populated using the GroupResources operation. It doesn't work with any resource groups that are * automatically populated by tag-based or CloudFormation stack-based queries. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param ungroupResourcesRequest * @return Result of the UngroupResources operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws NotFoundException * One or more of the specified resources don't exist. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.UngroupResources * @see AWS API Documentation */ UngroupResourcesResult ungroupResources(UngroupResourcesRequest ungroupResourcesRequest); /** *

* Deletes tags from a specified resource group. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param untagRequest * @return Result of the Untag operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws NotFoundException * One or more of the specified resources don't exist. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.Untag * @see AWS API * Documentation */ UntagResult untag(UntagRequest untagRequest); /** *

* Turns on or turns off optional features in Resource Groups. *

*

* The preceding example shows that the request to turn on group lifecycle events is IN_PROGRESS. You * can call the GetAccountSettings operation to check for completion by looking for * GroupLifecycleEventsStatus to change to ACTIVE. *

* * @param updateAccountSettingsRequest * @return Result of the UpdateAccountSettings operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.UpdateAccountSettings * @see AWS API Documentation */ UpdateAccountSettingsResult updateAccountSettings(UpdateAccountSettingsRequest updateAccountSettingsRequest); /** *

* Updates the description for an existing group. You cannot update the name of a resource group. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param updateGroupRequest * @return Result of the UpdateGroup operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws NotFoundException * One or more of the specified resources don't exist. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.UpdateGroup * @see AWS * API Documentation */ UpdateGroupResult updateGroup(UpdateGroupRequest updateGroupRequest); /** *

* Updates the resource query of a group. For more information about resource queries, see Create a tag-based group in Resource Groups. *

*

* Minimum permissions *

*

* To run this command, you must have the following permissions: *

* * * @param updateGroupQueryRequest * @return Result of the UpdateGroupQuery operation returned by the service. * @throws BadRequestException * The request includes one or more parameters that violate validation rules. * @throws ForbiddenException * The caller isn't authorized to make the request. Check permissions. * @throws NotFoundException * One or more of the specified resources don't exist. * @throws MethodNotAllowedException * The request uses an HTTP method that isn't allowed for the specified resource. * @throws TooManyRequestsException * You've exceeded throttling limits by making too many requests in a period of time. * @throws InternalServerErrorException * An internal error occurred while processing the request. Try again later. * @sample AWSResourceGroups.UpdateGroupQuery * @see AWS API Documentation */ UpdateGroupQueryResult updateGroupQuery(UpdateGroupQueryRequest updateGroupQueryRequest); /** * Shuts down this client object, releasing any resources that might be held open. This is an optional method, and * callers are not expected to call it, but can if they want to explicitly release any open resources. Once a client * has been shutdown, it should not be used to make any more requests. */ void shutdown(); /** * Returns additional metadata for a previously executed successful request, typically used for debugging issues * where a service isn't acting as expected. This data isn't considered part of the result data returned by an * operation, so it's available through this separate, diagnostic interface. *

* Response metadata is only cached for a limited period of time, so if you need to access this extra diagnostic * information for an executed request, you should use this method to retrieve it as soon as possible after * executing a request. * * @param request * The originally executed request. * * @return The response metadata for the specified request, or null if none is available. */ ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request); }