AWS CloudTrail

2023/01/31 - AWS CloudTrail - 6 new1 updated api methods

Changes  Add new "Channel" APIs to enable users to manage channels used for CloudTrail Lake integrations, and "Resource Policy" APIs to enable users to manage the resource-based permissions policy attached to a channel.

DeleteResourcePolicy (new) Link ¶

Deletes the resource-based policy attached to the CloudTrail channel.

See also: AWS API Documentation

Request Syntax

client.delete_resource_policy(
    ResourceArn='string'
)
type ResourceArn:

string

param ResourceArn:

[REQUIRED]

The Amazon Resource Name (ARN) of the CloudTrail channel you're deleting the resource-based policy from. The following is the format of a resource ARN: arn:aws:cloudtrail:us-east-2:123456789012:channel/MyChannel.

rtype:

dict

returns:

Response Syntax

{}

Response Structure

  • (dict) --

PutResourcePolicy (new) Link ¶

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.

See also: AWS API Documentation

Request Syntax

client.put_resource_policy(
    ResourceArn='string',
    ResourcePolicy='string'
)
type ResourceArn:

string

param ResourceArn:

[REQUIRED]

The Amazon Resource Name (ARN) of the CloudTrail channel attached to the resource-based policy. The following is the format of a resource ARN: arn:aws:cloudtrail:us-east-2:123456789012:channel/MyChannel.

type ResourcePolicy:

string

param ResourcePolicy:

[REQUIRED]

A JSON-formatted string for an Amazon Web Services resource-based policy.

The following are requirements for the resource policy:

  • Contains only one action: cloudtrail-data:PutAuditEvents

  • Contains at least one statement. The policy can have a maximum of 20 statements.

  • Each statement contains at least one principal. A statement can have a maximum of 50 principals.

rtype:

dict

returns:

Response Syntax

{
    'ResourceArn': 'string',
    'ResourcePolicy': 'string'
}

Response Structure

  • (dict) --

    • ResourceArn (string) --

      The Amazon Resource Name (ARN) of the CloudTrail channel attached to the resource-based policy.

    • ResourcePolicy (string) --

      The JSON-formatted string of the Amazon Web Services resource-based policy attached to the CloudTrail channel.

GetResourcePolicy (new) Link ¶

Retrieves the JSON text of the resource-based policy document attached to the CloudTrail channel.

See also: AWS API Documentation

Request Syntax

client.get_resource_policy(
    ResourceArn='string'
)
type ResourceArn:

string

param ResourceArn:

[REQUIRED]

The Amazon Resource Name (ARN) of the CloudTrail channel attached to the resource-based policy. The following is the format of a resource ARN: arn:aws:cloudtrail:us-east-2:123456789012:channel/MyChannel.

rtype:

dict

returns:

Response Syntax

{
    'ResourceArn': 'string',
    'ResourcePolicy': 'string'
}

Response Structure

  • (dict) --

    • ResourceArn (string) --

      The Amazon Resource Name (ARN) of the CloudTrail channel attached to resource-based policy.

    • ResourcePolicy (string) --

      A JSON-formatted string that contains the resource-based policy attached to the CloudTrail channel.

UpdateChannel (new) Link ¶

Updates a channel specified by a required channel ARN or UUID.

See also: AWS API Documentation

Request Syntax

client.update_channel(
    Channel='string',
    Destinations=[
        {
            'Type': 'EVENT_DATA_STORE'|'AWS_SERVICE',
            'Location': 'string'
        },
    ],
    Name='string'
)
type Channel:

string

param Channel:

[REQUIRED]

The ARN or ID (the ARN suffix) of the channel that you want to update.

type Destinations:

list

param Destinations:

The ARNs of event data stores that you want to log events arriving through the channel.

  • (dict) --

    Contains information about the destination receiving events.

    • Type (string) -- [REQUIRED]

      The type of destination for events arriving from a channel. For channels used for a CloudTrail Lake integration, the value is EventDataStore. For service-linked channels, the value is AWS_SERVICE.

    • Location (string) -- [REQUIRED]

      For channels used for a CloudTrail Lake integration, the location is the ARN of an event data store that receives events from a channel. For service-linked channels, the location is the name of the Amazon Web Services service.

