Current section
Files
Jump to
Current section
Files
src/aws_cloudtrail.erl
%% WARNING: DO NOT EDIT, AUTO-GENERATED CODE!
%% See https://github.com/aws-beam/aws-codegen for more details.
%% @doc CloudTrail
%%
%% This is the CloudTrail API Reference.
%%
%% It provides descriptions of actions, data types, common parameters, and
%% common errors for CloudTrail.
%%
%% CloudTrail is a web service that records Amazon Web Services API calls for
%% your Amazon Web Services account and delivers log files to an Amazon S3
%% bucket. The recorded information includes the identity of the user, the
%% start time of the Amazon Web Services API call, the source IP address, the
%% request parameters, and the response elements returned by the service.
%%
%% As an alternative to the API, you can use one of the Amazon Web Services
%% SDKs, which consist of libraries and sample code for various programming
%% languages and platforms (Java, Ruby, .NET, iOS, Android, etc.). The SDKs
%% provide programmatic access to CloudTrail. For example, the SDKs handle
%% cryptographically signing requests, managing errors, and retrying requests
%% automatically. For more information about the Amazon Web Services SDKs,
%% including how to download and install them, see Tools to Build on Amazon
%% Web Services.
%%
%% See the CloudTrail User Guide for information about the data that is
%% included with each Amazon Web Services API call listed in the log files.
-module(aws_cloudtrail).
-export([add_tags/2,
add_tags/3,
cancel_query/2,
cancel_query/3,
create_channel/2,
create_channel/3,
create_event_data_store/2,
create_event_data_store/3,
create_trail/2,
create_trail/3,
delete_channel/2,
delete_channel/3,
delete_event_data_store/2,
delete_event_data_store/3,
delete_resource_policy/2,
delete_resource_policy/3,
delete_trail/2,
delete_trail/3,
deregister_organization_delegated_admin/2,
deregister_organization_delegated_admin/3,
describe_query/2,
describe_query/3,
describe_trails/2,
describe_trails/3,
disable_federation/2,
disable_federation/3,
enable_federation/2,
enable_federation/3,
get_channel/2,
get_channel/3,
get_event_data_store/2,
get_event_data_store/3,
get_event_selectors/2,
get_event_selectors/3,
get_import/2,
get_import/3,
get_insight_selectors/2,
get_insight_selectors/3,
get_query_results/2,
get_query_results/3,
get_resource_policy/2,
get_resource_policy/3,
get_trail/2,
get_trail/3,
get_trail_status/2,
get_trail_status/3,
list_channels/2,
list_channels/3,
list_event_data_stores/2,
list_event_data_stores/3,
list_import_failures/2,
list_import_failures/3,
list_imports/2,
list_imports/3,
list_insights_metric_data/2,
list_insights_metric_data/3,
list_public_keys/2,
list_public_keys/3,
list_queries/2,
list_queries/3,
list_tags/2,
list_tags/3,
list_trails/2,
list_trails/3,
lookup_events/2,
lookup_events/3,
put_event_selectors/2,
put_event_selectors/3,
put_insight_selectors/2,
put_insight_selectors/3,
put_resource_policy/2,
put_resource_policy/3,
register_organization_delegated_admin/2,
register_organization_delegated_admin/3,
remove_tags/2,
remove_tags/3,
restore_event_data_store/2,
restore_event_data_store/3,
start_event_data_store_ingestion/2,
start_event_data_store_ingestion/3,
start_import/2,
start_import/3,
start_logging/2,
start_logging/3,
start_query/2,
start_query/3,
stop_event_data_store_ingestion/2,
stop_event_data_store_ingestion/3,
stop_import/2,
stop_import/3,
stop_logging/2,
stop_logging/3,
update_channel/2,
update_channel/3,
update_event_data_store/2,
update_event_data_store/3,
update_trail/2,
update_trail/3]).
-include_lib("hackney/include/hackney_lib.hrl").
%%====================================================================
%% API
%%====================================================================
%% @doc Adds one or more tags to a trail, event data store, or channel, up to
%% a limit of 50.
%%
%% Overwrites an existing tag's value when a new value is specified for
%% an existing tag key. Tag key names must be unique; you cannot have two
%% keys with the same name but different values. If you specify a key without
%% a value, the tag will be created with the specified key and a value of
%% null. You can tag a trail or event data store that applies to all Amazon
%% Web Services Regions only from the Region in which the trail or event data
%% store was created (also known as its home Region).
add_tags(Client, Input)
when is_map(Client), is_map(Input) ->
add_tags(Client, Input, []).
add_tags(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"AddTags">>, Input, Options).
%% @doc Cancels a query if the query is not in a terminated state, such as
%% `CANCELLED', `FAILED', `TIMED_OUT', or `FINISHED'.
%%
%% You must specify an ARN value for `EventDataStore'. The ID of the
%% query that you want to cancel is also required. When you run
%% `CancelQuery', the query status might show as `CANCELLED' even if
%% the operation is not yet finished.
cancel_query(Client, Input)
when is_map(Client), is_map(Input) ->
cancel_query(Client, Input, []).
cancel_query(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"CancelQuery">>, Input, Options).
%% @doc Creates a channel for CloudTrail to ingest events from a partner or
%% external source.
%%
%% After you create a channel, a CloudTrail Lake event data store can log
%% events from the partner or source that you specify.
create_channel(Client, Input)
when is_map(Client), is_map(Input) ->
create_channel(Client, Input, []).
create_channel(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"CreateChannel">>, Input, Options).
%% @doc Creates a new event data store.
create_event_data_store(Client, Input)
when is_map(Client), is_map(Input) ->
create_event_data_store(Client, Input, []).
create_event_data_store(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"CreateEventDataStore">>, Input, Options).
%% @doc Creates a trail that specifies the settings for delivery of log data
%% to an Amazon S3 bucket.
create_trail(Client, Input)
when is_map(Client), is_map(Input) ->
create_trail(Client, Input, []).
create_trail(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"CreateTrail">>, Input, Options).
%% @doc Deletes a channel.
delete_channel(Client, Input)
when is_map(Client), is_map(Input) ->
delete_channel(Client, Input, []).
delete_channel(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"DeleteChannel">>, Input, Options).
%% @doc Disables the event data store specified by `EventDataStore',
%% which accepts an event data store ARN.
%%
%% After you run `DeleteEventDataStore', the event data store enters a
%% `PENDING_DELETION' state, and is automatically deleted after a wait
%% period of seven days. `TerminationProtectionEnabled' must be set to
%% `False' on the event data store and the `FederationStatus' must be
%% `DISABLED'. You cannot delete an event data store if
%% `TerminationProtectionEnabled' is `True' or the
%% `FederationStatus' is `ENABLED'.
%%
%% After you run `DeleteEventDataStore' on an event data store, you
%% cannot run `ListQueries', `DescribeQuery', or
%% `GetQueryResults' on queries that are using an event data store in a
%% `PENDING_DELETION' state. An event data store in the
%% `PENDING_DELETION' state does not incur costs.
delete_event_data_store(Client, Input)
when is_map(Client), is_map(Input) ->
delete_event_data_store(Client, Input, []).
delete_event_data_store(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"DeleteEventDataStore">>, Input, Options).
%% @doc Deletes the resource-based policy attached to the CloudTrail channel.
delete_resource_policy(Client, Input)
when is_map(Client), is_map(Input) ->
delete_resource_policy(Client, Input, []).
delete_resource_policy(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"DeleteResourcePolicy">>, Input, Options).
%% @doc Deletes a trail.
%%
%% This operation must be called from the Region in which the trail was
%% created. `DeleteTrail' cannot be called on the shadow trails
%% (replicated trails in other Regions) of a trail that is enabled in all
%% Regions.
delete_trail(Client, Input)
when is_map(Client), is_map(Input) ->
delete_trail(Client, Input, []).
delete_trail(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"DeleteTrail">>, Input, Options).
%% @doc Removes CloudTrail delegated administrator permissions from a member
%% account in an organization.
deregister_organization_delegated_admin(Client, Input)
when is_map(Client), is_map(Input) ->
deregister_organization_delegated_admin(Client, Input, []).
deregister_organization_delegated_admin(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"DeregisterOrganizationDelegatedAdmin">>, Input, Options).
%% @doc Returns metadata about a query, including query run time in
%% milliseconds, number of events scanned and matched, and query status.
%%
%% If the query results were delivered to an S3 bucket, the response also
%% provides the S3 URI and the delivery status.
%%
%% You must specify either a `QueryID' or a `QueryAlias'. Specifying
%% the `QueryAlias' parameter returns information about the last query
%% run for the alias.
describe_query(Client, Input)
when is_map(Client), is_map(Input) ->
describe_query(Client, Input, []).
describe_query(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"DescribeQuery">>, Input, Options).
%% @doc Retrieves settings for one or more trails associated with the current
%% Region for your account.
describe_trails(Client, Input)
when is_map(Client), is_map(Input) ->
describe_trails(Client, Input, []).
describe_trails(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"DescribeTrails">>, Input, Options).
%% @doc Disables Lake query federation on the specified event data store.
%%
%% When you disable federation, CloudTrail disables the integration with
%% Glue, Lake Formation, and Amazon Athena. After disabling Lake query
%% federation, you can no longer query your event data in Amazon Athena.
%%
%% No CloudTrail Lake data is deleted when you disable federation and you can
%% continue to run queries in CloudTrail Lake.
disable_federation(Client, Input)
when is_map(Client), is_map(Input) ->
disable_federation(Client, Input, []).
disable_federation(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"DisableFederation">>, Input, Options).
%% @doc Enables Lake query federation on the specified event data store.
%%
%% Federating an event data store lets you view the metadata associated with
%% the event data store in the Glue Data Catalog and run SQL queries against
%% your event data using Amazon Athena. The table metadata stored in the Glue
%% Data Catalog lets the Athena query engine know how to find, read, and
%% process the data that you want to query.
%%
%% When you enable Lake query federation, CloudTrail creates a managed
%% database named `aws:cloudtrail' (if the database doesn't already
%% exist) and a managed federated table in the Glue Data Catalog. The event
%% data store ID is used for the table name. CloudTrail registers the role
%% ARN and event data store in Lake Formation, the service responsible for
%% allowing fine-grained access control of the federated resources in the
%% Glue Data Catalog.
%%
%% For more information about Lake query federation, see Federate an event
%% data store.
enable_federation(Client, Input)
when is_map(Client), is_map(Input) ->
enable_federation(Client, Input, []).
enable_federation(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"EnableFederation">>, Input, Options).
%% @doc Returns information about a specific channel.
get_channel(Client, Input)
when is_map(Client), is_map(Input) ->
get_channel(Client, Input, []).
get_channel(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"GetChannel">>, Input, Options).
%% @doc Returns information about an event data store specified as either an
%% ARN or the ID portion of the ARN.
get_event_data_store(Client, Input)
when is_map(Client), is_map(Input) ->
get_event_data_store(Client, Input, []).
get_event_data_store(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"GetEventDataStore">>, Input, Options).
%% @doc Describes the settings for the event selectors that you configured
%% for your trail.
%%
%% The information returned for your event selectors includes the following:
%%
%% <ul> <li> If your event selector includes read-only events, write-only
%% events, or all events. This applies to both management events and data
%% events.
%%
%% </li> <li> If your event selector includes management events.
%%
%% </li> <li> If your event selector includes data events, the resources on
%% which you are logging data events.
%%
%% </li> </ul> For more information about logging management and data events,
%% see the following topics in the CloudTrail User Guide:
%%
%% <ul> <li> Logging management events
%%
%% </li> <li> Logging data events
%%
%% </li> </ul>
get_event_selectors(Client, Input)
when is_map(Client), is_map(Input) ->
get_event_selectors(Client, Input, []).
get_event_selectors(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"GetEventSelectors">>, Input, Options).
%% @doc Returns information about a specific import.
get_import(Client, Input)
when is_map(Client), is_map(Input) ->
get_import(Client, Input, []).
get_import(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"GetImport">>, Input, Options).
%% @doc Describes the settings for the Insights event selectors that you
%% configured for your trail or event data store.
%%
%% `GetInsightSelectors' shows if CloudTrail Insights event logging is
%% enabled on the trail or event data store, and if it is, which Insights
%% types are enabled. If you run `GetInsightSelectors' on a trail or
%% event data store that does not have Insights events enabled, the operation
%% throws the exception `InsightNotEnabledException'
%%
%% Specify either the `EventDataStore' parameter to get Insights event
%% selectors for an event data store, or the `TrailName' parameter to the
%% get Insights event selectors for a trail. You cannot specify these
%% parameters together.
%%
%% For more information, see Logging CloudTrail Insights events in the
%% CloudTrail User Guide.
get_insight_selectors(Client, Input)
when is_map(Client), is_map(Input) ->
get_insight_selectors(Client, Input, []).
get_insight_selectors(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"GetInsightSelectors">>, Input, Options).
%% @doc Gets event data results of a query.
%%
%% You must specify the `QueryID' value returned by the `StartQuery'
%% operation.
get_query_results(Client, Input)
when is_map(Client), is_map(Input) ->
get_query_results(Client, Input, []).
get_query_results(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"GetQueryResults">>, Input, Options).
%% @doc Retrieves the JSON text of the resource-based policy document
%% attached to the CloudTrail channel.
get_resource_policy(Client, Input)
when is_map(Client), is_map(Input) ->
get_resource_policy(Client, Input, []).
get_resource_policy(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"GetResourcePolicy">>, Input, Options).
%% @doc Returns settings information for a specified trail.
get_trail(Client, Input)
when is_map(Client), is_map(Input) ->
get_trail(Client, Input, []).
get_trail(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"GetTrail">>, Input, Options).
%% @doc Returns a JSON-formatted list of information about the specified
%% trail.
%%
%% Fields include information on delivery errors, Amazon SNS and Amazon S3
%% errors, and start and stop logging times for each trail. This operation
%% returns trail status from a single Region. To return trail status from all
%% Regions, you must call the operation on each Region.
get_trail_status(Client, Input)
when is_map(Client), is_map(Input) ->
get_trail_status(Client, Input, []).
get_trail_status(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"GetTrailStatus">>, Input, Options).
%% @doc Lists the channels in the current account, and their source names.
list_channels(Client, Input)
when is_map(Client), is_map(Input) ->
list_channels(Client, Input, []).
list_channels(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"ListChannels">>, Input, Options).
%% @doc Returns information about all event data stores in the account, in
%% the current Region.
list_event_data_stores(Client, Input)
when is_map(Client), is_map(Input) ->
list_event_data_stores(Client, Input, []).
list_event_data_stores(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"ListEventDataStores">>, Input, Options).
%% @doc Returns a list of failures for the specified import.
list_import_failures(Client, Input)
when is_map(Client), is_map(Input) ->
list_import_failures(Client, Input, []).
list_import_failures(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"ListImportFailures">>, Input, Options).
%% @doc Returns information on all imports, or a select set of imports by
%% `ImportStatus' or `Destination'.
list_imports(Client, Input)
when is_map(Client), is_map(Input) ->
list_imports(Client, Input, []).
list_imports(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"ListImports">>, Input, Options).
%% @doc Returns Insights metrics data for trails that have enabled Insights.
%%
%% The request must include the `EventSource', `EventName', and
%% `InsightType' parameters.
%%
%% If the `InsightType' is set to `ApiErrorRateInsight', the request
%% must also include the `ErrorCode' parameter.
%%
%% The following are the available time periods for
%% `ListInsightsMetricData'. Each cutoff is inclusive.
%%
%% <ul> <li> Data points with a period of 60 seconds (1-minute) are available
%% for 15 days.
%%
%% </li> <li> Data points with a period of 300 seconds (5-minute) are
%% available for 63 days.
%%
%% </li> <li> Data points with a period of 3600 seconds (1 hour) are
%% available for 90 days.
%%
%% </li> </ul> Access to the `ListInsightsMetricData' API operation is
%% linked to the `cloudtrail:LookupEvents' action. To use this operation,
%% you must have permissions to perform the `cloudtrail:LookupEvents'
%% action.
list_insights_metric_data(Client, Input)
when is_map(Client), is_map(Input) ->
list_insights_metric_data(Client, Input, []).
list_insights_metric_data(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"ListInsightsMetricData">>, Input, Options).
%% @doc Returns all public keys whose private keys were used to sign the
%% digest files within the specified time range.
%%
%% The public key is needed to validate digest files that were signed with
%% its corresponding private key.
%%
%% CloudTrail uses different private and public key pairs per Region. Each
%% digest file is signed with a private key unique to its Region. When you
%% validate a digest file from a specific Region, you must look in the same
%% Region for its corresponding public key.
list_public_keys(Client, Input)
when is_map(Client), is_map(Input) ->
list_public_keys(Client, Input, []).
list_public_keys(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"ListPublicKeys">>, Input, Options).
%% @doc Returns a list of queries and query statuses for the past seven days.
%%
%% You must specify an ARN value for `EventDataStore'. Optionally, to
%% shorten the list of results, you can specify a time range, formatted as
%% timestamps, by adding `StartTime' and `EndTime' parameters, and a
%% `QueryStatus' value. Valid values for `QueryStatus' include
%% `QUEUED', `RUNNING', `FINISHED', `FAILED',
%% `TIMED_OUT', or `CANCELLED'.
list_queries(Client, Input)
when is_map(Client), is_map(Input) ->
list_queries(Client, Input, []).
list_queries(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"ListQueries">>, Input, Options).
%% @doc Lists the tags for the specified trails, event data stores, or
%% channels in the current Region.
list_tags(Client, Input)
when is_map(Client), is_map(Input) ->
list_tags(Client, Input, []).
list_tags(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"ListTags">>, Input, Options).
%% @doc Lists trails that are in the current account.
list_trails(Client, Input)
when is_map(Client), is_map(Input) ->
list_trails(Client, Input, []).
list_trails(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"ListTrails">>, Input, Options).
%% @doc Looks up management events or CloudTrail Insights events that are
%% captured by CloudTrail.
%%
%% You can look up events that occurred in a Region within the last 90 days.
%%
%% `LookupEvents' returns recent Insights events for trails that enable
%% Insights. To view Insights events for an event data store, you can run
%% queries on your Insights event data store, and you can also view the Lake
%% dashboard for Insights.
%%
%% Lookup supports the following attributes for management events:
%%
%% <ul> <li> Amazon Web Services access key
%%
%% </li> <li> Event ID
%%
%% </li> <li> Event name
%%
%% </li> <li> Event source
%%
%% </li> <li> Read only
%%
%% </li> <li> Resource name
%%
%% </li> <li> Resource type
%%
%% </li> <li> User name
%%
%% </li> </ul> Lookup supports the following attributes for Insights events:
%%
%% <ul> <li> Event ID
%%
%% </li> <li> Event name
%%
%% </li> <li> Event source
%%
%% </li> </ul> All attributes are optional. The default number of results
%% returned is 50, with a maximum of 50 possible. The response includes a
%% token that you can use to get the next page of results.
%%
%% The rate of lookup requests is limited to two per second, per account, per
%% Region. If this limit is exceeded, a throttling error occurs.
lookup_events(Client, Input)
when is_map(Client), is_map(Input) ->
lookup_events(Client, Input, []).
lookup_events(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"LookupEvents">>, Input, Options).
%% @doc Configures an event selector or advanced event selectors for your
%% trail.
%%
%% Use event selectors or advanced event selectors to specify management and
%% data event settings for your trail. If you want your trail to log Insights
%% events, be sure the event selector enables logging of the Insights event
%% types you want configured for your trail. For more information about
%% logging Insights events, see Logging Insights events for trails in the
%% CloudTrail User Guide. By default, trails created without specific event
%% selectors are configured to log all read and write management events, and
%% no data events.
%%
%% When an event occurs in your account, CloudTrail evaluates the event
%% selectors or advanced event selectors in all trails. For each trail, if
%% the event matches any event selector, the trail processes and logs the
%% event. If the event doesn't match any event selector, the trail
%% doesn't log the event.
%%
%% Example
%%
%% <ol> <li> You create an event selector for a trail and specify that you
%% want write-only events.
%%
%% </li> <li> The EC2 `GetConsoleOutput' and `RunInstances' API
%% operations occur in your account.
%%
%% </li> <li> CloudTrail evaluates whether the events match your event
%% selectors.
%%
%% </li> <li> The `RunInstances' is a write-only event and it matches
%% your event selector. The trail logs the event.
%%
%% </li> <li> The `GetConsoleOutput' is a read-only event that
%% doesn't match your event selector. The trail doesn't log the
%% event.
%%
%% </li> </ol> The `PutEventSelectors' operation must be called from the
%% Region in which the trail was created; otherwise, an
%% `InvalidHomeRegionException' exception is thrown.
%%
%% You can configure up to five event selectors for each trail. For more
%% information, see Logging management events, Logging data events, and
%% Quotas in CloudTrail in the CloudTrail User Guide.
%%
%% You can add advanced event selectors, and conditions for your advanced
%% event selectors, up to a maximum of 500 values for all conditions and
%% selectors on a trail. You can use either `AdvancedEventSelectors' or
%% `EventSelectors', but not both. If you apply
%% `AdvancedEventSelectors' to a trail, any existing `EventSelectors'
%% are overwritten. For more information about advanced event selectors, see
%% Logging data events in the CloudTrail User Guide.
put_event_selectors(Client, Input)
when is_map(Client), is_map(Input) ->
put_event_selectors(Client, Input, []).
put_event_selectors(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"PutEventSelectors">>, Input, Options).
%% @doc Lets you enable Insights event logging by specifying the Insights
%% selectors that you want to enable on an existing trail or event data
%% store.
%%
%% You also use `PutInsightSelectors' to turn off Insights event logging,
%% by passing an empty list of Insights types. The valid Insights event types
%% are `ApiErrorRateInsight' and `ApiCallRateInsight'.
%%
%% To enable Insights on an event data store, you must specify the ARNs (or
%% ID suffix of the ARNs) for the source event data store
%% (`EventDataStore') and the destination event data store
%% (`InsightsDestination'). The source event data store logs management
%% events and enables Insights. The destination event data store logs
%% Insights events based upon the management event activity of the source
%% event data store. The source and destination event data stores must belong
%% to the same Amazon Web Services account.
%%
%% To log Insights events for a trail, you must specify the name
%% (`TrailName') of the CloudTrail trail for which you want to change or
%% add Insights selectors.
%%
%% To log CloudTrail Insights events on API call volume, the trail or event
%% data store must log `write' management events. To log CloudTrail
%% Insights events on API error rate, the trail or event data store must log
%% `read' or `write' management events. You can call
%% `GetEventSelectors' on a trail to check whether the trail logs
%% management events. You can call `GetEventDataStore' on an event data
%% store to check whether the event data store logs management events.
%%
%% For more information, see Logging CloudTrail Insights events in the
%% CloudTrail User Guide.
put_insight_selectors(Client, Input)
when is_map(Client), is_map(Input) ->
put_insight_selectors(Client, Input, []).
put_insight_selectors(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"PutInsightSelectors">>, Input, Options).
%% @doc Attaches a resource-based permission policy to a CloudTrail channel
%% that is used for an integration with an event source outside of Amazon Web
%% Services.
%%
%% For more information about resource-based policies, see CloudTrail
%% resource-based policy examples in the CloudTrail User Guide.
put_resource_policy(Client, Input)
when is_map(Client), is_map(Input) ->
put_resource_policy(Client, Input, []).
put_resource_policy(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"PutResourcePolicy">>, Input, Options).
%% @doc Registers an organization’s member account as the CloudTrail
%% delegated administrator.
register_organization_delegated_admin(Client, Input)
when is_map(Client), is_map(Input) ->
register_organization_delegated_admin(Client, Input, []).
register_organization_delegated_admin(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"RegisterOrganizationDelegatedAdmin">>, Input, Options).
%% @doc Removes the specified tags from a trail, event data store, or
%% channel.
remove_tags(Client, Input)
when is_map(Client), is_map(Input) ->
remove_tags(Client, Input, []).
remove_tags(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"RemoveTags">>, Input, Options).
%% @doc Restores a deleted event data store specified by
%% `EventDataStore', which accepts an event data store ARN.
%%
%% You can only restore a deleted event data store within the seven-day wait
%% period after deletion. Restoring an event data store can take several
%% minutes, depending on the size of the event data store.
restore_event_data_store(Client, Input)
when is_map(Client), is_map(Input) ->
restore_event_data_store(Client, Input, []).
restore_event_data_store(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"RestoreEventDataStore">>, Input, Options).
%% @doc Starts the ingestion of live events on an event data store specified
%% as either an ARN or the ID portion of the ARN.
%%
%% To start ingestion, the event data store `Status' must be
%% `STOPPED_INGESTION' and the `eventCategory' must be
%% `Management', `Data', or `ConfigurationItem'.
start_event_data_store_ingestion(Client, Input)
when is_map(Client), is_map(Input) ->
start_event_data_store_ingestion(Client, Input, []).
start_event_data_store_ingestion(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"StartEventDataStoreIngestion">>, Input, Options).
%% @doc Starts an import of logged trail events from a source S3 bucket to a
%% destination event data store.
%%
%% By default, CloudTrail only imports events contained in the S3
%% bucket's `CloudTrail' prefix and the prefixes inside the
%% `CloudTrail' prefix, and does not check prefixes for other Amazon Web
%% Services services. If you want to import CloudTrail events contained in
%% another prefix, you must include the prefix in the `S3LocationUri'.
%% For more considerations about importing trail events, see Considerations.
%%
%% When you start a new import, the `Destinations' and `ImportSource'
%% parameters are required. Before starting a new import, disable any access
%% control lists (ACLs) attached to the source S3 bucket. For more
%% information about disabling ACLs, see Controlling ownership of objects and
%% disabling ACLs for your bucket.
%%
%% When you retry an import, the `ImportID' parameter is required.
%%
%% If the destination event data store is for an organization, you must use
%% the management account to import trail events. You cannot use the
%% delegated administrator account for the organization.
start_import(Client, Input)
when is_map(Client), is_map(Input) ->
start_import(Client, Input, []).
start_import(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"StartImport">>, Input, Options).
%% @doc Starts the recording of Amazon Web Services API calls and log file
%% delivery for a trail.
%%
%% For a trail that is enabled in all Regions, this operation must be called
%% from the Region in which the trail was created. This operation cannot be
%% called on the shadow trails (replicated trails in other Regions) of a
%% trail that is enabled in all Regions.
start_logging(Client, Input)
when is_map(Client), is_map(Input) ->
start_logging(Client, Input, []).
start_logging(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"StartLogging">>, Input, Options).
%% @doc Starts a CloudTrail Lake query.
%%
%% Use the `QueryStatement' parameter to provide your SQL query, enclosed
%% in single quotation marks. Use the optional `DeliveryS3Uri' parameter
%% to deliver the query results to an S3 bucket.
%%
%% `StartQuery' requires you specify either the `QueryStatement'
%% parameter, or a `QueryAlias' and any `QueryParameters'. In the
%% current release, the `QueryAlias' and `QueryParameters' parameters
%% are used only for the queries that populate the CloudTrail Lake
%% dashboards.
start_query(Client, Input)
when is_map(Client), is_map(Input) ->
start_query(Client, Input, []).
start_query(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"StartQuery">>, Input, Options).
%% @doc Stops the ingestion of live events on an event data store specified
%% as either an ARN or the ID portion of the ARN.
%%
%% To stop ingestion, the event data store `Status' must be `ENABLED'
%% and the `eventCategory' must be `Management', `Data', or
%% `ConfigurationItem'.
stop_event_data_store_ingestion(Client, Input)
when is_map(Client), is_map(Input) ->
stop_event_data_store_ingestion(Client, Input, []).
stop_event_data_store_ingestion(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"StopEventDataStoreIngestion">>, Input, Options).
%% @doc Stops a specified import.
stop_import(Client, Input)
when is_map(Client), is_map(Input) ->
stop_import(Client, Input, []).
stop_import(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"StopImport">>, Input, Options).
%% @doc Suspends the recording of Amazon Web Services API calls and log file
%% delivery for the specified trail.
%%
%% Under most circumstances, there is no need to use this action. You can
%% update a trail without stopping it first. This action is the only way to
%% stop recording. For a trail enabled in all Regions, this operation must be
%% called from the Region in which the trail was created, or an
%% `InvalidHomeRegionException' will occur. This operation cannot be
%% called on the shadow trails (replicated trails in other Regions) of a
%% trail enabled in all Regions.
stop_logging(Client, Input)
when is_map(Client), is_map(Input) ->
stop_logging(Client, Input, []).
stop_logging(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"StopLogging">>, Input, Options).
%% @doc Updates a channel specified by a required channel ARN or UUID.
update_channel(Client, Input)
when is_map(Client), is_map(Input) ->
update_channel(Client, Input, []).
update_channel(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"UpdateChannel">>, Input, Options).
%% @doc Updates an event data store.
%%
%% The required `EventDataStore' value is an ARN or the ID portion of the
%% ARN. Other parameters are optional, but at least one optional parameter
%% must be specified, or CloudTrail throws an error. `RetentionPeriod' is
%% in days, and valid values are integers between 7 and 3653 if the
%% `BillingMode' is set to `EXTENDABLE_RETENTION_PRICING', or between
%% 7 and 2557 if `BillingMode' is set to `FIXED_RETENTION_PRICING'.
%% By default, `TerminationProtection' is enabled.
%%
%% For event data stores for CloudTrail events, `AdvancedEventSelectors'
%% includes or excludes management or data events in your event data store.
%% For more information about `AdvancedEventSelectors', see
%% AdvancedEventSelectors.
%%
%% For event data stores for CloudTrail Insights events, Config configuration
%% items, Audit Manager evidence, or non-Amazon Web Services events,
%% `AdvancedEventSelectors' includes events of that type in your event
%% data store.
update_event_data_store(Client, Input)
when is_map(Client), is_map(Input) ->
update_event_data_store(Client, Input, []).
update_event_data_store(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"UpdateEventDataStore">>, Input, Options).
%% @doc Updates trail settings that control what events you are logging, and
%% how to handle log files.
%%
%% Changes to a trail do not require stopping the CloudTrail service. Use
%% this action to designate an existing bucket for log delivery. If the
%% existing bucket has previously been a target for CloudTrail log files, an
%% IAM policy exists for the bucket. `UpdateTrail' must be called from
%% the Region in which the trail was created; otherwise, an
%% `InvalidHomeRegionException' is thrown.
update_trail(Client, Input)
when is_map(Client), is_map(Input) ->
update_trail(Client, Input, []).
update_trail(Client, Input, Options)
when is_map(Client), is_map(Input), is_list(Options) ->
request(Client, <<"UpdateTrail">>, Input, Options).
%%====================================================================
%% Internal functions
%%====================================================================
-spec request(aws_client:aws_client(), binary(), map(), list()) ->
{ok, Result, {integer(), list(), hackney:client()}} |
{error, Error, {integer(), list(), hackney:client()}} |
{error, term()} when
Result :: map() | undefined,
Error :: map().
request(Client, Action, Input, Options) ->
RequestFun = fun() -> do_request(Client, Action, Input, Options) end,
aws_request:request(RequestFun, Options).
do_request(Client, Action, Input0, Options) ->
Client1 = Client#{service => <<"cloudtrail">>},
Host = build_host(<<"cloudtrail">>, Client1),
URL = build_url(Host, Client1),
Headers = [
{<<"Host">>, Host},
{<<"Content-Type">>, <<"application/x-amz-json-1.1">>},
{<<"X-Amz-Target">>, <<"com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101.", Action/binary>>}
],
Input = Input0,
Payload = jsx:encode(Input),
SignedHeaders = aws_request:sign_request(Client1, <<"POST">>, URL, Headers, Payload),
Response = hackney:request(post, URL, SignedHeaders, Payload, Options),
handle_response(Response).
handle_response({ok, 200, ResponseHeaders, Client}) ->
case hackney:body(Client) of
{ok, <<>>} ->
{ok, undefined, {200, ResponseHeaders, Client}};
{ok, Body} ->
Result = jsx:decode(Body),
{ok, Result, {200, ResponseHeaders, Client}}
end;
handle_response({ok, StatusCode, ResponseHeaders, Client}) ->
{ok, Body} = hackney:body(Client),
Error = jsx:decode(Body),
{error, Error, {StatusCode, ResponseHeaders, Client}};
handle_response({error, Reason}) ->
{error, Reason}.
build_host(_EndpointPrefix, #{region := <<"local">>, endpoint := Endpoint}) ->
Endpoint;
build_host(_EndpointPrefix, #{region := <<"local">>}) ->
<<"localhost">>;
build_host(EndpointPrefix, #{region := Region, endpoint := Endpoint}) ->
aws_util:binary_join([EndpointPrefix, Region, Endpoint], <<".">>).
build_url(Host, Client) ->
Proto = aws_client:proto(Client),
Port = aws_client:port(Client),
aws_util:binary_join([Proto, <<"://">>, Host, <<":">>, Port, <<"/">>], <<"">>).