import * as core from "@terrascript/core"; export interface UserBucketArgs extends core.SchemaArgs { s3Bucket: string | core.StringOut; s3Key: string | core.StringOut; } export class UserBucket extends core.Schema { @core.attr(String) public s3Bucket!: string | core.StringOut; @core.attr(String) public s3Key!: string | core.StringOut; } export interface DiskContainerArgs extends core.SchemaArgs { description?: string | core.StringOut; format: string | core.StringOut; url?: string | core.StringOut; userBucket?: UserBucket; } export class DiskContainer extends core.Schema { @core.attr(String) public description?: string | core.StringOut; @core.attr(String) public format!: string | core.StringOut; @core.attr(String) public url?: string | core.StringOut; @core.attr(UserBucket) public userBucket?: UserBucket; } export interface ClientDataArgs extends core.SchemaArgs { comment?: string | core.StringOut; uploadEnd?: string | core.StringOut; uploadSize?: number | core.NumberOut; uploadStart?: string | core.StringOut; } export class ClientData extends core.Schema { @core.attr(String) public comment?: string | core.StringOut; @core.attr(String, { computed: true }) public uploadEnd?: string | core.StringOut; @core.attr(Number, { computed: true }) public uploadSize?: number | core.NumberOut; @core.attr(String, { computed: true }) public uploadStart?: string | core.StringOut; } export interface SnapshotImportArgs extends core.ResourceArgs { /** * (Optional) The client-specific data. Detailed below. */ clientData?: ClientData; /** * (Optional) The description string for the import snapshot task. */ description?: string | core.StringOut; /** * (Required) Information about the disk container. Detailed below. */ diskContainer: DiskContainer; /** * (Optional) Specifies whether the destination snapshot of the imported image should be encrypted. The * default KMS key for EBS is used unless you specify a non-default KMS key using KmsKeyId. */ encrypted?: boolean | core.BooleanOut; /** * (Optional) An identifier for the symmetric KMS key to use when creating the encrypted snapshot. This * parameter is only required if you want to use a non-default KMS key; if this parameter is not speci * fied, the default KMS key for EBS is used. If a KmsKeyId is specified, the Encrypted flag must also * be set. */ kmsKeyId?: string | core.StringOut; /** * (Optional) Indicates whether to permanently restore an archived snapshot. */ permanentRestore?: boolean | core.BooleanOut; /** * (Optional) The name of the IAM Role the VM Import/Export service will assume. This role needs certai * n permissions. See https://docs.aws.amazon.com/vm-import/latest/userguide/vmie_prereqs.html#vmimport * role. Default: `vmimport` */ roleName?: string | core.StringOut; /** * (Optional) The name of the storage tier. Valid values are `archive` and `standard`. Default value is * standard`. */ storageTier?: string | core.StringOut; /** * (Optional) A map of tags to assign to the snapshot. */ tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ tagsAll?: core.Map | core.MapOut; /** * (Optional) Specifies the number of days for which to temporarily restore an archived snapshot. Requi * red for temporary restores only. The snapshot will be automatically re-archived after this period. */ temporaryRestoreDays?: number | core.NumberOut; } export class SnapshotImport extends core.Resource { /** * Amazon Resource Name (ARN) of the EBS Snapshot. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) The client-specific data. Detailed below. */ @core.attr(ClientData) public clientData?: ClientData; /** * The data encryption key identifier for the snapshot. */ @core.attr(String, { computed: true }) public dataEncryptionKeyId!: string | core.StringOut; /** * (Optional) The description string for the import snapshot task. */ @core.attr(String, { computed: true }) public description?: string | core.StringOut; /** * (Required) Information about the disk container. Detailed below. */ @core.attr(DiskContainer) public diskContainer!: DiskContainer; /** * (Optional) Specifies whether the destination snapshot of the imported image should be encrypted. The * default KMS key for EBS is used unless you specify a non-default KMS key using KmsKeyId. */ @core.attr(Boolean) public encrypted?: boolean | core.BooleanOut; /** * The snapshot ID (e.g., snap-59fcb34e). */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Optional) An identifier for the symmetric KMS key to use when creating the encrypted snapshot. This * parameter is only required if you want to use a non-default KMS key; if this parameter is not speci * fied, the default KMS key for EBS is used. If a KmsKeyId is specified, the Encrypted flag must also * be set. */ @core.attr(String) public kmsKeyId?: string | core.StringOut; @core.attr(String, { computed: true }) public outpostArn!: string | core.StringOut; /** * Value from an Amazon-maintained list (`amazon`, `aws-marketplace`, `microsoft`) of snapshot owners. */ @core.attr(String, { computed: true }) public ownerAlias!: string | core.StringOut; /** * The AWS account ID of the EBS snapshot owner. */ @core.attr(String, { computed: true }) public ownerId!: string | core.StringOut; /** * (Optional) Indicates whether to permanently restore an archived snapshot. */ @core.attr(Boolean) public permanentRestore?: boolean | core.BooleanOut; /** * (Optional) The name of the IAM Role the VM Import/Export service will assume. This role needs certai * n permissions. See https://docs.aws.amazon.com/vm-import/latest/userguide/vmie_prereqs.html#vmimport * role. Default: `vmimport` */ @core.attr(String) public roleName?: string | core.StringOut; /** * (Optional) The name of the storage tier. Valid values are `archive` and `standard`. Default value is * standard`. */ @core.attr(String, { computed: true }) public storageTier?: string | core.StringOut; /** * (Optional) A map of tags to assign to the snapshot. */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; /** * (Optional) Specifies the number of days for which to temporarily restore an archived snapshot. Requi * red for temporary restores only. The snapshot will be automatically re-archived after this period. */ @core.attr(Number) public temporaryRestoreDays?: number | core.NumberOut; @core.attr(String, { computed: true }) public volumeId!: string | core.StringOut; /** * The size of the drive in GiBs. */ @core.attr(Number, { computed: true }) public volumeSize!: number | core.NumberOut; constructor(name: string, args?: SnapshotImportArgs) { super(name, "aws_ebs_snapshot_import", args); } public override getNamespace(): string { return "aws_ebs"; } }