type Name:

string

param Name:

Changes the name of the channel.

rtype:

dict

returns:

Response Syntax

{
    'ChannelArn': 'string',
    'Name': 'string',
    'Source': 'string',
    'Destinations': [
        {
            'Type': 'EVENT_DATA_STORE'|'AWS_SERVICE',
            'Location': 'string'
        },
    ]
}

Response Structure

  • (dict) --

    • ChannelArn (string) --

      The ARN of the channel that was updated.

    • Name (string) --

      The name of the channel that was updated.

    • Source (string) --

      The event source of the channel that was updated.

    • Destinations (list) --

      The event data stores that log events arriving through the channel.

      • (dict) --

        Contains information about the destination receiving events.

        • Type (string) --

          The type of destination for events arriving from a channel. For channels used for a CloudTrail Lake integration, the value is EventDataStore. For service-linked channels, the value is AWS_SERVICE.

        • Location (string) --

          For channels used for a CloudTrail Lake integration, the location is the ARN of an event data store that receives events from a channel. For service-linked channels, the location is the name of the Amazon Web Services service.

DeleteChannel (new) Link ¶

Deletes a channel.

See also: AWS API Documentation

Request Syntax

client.delete_channel(
    Channel='string'
)
type Channel:

string

param Channel:

[REQUIRED]

The ARN or the UUID value of the channel that you want to delete.

rtype:

dict

returns:

Response Syntax

{}

Response Structure

  • (dict) --

CreateChannel (new) Link ¶

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.

See also: AWS API Documentation

Request Syntax

client.create_channel(
    Name='string',
    Source='string',
    Destinations=[
        {
            'Type': 'EVENT_DATA_STORE'|'AWS_SERVICE',
            'Location': 'string'
        },
    ],
    Tags=[
        {
            'Key': 'string',
            'Value': 'string'
        },
    ]
)
type Name:

string

param Name:

[REQUIRED]

The name of the channel.

type Source:

string

param Source:

[REQUIRED]

The name of the partner or external event source. You cannot change this name after you create the channel. A maximum of one channel is allowed per source.

A source can be either Custom for all valid non-Amazon Web Services events, or the name of a partner event source. For information about the source names for available partners, see Additional information about integration partners in the CloudTrail User Guide.

type Destinations:

list

param Destinations:

[REQUIRED]

One or more event data stores to which events arriving through a channel will be logged.

  • (dict) --

    Contains information about the destination receiving events.

    • Type (string) -- [REQUIRED]

      The type of destination for events arriving from a channel. For channels used for a CloudTrail Lake integration, the value is EventDataStore. For service-linked channels, the value is AWS_SERVICE.

    • Location (string) -- [REQUIRED]

      For channels used for a CloudTrail Lake integration, the location is the ARN of an event data store that receives events from a channel. For service-linked channels, the location is the name of the Amazon Web Services service.

type Tags:

list

param Tags:

A list of tags.

  • (dict) --

    A custom key-value pair associated with a resource such as a CloudTrail trail, event data store, or channel.

    • Key (string) -- [REQUIRED]

      The key in a key-value pair. The key must be must be no longer than 128 Unicode characters. The key must be unique for the resource to which it applies.

    • Value (string) --

      The value in a key-value pair of a tag. The value must be no longer than 256 Unicode characters.

rtype:

dict

returns:

Response Syntax

{
    'ChannelArn': 'string',
    'Name': 'string',
    'Source': 'string',
    'Destinations': [
        {
            'Type': 'EVENT_DATA_STORE'|'AWS_SERVICE',
            'Location': 'string'
        },
    ],
    'Tags': [
        {
            'Key': 'string',
            'Value': 'string'
        },
    ]
}

