// https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html export const AwsDynamoDbManagedMetricName = { ACCOUNT_MAX_READS: "AccountMaxReads", ACCOUNT_MAX_TABLE_LEVEL_READS: "AccountMaxTableLevelReads", ACCOUNT_MAX_TABLE_LEVEL_WRITES: "AccountMaxTableLevelWrites", ACCOUNT_MAX_WRITES: "AccountMaxWrites", ACCOUNT_PROVISIONED_READ_CAPACITY_UTILIZATION: "AccountProvisionedReadCapacityUtilization", ACCOUNT_PROVISIONED_WRITE_CAPACITY_UTILIZATION: "AccountProvisionedWriteCapacityUtilization", AGE_OF_OLDEST_UNREPLICATED_RECORD: "AgeOfOldestUnreplicatedRecord", CONDITIONAL_CHECK_FAILED_REQUESTS: "ConditionalCheckFailedRequests", CONSUMED_CHANGE_DATA_CAPTURE_UNITS: "ConsumedChangeDataCaptureUnits", CONSUMED_READ_CAPACITY_UNITS: "ConsumedReadCapacityUnits", CONSUMED_WRITE_CAPACITY_UNITS: "ConsumedWriteCapacityUnits", MAX_PROVISIONED_TABLE_READ_CAPACITY_UTILIZATION: "MaxProvisionedTableReadCapacityUtilization", MAX_PROVISIONED_TABLE_WRITE_CAPACITY_UTILIZATION: "MaxProvisionedTableWriteCapacityUtilization", ONLINE_INDEX_CONSUMED_WRITE_CAPACITY: "OnlineIndexConsumedWriteCapacity", ONLINE_INDEX_PERCENTAGE_PROGRESS: "OnlineIndexPercentageProgress", ONLINE_INDEX_THROTTLE_EVENTS: "OnlineIndexThrottleEvents", PENDING_REPLICATION_COUNT: "PendingReplicationCount", PROVISIONED_READ_CAPACITY_UNITS: "ProvisionedReadCapacityUnits", PROVISIONED_WRITE_CAPACITY_UNITS: "ProvisionedWriteCapacityUnits", READ_THROTTLE_EVENTS: "ReadThrottleEvents", REPLICATION_LATENCY: "ReplicationLatency", RETURNED_BYTES: "ReturnedBytes", RETURNED_ITEM_COUNT: "ReturnedItemCount", RETURNED_RECORDS_COUNT: "ReturnedRecordsCount", SUCCESSFUL_REQUEST_LATENCY: "SuccessfulRequestLatency", SYSTEM_ERRORS: "SystemErrors", TIME_TO_LIVE_DELETED_ITEM_COUNT: "TimeToLiveDeletedItemCount", THROTTLED_PUT_RECORD_COUNT: "ThrottledPutRecordCount", THROTTLED_REQUESTS: "ThrottledRequests", TRANSACTION_CONFLICT: "TransactionConflict", USER_ERRORS: "UserErrors", WRITE_THROTTLE_EVENTS: "WriteThrottleEvents", }; export const AwsDynamoDbManagedMetricDimensionName = { DELEGATED_OPERATION: "DelegatedOperation", GLOBAL_SECONDARY_INDEX_NAME: "GlobalSecondaryIndexName", OPERATION_TYPE: "OperationType", OPERATION: "Operation", RECEIVING_REGION: "ReceivingRegion", STREAM_LABEL: "StreamLabel", TABLE_NAME: "TableName", VERB: "Verb", }; // https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html export const AwsDynamoDbIamPolicyAction = { BATCH_GET_ITEM: "dynamodb:BatchGetItem", BATCH_WRITE_ITEM: "dynamodb:BatchWriteItem", CONDITION_CHECK_ITEM: "dynamodb:ConditionCheckItem", CREATE_BACKUP: "dynamodb:CreateBackup", CREATE_GLOBAL_TABLE: "dynamodb:CreateGlobalTable", CREATE_TABLE: "dynamodb:CreateTable", CREATE_TABLE_REPLICA: "dynamodb:CreateTableReplica", DELETE_BACKUP: "dynamodb:DeleteBackup", DELETE_ITEM: "dynamodb:DeleteItem", DELETE_TABLE: "dynamodb:DeleteTable", DELETE_TABLE_REPLICA: "dynamodb:DeleteTableReplica", DESCRIBE_BACKUP: "dynamodb:DescribeBackup", DESCRIBE_CONTINUOUS_BACKUPS: "dynamodb:DescribeContinuousBackups", DESCRIBE_CONTRIBUTOR_INSIGHTS: "dynamodb:DescribeContributorInsights", DESCRIBE_EXPORT: "dynamodb:DescribeExport", DESCRIBE_GLOBAL_TABLE: "dynamodb:DescribeGlobalTable", DESCRIBE_GLOBAL_TABLE_SETTINGS: "dynamodb:DescribeGlobalTableSettings", DESCRIBE_KINESIS_STREAMING_DESTINATION: "dynamodb:DescribeKinesisStreamingDestination", DESCRIBE_LIMITS: "dynamodb:DescribeLimits", DESCRIBE_RESERVED_CAPACITY: "dynamodb:DescribeReservedCapacity", DESCRIBE_RESERVED_CAPACITY_OFFERINGS: "dynamodb:DescribeReservedCapacityOfferings", DESCRIBE_STREAM: "dynamodb:DescribeStream", DESCRIBE_TABLE: "dynamodb:DescribeTable", DESCRIBE_TABLE_REPLICA_AUTO_SCALING: "dynamodb:DescribeTableReplicaAutoScaling", DESCRIBE_TIME_TO_LIVE: "dynamodb:DescribeTimeToLive", DISABLE_KINESIS_STREAMING_DESTINATION: "dynamodb:DisableKinesisStreamingDestination", ENABLE_KINESIS_STREAMING_DESTINATION: "dynamodb:EnableKinesisStreamingDestination", EXPORT_TABLE_TO_POINT_IN_TIME: "dynamodb:ExportTableToPointInTime", GET_ITEM: "dynamodb:GetItem", GET_RECORDS: "dynamodb:GetRecords", GET_SHARD_ITERATOR: "dynamodb:GetShardIterator", LIST_BACKUPS: "dynamodb:ListBackups", LIST_CONTRIBUTOR_INSIGHTS: "dynamodb:ListContributorInsights", LIST_EXPORTS: "dynamodb:ListExports", LIST_GLOBAL_TABLES: "dynamodb:ListGlobalTables", LIST_STREAMS: "dynamodb:ListStreams", LIST_TABLES: "dynamodb:ListTables", LIST_TAGS_OF_RESOURCE: "dynamodb:ListTagsOfResource", PARTI_QL_DELETE: "dynamodb:PartiQLDelete", PARTI_QL_INSERT: "dynamodb:PartiQLInsert", PARTI_QL_SELECT: "dynamodb:PartiQLSelect", PARTI_QL_UPDATE: "dynamodb:PartiQLUpdate", PURCHASE_RESERVED_CAPACITY_OFFERINGS: "dynamodb:PurchaseReservedCapacityOfferings", PUT_ITEM: "dynamodb:PutItem", QUERY: "dynamodb:Query", RESTORE_TABLE_FROM_BACKUP: "dynamodb:RestoreTableFromBackup", RESTORE_TABLE_TO_POINT_IN_TIME: "dynamodb:RestoreTableToPointInTime", SCAN: "dynamodb:Scan", TAG_RESOURCE: "dynamodb:TagResource", UNTAG_RESOURCE: "dynamodb:UntagResource", UPDATE_CONTINUOUS_BACKUPS: "dynamodb:UpdateContinuousBackups", UPDATE_CONTRIBUTOR_INSIGHTS: "dynamodb:UpdateContributorInsights", UPDATE_GLOBAL_TABLE: "dynamodb:UpdateGlobalTable", UPDATE_GLOBAL_TABLE_SETTINGS: "dynamodb:UpdateGlobalTableSettings", UPDATE_ITEM: "dynamodb:UpdateItem", UPDATE_TABLE: "dynamodb:UpdateTable", UPDATE_TABLE_REPLICA_AUTO_SCALING: "dynamodb:UpdateTableReplicaAutoScaling", UPDATE_TIME_TO_LIVE: "dynamodb:UpdateTimeToLive", }; export interface CreateAwsDynamoDbTableArnParams { partition: string; region: string; account: string; tableName: string; } export const createAwsDynamoDbTableArn = ({ partition, region, account, tableName, }: CreateAwsDynamoDbTableArnParams): string => { return `arn:${partition}:dynamodb:${region}:${account}:table/${tableName}`; }; export interface CreateAwsDynamoDbIndexArnParams extends CreateAwsDynamoDbTableArnParams { indexName: string; } export const createAwsDynamoDbIndexArn = ({ partition, region, account, tableName, indexName, }: CreateAwsDynamoDbIndexArnParams): string => { return `arn:${partition}:dynamodb:${region}:${account}:table/${tableName}/index/${indexName}`; }; export interface CreateAwsDynamoDbStreamArnParams extends CreateAwsDynamoDbTableArnParams { streamName: string; } export const createAwsDynamoDbStreamArn = ({ partition, region, account, tableName, streamName, }: CreateAwsDynamoDbStreamArnParams): string => { return `arn:${partition}:dynamodb:${region}:${account}:table/${tableName}/stream/${streamName}`; }; export interface CreateAwsDynamoDbBackupArnParams extends CreateAwsDynamoDbTableArnParams { backupName: string; } export const createAwsDynamoDbBackupArn = ({ partition, region, account, tableName, backupName, }: CreateAwsDynamoDbBackupArnParams): string => { return `arn:${partition}:dynamodb:${region}:${account}:table/${tableName}/backup/${backupName}`; }; export interface CreateAwsDynamoDbExportArnParams extends CreateAwsDynamoDbTableArnParams { exportName: string; } export const createAwsDynamoDbExportArn = ({ partition, region, account, tableName, exportName, }: CreateAwsDynamoDbExportArnParams): string => { return `arn:${partition}:dynamodb:${region}:${account}:table/${tableName}/export/${exportName}`; }; export interface CreateAwsDynamoDbGlobalTableArnParams { partition: string; account: string; globalTableName: string; } export const createAwsDynamoDbGlobalTableArn = ({ partition, account, globalTableName, }: CreateAwsDynamoDbGlobalTableArnParams): string => { return `arn:${partition}:dynamodb::${account}:global-table/${globalTableName}`; };