import * as core from "@terrascript/core"; export interface ReplicaModificationsArgs extends core.SchemaArgs { status: string | core.StringOut; } export class ReplicaModifications extends core.Schema { @core.attr(String) public status!: string | core.StringOut; } export interface SseKmsEncryptedObjectsArgs extends core.SchemaArgs { status: string | core.StringOut; } export class SseKmsEncryptedObjects extends core.Schema { @core.attr(String) public status!: string | core.StringOut; } export interface SourceSelectionCriteriaArgs extends core.SchemaArgs { replicaModifications?: ReplicaModifications; sseKmsEncryptedObjects?: SseKmsEncryptedObjects; } export class SourceSelectionCriteria extends core.Schema { @core.attr(ReplicaModifications) public replicaModifications?: ReplicaModifications; @core.attr(SseKmsEncryptedObjects) public sseKmsEncryptedObjects?: SseKmsEncryptedObjects; } export interface DeleteMarkerReplicationArgs extends core.SchemaArgs { status: string | core.StringOut; } export class DeleteMarkerReplication extends core.Schema { @core.attr(String) public status!: string | core.StringOut; } export interface AccessControlTranslationArgs extends core.SchemaArgs { owner: string | core.StringOut; } export class AccessControlTranslation extends core.Schema { @core.attr(String) public owner!: string | core.StringOut; } export interface EncryptionConfigurationArgs extends core.SchemaArgs { replicaKmsKeyId: string | core.StringOut; } export class EncryptionConfiguration extends core.Schema { @core.attr(String) public replicaKmsKeyId!: string | core.StringOut; } export interface EventThresholdArgs extends core.SchemaArgs { minutes: number | core.NumberOut; } export class EventThreshold extends core.Schema { @core.attr(Number) public minutes!: number | core.NumberOut; } export interface MetricsArgs extends core.SchemaArgs { eventThreshold?: EventThreshold; status: string | core.StringOut; } export class Metrics extends core.Schema { @core.attr(EventThreshold) public eventThreshold?: EventThreshold; @core.attr(String) public status!: string | core.StringOut; } export interface TimeArgs extends core.SchemaArgs { minutes: number | core.NumberOut; } export class Time extends core.Schema { @core.attr(Number) public minutes!: number | core.NumberOut; } export interface ReplicationTimeArgs extends core.SchemaArgs { status: string | core.StringOut; time: Time; } export class ReplicationTime extends core.Schema { @core.attr(String) public status!: string | core.StringOut; @core.attr(Time) public time!: Time; } export interface DestinationArgs extends core.SchemaArgs { accessControlTranslation?: AccessControlTranslation; account?: string | core.StringOut; bucket: string | core.StringOut; encryptionConfiguration?: EncryptionConfiguration; metrics?: Metrics; replicationTime?: ReplicationTime; storageClass?: string | core.StringOut; } export class Destination extends core.Schema { @core.attr(AccessControlTranslation) public accessControlTranslation?: AccessControlTranslation; @core.attr(String) public account?: string | core.StringOut; @core.attr(String) public bucket!: string | core.StringOut; @core.attr(EncryptionConfiguration) public encryptionConfiguration?: EncryptionConfiguration; @core.attr(Metrics) public metrics?: Metrics; @core.attr(ReplicationTime) public replicationTime?: ReplicationTime; @core.attr(String) public storageClass?: string | core.StringOut; } export interface ExistingObjectReplicationArgs extends core.SchemaArgs { status: string | core.StringOut; } export class ExistingObjectReplication extends core.Schema { @core.attr(String) public status!: string | core.StringOut; } export interface AndArgs extends core.SchemaArgs { prefix?: string | core.StringOut; tags?: core.Map | core.MapOut; } export class And extends core.Schema { @core.attr(String) public prefix?: string | core.StringOut; @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; } export interface TagArgs extends core.SchemaArgs { key: string | core.StringOut; value: string | core.StringOut; } export class Tag extends core.Schema { @core.attr(String) public key!: string | core.StringOut; @core.attr(String) public value!: string | core.StringOut; } export interface FilterArgs extends core.SchemaArgs { and?: And; prefix?: string | core.StringOut; tag?: Tag; } export class Filter extends core.Schema { @core.attr(And) public and?: And; @core.attr(String) public prefix?: string | core.StringOut; @core.attr(Tag) public tag?: Tag; } export interface RuleArgs extends core.SchemaArgs { deleteMarkerReplication?: DeleteMarkerReplication; destination: Destination; existingObjectReplication?: ExistingObjectReplication; filter?: Filter; id?: string | core.StringOut; prefix?: string | core.StringOut; priority?: number | core.NumberOut; sourceSelectionCriteria?: SourceSelectionCriteria; status: string | core.StringOut; } export class Rule extends core.Schema { @core.attr(DeleteMarkerReplication) public deleteMarkerReplication?: DeleteMarkerReplication; @core.attr(Destination) public destination!: Destination; @core.attr(ExistingObjectReplication) public existingObjectReplication?: ExistingObjectReplication; @core.attr(Filter) public filter?: Filter; @core.attr(String, { computed: true }) public id?: string | core.StringOut; @core.attr(String) public prefix?: string | core.StringOut; @core.attr(Number) public priority?: number | core.NumberOut; @core.attr(SourceSelectionCriteria) public sourceSelectionCriteria?: SourceSelectionCriteria; @core.attr(String) public status!: string | core.StringOut; } export interface BucketReplicationConfigurationArgs extends core.ResourceArgs { /** * (Required) The name of the source S3 bucket you want Amazon S3 to monitor. */ bucket: string | core.StringOut; /** * (Required) The ARN of the IAM role for Amazon S3 to assume when replicating the objects. */ role: string | core.StringOut; /** * (Required) List of configuration blocks describing the rules managing the replication [documented be * low](#rule). */ rule: core.Array | core.ArrayOut; /** * (Optional) A token to allow replication to be enabled on an Object Lock-enabled bucket. You must con * tact AWS support for the bucket's "Object Lock token". */ token?: string | core.StringOut; } export class BucketReplicationConfiguration extends core.Resource { /** * (Required) The name of the source S3 bucket you want Amazon S3 to monitor. */ @core.attr(String) public bucket!: string | core.StringOut; /** * (Optional) Unique identifier for the rule. Must be less than or equal to 255 characters in length. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) The ARN of the IAM role for Amazon S3 to assume when replicating the objects. */ @core.attr(String) public role!: string | core.StringOut; /** * (Required) List of configuration blocks describing the rules managing the replication [documented be * low](#rule). */ @core.attr(Rule, { kind: "array" }) public rule!: core.Array | core.ArrayOut; /** * (Optional) A token to allow replication to be enabled on an Object Lock-enabled bucket. You must con * tact AWS support for the bucket's "Object Lock token". */ @core.attr(String) public token?: string | core.StringOut; constructor(name: string, args?: BucketReplicationConfigurationArgs) { super(name, "aws_s3_bucket_replication_configuration", args); } public override getNamespace(): string { return "aws_s3"; } }