Response Structure

  • (dict) --

    • ChannelArn (string) --

      The Amazon Resource Name (ARN) of the new channel.

    • Name (string) --

      The name of the new channel.

    • Source (string) --

      The partner or external event source name.

    • Destinations (list) --

      The event data stores that log the events arriving through the channel.

      • (dict) --

        Contains information about the destination receiving events.

        • Type (string) --

          The type of destination for events arriving from a channel. For channels used for a CloudTrail Lake integration, the value is EventDataStore. For service-linked channels, the value is AWS_SERVICE.

        • Location (string) --

          For channels used for a CloudTrail Lake integration, the location is the ARN of an event data store that receives events from a channel. For service-linked channels, the location is the name of the Amazon Web Services service.

    • Tags (list) --

      A list of tags.

      • (dict) --

        A custom key-value pair associated with a resource such as a CloudTrail trail, event data store, or channel.

        • Key (string) --

          The key in a key-value pair. The key must be must be no longer than 128 Unicode characters. The key must be unique for the resource to which it applies.

        • Value (string) --

          The value in a key-value pair of a tag. The value must be no longer than 256 Unicode characters.

GetChannel (updated) Link ¶
Changes (response)
{'IngestionStatus': {'LatestIngestionAttemptEventID': 'string',
                     'LatestIngestionAttemptTime': 'timestamp',
                     'LatestIngestionErrorCode': 'string',
                     'LatestIngestionSuccessEventID': 'string',
                     'LatestIngestionSuccessTime': 'timestamp'}}

Returns information about a specific channel.

See also: AWS API Documentation

Request Syntax

client.get_channel(
    Channel='string'
)
type Channel:

string

param Channel:

[REQUIRED]

The ARN or UUID of a channel.

rtype:

dict

returns:

Response Syntax

{
    'ChannelArn': 'string',
    'Name': 'string',
    'Source': 'string',
    'SourceConfig': {
        'ApplyToAllRegions': True|False,
        'AdvancedEventSelectors': [
            {
                'Name': 'string',
                'FieldSelectors': [
                    {
                        'Field': 'string',
                        'Equals': [
                            'string',
                        ],
                        'StartsWith': [
                            'string',
                        ],
                        'EndsWith': [
                            'string',
                        ],
                        'NotEquals': [
                            'string',
                        ],
                        'NotStartsWith': [
                            'string',
                        ],
                        'NotEndsWith': [
                            'string',
                        ]
                    },
                ]
            },
        ]
    },
    'Destinations': [
        {
            'Type': 'EVENT_DATA_STORE'|'AWS_SERVICE',
            'Location': 'string'
        },
    ],
    'IngestionStatus': {
        'LatestIngestionSuccessTime': datetime(2015, 1, 1),
        'LatestIngestionSuccessEventID': 'string',
        'LatestIngestionErrorCode': 'string',
        'LatestIngestionAttemptTime': datetime(2015, 1, 1),
        'LatestIngestionAttemptEventID': 'string'
    }
}

