from __future__ import annotations
from datetime import datetime # noqa: TC003
from typing import Any
from pydantic import BaseModel, Field
[docs]class AWSAPICallViaCloudTrailItem(BaseModel):
"""
Represents a resource involved in an AWS API call via CloudTrail. Contains
identifiers for AWS resources that were accessed or modified during the API
call.
"""
#: The AWS account ID that owns the resource
accountId: str
#: The Amazon Resource Name (ARN) of the resource
ARN: str
[docs]class RequestParametersItem(BaseModel):
"""
Represents an image identifier in an ECR API request. Used to specify which
container image is being referenced in operations like BatchGetImage.
"""
#: The tag of the container image
imageTag: str
[docs]class SessionIssuer(BaseModel):
"""
Represents the entity that issued the session in the user identity context.
Contains information about the IAM entity (user or role) that created the
session.
"""
#: The AWS account ID that owns the entity
accountId: str
#: The unique identifier of the entity
principalId: str
#: The type of the entity (e.g., "Role", "User")
type: str
#: The ARN of the entity
arn: str
#: The name of the entity
userName: str
[docs]class Attributes(BaseModel):
"""
Represents attributes of the session used for the API call. Includes
security-related information about the session.
"""
#: Indicates whether multi-factor authentication was used to create the session
mfaAuthenticated: str
#: The timestamp when the session was created
creationDate: datetime
[docs]class RequestParameters(BaseModel):
"""
Represents the parameters of an ECR API request.
Contains the details of what was requested in the API call.
"""
#: The media types that the API client accepts
acceptedMediaTypes: list[str]
#: The AWS account ID that owns the ECR registry
registryId: str
#: The name of the ECR repository being accessed
repositoryName: str
#: The list of image identifiers being requested
imageIds: list[RequestParametersItem]
[docs]class SessionContext(BaseModel):
"""
Represents the session context for a user identity.
Contains detailed information about the session used to make the API call.
"""
#: Federation data if the session was created through web identity federation
webIdFederationData: dict[str, Any]
#: Information about the entity that issued the session
sessionIssuer: SessionIssuer
#: Session attributes like MFA status and creation time
attributes: Attributes
[docs]class UserIdentity(BaseModel):
"""
Represents the identity of the user that performed the API call. Contains
information about the AWS principal (user, role, or service) that made the
request.
"""
#: The context of the session used for the API call
sessionContext: SessionContext
#: The access key ID used to sign the request
accessKeyId: str
#: The AWS account ID that the user belongs to
accountId: str
#: The unique identifier of the principal
principalId: str
#: The type of the identity (e.g., "AssumedRole", "IAMUser")
type: str
#: The ARN of the principal
arn: str
#: The AWS service that made the request, if applicable
invokedBy: str
[docs]class AWSAPICallViaCloudTrail(BaseModel):
"""
Represents the details of an AWS API call as recorded by CloudTrail.
Contains comprehensive information about the API request, including who made
it, what was requested, and the response.
"""
#: The parameters sent with the API request
requestParameters: RequestParameters
#: The identity of the user that made the API call
userIdentity: UserIdentity
#: The unique identifier of the event
eventID: str
#: The AWS region where the request was made
awsRegion: str
#: The version of the CloudTrail event format
eventVersion: str
#: The response elements returned by the API
responseElements: dict[str, Any]
#: The IP address where the request originated from
sourceIPAddress: str
#: The AWS service that the request was made to (e.g., "ecr.amazonaws.com")
eventSource: str
#: The resources involved in the API call
resources: list[AWSAPICallViaCloudTrailItem]
#: The user agent of the client that made the request
userAgent: str
#: The type of the event (e.g., "AwsApiCall")
eventType: str
#: The request ID of the API call
requestID: str
#: The timestamp when the API call was made
eventTime: datetime
#: The name of the API call (e.g., "BatchGetImage")
eventName: str
[docs]class ECRAWSAPICallViaCloudTrailEvent(BaseModel):
"""
Represents a complete AWS CloudTrail event as delivered by EventBridge.
Wraps the CloudTrail API call details with EventBridge metadata.
"""
#: The detailed information about the API call
detail: AWSAPICallViaCloudTrail
#: The human-readable type of the event (e.g., "AWS API Call via CloudTrail")
detail_type: str = Field(..., alias="detail-type")
#: The AWS resources involved in the event
resources: list[str]
#: The unique identifier of the event
id: str
#: The source of the event (e.g., "aws.ecr")
source: str
#: The timestamp when the event was generated
time: datetime
#: The AWS region where the event occurred
region: str
#: The version of the event schema
version: str
#: The AWS account ID where the event occurred
account: str