Response Structure

  • (dict) --

    • ChannelArn (string) --

      The ARN of an channel returned by a GetChannel request.

    • Name (string) --

      The name of the CloudTrail channel. For service-linked channels, the name is aws-service-channel/service-name/custom-suffix where service-name represents the name of the Amazon Web Services service that created the channel and custom-suffix represents the suffix generated by the Amazon Web Services service.

    • Source (string) --

      The source for the CloudTrail channel.

    • SourceConfig (dict) --

      Provides information about the advanced event selectors configured for the channel, and whether the channel applies to all regions or a single region.

      • ApplyToAllRegions (boolean) --

        Specifies whether the channel applies to a single region or to all regions.

      • AdvancedEventSelectors (list) --

        The advanced event selectors that are configured for the channel.

        • (dict) --

          Advanced event selectors let you create fine-grained selectors for the following CloudTrail event record fields. They help you control costs by logging only those events that are important to you. For more information about advanced event selectors, see Logging data events for trails in the CloudTrail User Guide.

          • readOnly

          • eventSource

          • eventName

          • eventCategory

          • resources.type

          • resources.ARN

          You cannot apply both event selectors and advanced event selectors to a trail.

          • Name (string) --

            An optional, descriptive name for an advanced event selector, such as "Log data events for only two S3 buckets".

          • FieldSelectors (list) --

            Contains all selector statements in an advanced event selector.

            • (dict) --

              A single selector statement in an advanced event selector.

              • Field (string) --

                A field in a CloudTrail event record on which to filter events to be logged. For event data stores for Config configuration items, Audit Manager evidence, or non-Amazon Web Services events, the field is used only for selecting events as filtering is not supported.

                For CloudTrail event records, supported fields include readOnly, eventCategory, eventSource (for management events), eventName, resources.type, and resources.ARN.

                For event data stores for Config configuration items, Audit Manager evidence, or non-Amazon Web Services events, the only supported field is eventCategory.

                • readOnly - Optional. Can be set to Equals a value of true or false. If you do not add this field, CloudTrail logs both read and write events. A value of true logs only read events. A value of false logs only write events.

                • eventSource - For filtering management events only. This can be set only to NotEquals kms.amazonaws.com.

                • eventName - Can use any operator. You can use it to filter in or filter out any data event logged to CloudTrail, such as PutBucket or GetSnapshotBlock. You can have multiple values for this field, separated by commas.

                • eventCategory - This is required and must be set to Equals.

                  • For CloudTrail event records, the value must be Management or Data.

                  • For Config configuration items, the value must be ConfigurationItem.

                  • For Audit Manager evidence, the value must be Evidence.

                  • For non-Amazon Web Services events, the value must be ActivityAuditLog.

                • resources.type - This field is required for CloudTrail data events. resources.type can only use the Equals operator, and the value can be one of the following:

                  • AWS::CloudTrail::Channel

                  • AWS::S3::Object

                  • AWS::Lambda::Function

                  • AWS::DynamoDB::Table

                  • AWS::S3Outposts::Object

                  • AWS::ManagedBlockchain::Node

                  • AWS::S3ObjectLambda::AccessPoint

                  • AWS::EC2::Snapshot

                  • AWS::S3::AccessPoint

                  • AWS::DynamoDB::Stream

                  • AWS::Glue::Table

                  • AWS::FinSpace::Environment

                  • AWS::SageMaker::ExperimentTrialComponent

                  • AWS::SageMaker::FeatureGroup

                You can have only one resources.type field per selector. To log data events on more than one resource type, add another selector.

                • resources.ARN - You can use any operator with resources.ARN, but if you use Equals or NotEquals, the value must exactly match the ARN of a valid resource of the type you've specified in the template as the value of resources.type. For example, if resources.type equals AWS::S3::Object, the ARN must be in one of the following formats. To log all data events for all objects in a specific S3 bucket, use the StartsWith operator, and include only the bucket ARN as the matching value. The trailing slash is intentional; do not exclude it. Replace the text between less than and greater than symbols (<>) with resource-specific information.

                  • arn:<partition>:s3:::<bucket_name>/

                  • arn:<partition>:s3:::<bucket_name>/<object_path>/

                When resources.type equals AWS::S3::AccessPoint, and the operator is set to Equals or NotEquals, the ARN must be in one of the following formats. To log events on all objects in an S3 access point, we recommend that you use only the access point ARN, don’t include the object path, and use the StartsWith or NotStartsWith operators.

                • arn:<partition>:s3:<region>:<account_ID>:accesspoint/<access_point_name>

                • arn:<partition>:s3:<region>:<account_ID>:accesspoint/<access_point_name>/object/<object_path>

                When resources.type equals AWS::Lambda::Function, and the operator is set to Equals or NotEquals, the ARN must be in the following format:

                • arn:<partition>:lambda:<region>:<account_ID>:function:<function_name>

                When resources.type equals AWS::DynamoDB::Table, and the operator is set to Equals or NotEquals, the ARN must be in the following format:

                • arn:<partition>:dynamodb:<region>:<account_ID>:table/<table_name>

                When resources.type equals AWS::CloudTrail::Channel, and the operator is set to Equals or NotEquals, the ARN must be in the following format:

                • arn:<partition>:cloudtrail:<region>:<account_ID>:channel/<channel_UUID>

                When resources.type equals AWS::S3Outposts::Object, and the operator is set to Equals or NotEquals, the ARN must be in the following format:

                • arn:<partition>:s3-outposts:<region>:<account_ID>:<object_path>

                When resources.type equals AWS::ManagedBlockchain::Node, and the operator is set to Equals or NotEquals, the ARN must be in the following format:

                • arn:<partition>:managedblockchain:<region>:<account_ID>:nodes/<node_ID>

                When resources.type equals AWS::S3ObjectLambda::AccessPoint, and the operator is set to Equals or NotEquals, the ARN must be in the following format:

                • arn:<partition>:s3-object-lambda:<region>:<account_ID>:accesspoint/<access_point_name>

                When resources.type equals AWS::EC2::Snapshot, and the operator is set to Equals or NotEquals, the ARN must be in the following format:

                • arn:<partition>:ec2:<region>::snapshot/<snapshot_ID>

                When resources.type equals AWS::DynamoDB::Stream, and the operator is set to Equals or NotEquals, the ARN must be in the following format:

                • arn:<partition>:dynamodb:<region>:<account_ID>:table/<table_name>/stream/<date_time>

                When resources.type equals AWS::Glue::Table, and the operator is set to Equals or NotEquals, the ARN must be in the following format:

                • arn:<partition>:glue:<region>:<account_ID>:table/<database_name>/<table_name>

                When resources.type equals AWS::FinSpace::Environment, and the operator is set to Equals or NotEquals, the ARN must be in the following format:

                • arn:<partition>:finspace:<region>:<account_ID>:environment/<environment_ID>

                When resources.type equals AWS::SageMaker::ExperimentTrialComponent, and the operator is set to Equals or NotEquals, the ARN must be in the following format:

                • arn:<partition>:sagemaker:<region>:<account_ID>:experiment-trial-component/<experiment_trial_component_name>

                When resources.type equals AWS::SageMaker::FeatureGroup, and the operator is set to Equals or NotEquals, the ARN must be in the following format:

                • arn:<partition>:sagemaker:<region>:<account_ID>:feature-group/<feature_group_name>

              • Equals (list) --

                An operator that includes events that match the exact value of the event record field specified as the value of Field. This is the only valid operator that you can use with the readOnly, eventCategory, and resources.type fields.

                • (string) --

              • StartsWith (list) --

                An operator that includes events that match the first few characters of the event record field specified as the value of Field.

                • (string) --

              • EndsWith (list) --

                An operator that includes events that match the last few characters of the event record field specified as the value of Field.

                • (string) --

              • NotEquals (list) --

                An operator that excludes events that match the exact value of the event record field specified as the value of Field.

                • (string) --

              • NotStartsWith (list) --

                An operator that excludes events that match the first few characters of the event record field specified as the value of Field.

                • (string) --

              • NotEndsWith (list) --

                An operator that excludes events that match the last few characters of the event record field specified as the value of Field.

                • (string) --

    • Destinations (list) --

      The destinations for the channel. For channels created for integrations, the destinations are the event data stores that log events arriving through the channel. For service-linked channels, the destination is the Amazon Web Services service that created the service-linked channel to receive events.

      • (dict) --

        Contains information about the destination receiving events.

        • Type (string) --

          The type of destination for events arriving from a channel. For channels used for a CloudTrail Lake integration, the value is EventDataStore. For service-linked channels, the value is AWS_SERVICE.

        • Location (string) --

          For channels used for a CloudTrail Lake integration, the location is the ARN of an event data store that receives events from a channel. For service-linked channels, the location is the name of the Amazon Web Services service.

    • IngestionStatus (dict) --

      A table showing information about the most recent successful and failed attempts to ingest events.

      • LatestIngestionSuccessTime (datetime) --

        The time stamp of the most recent successful ingestion of events for the channel.

      • LatestIngestionSuccessEventID (string) --

        The event ID of the most recent successful ingestion of events.

      • LatestIngestionErrorCode (string) --

        The error code for the most recent failure to ingest events.

      • LatestIngestionAttemptTime (datetime) --

        The time stamp of the most recent attempt to ingest events on the channel.

      • LatestIngestionAttemptEventID (string) --

        The event ID of the most recent attempt to ingest events.