import * as core from "@terrascript/core"; export interface GranteeArgs extends core.SchemaArgs { displayName: string | core.StringOut; emailAddress?: string | core.StringOut; id?: string | core.StringOut; type: string | core.StringOut; uri?: string | core.StringOut; } export class Grantee extends core.Schema { @core.attr(String, { computed: true }) public displayName!: string | core.StringOut; @core.attr(String) public emailAddress?: string | core.StringOut; @core.attr(String) public id?: string | core.StringOut; @core.attr(String) public type!: string | core.StringOut; @core.attr(String) public uri?: string | core.StringOut; } export interface TargetGrantArgs extends core.SchemaArgs { grantee: Grantee; permission: string | core.StringOut; } export class TargetGrant extends core.Schema { @core.attr(Grantee) public grantee!: Grantee; @core.attr(String) public permission!: string | core.StringOut; } export interface BucketLoggingArgs extends core.ResourceArgs { /** * (Required, Forces new resource) The name of the bucket. */ bucket: string | core.StringOut; /** * (Optional, Forces new resource) The account ID of the expected bucket owner. */ expectedBucketOwner?: string | core.StringOut; /** * (Required) The name of the bucket where you want Amazon S3 to store server access logs. */ targetBucket: string | core.StringOut; /** * (Optional) Set of configuration blocks with information for granting permissions [documented below]( * #target_grant). */ targetGrant?: core.Array | core.ArrayOut; /** * (Required) A prefix for all log object keys. */ targetPrefix: string | core.StringOut; } export class BucketLogging extends core.Resource { /** * (Required, Forces new resource) The name of the bucket. */ @core.attr(String) public bucket!: string | core.StringOut; /** * (Optional, Forces new resource) The account ID of the expected bucket owner. */ @core.attr(String) public expectedBucketOwner?: string | core.StringOut; /** * (Optional) The canonical user ID of the grantee. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required) The name of the bucket where you want Amazon S3 to store server access logs. */ @core.attr(String) public targetBucket!: string | core.StringOut; /** * (Optional) Set of configuration blocks with information for granting permissions [documented below]( * #target_grant). */ @core.attr(TargetGrant, { kind: "array" }) public targetGrant?: core.Array | core.ArrayOut; /** * (Required) A prefix for all log object keys. */ @core.attr(String) public targetPrefix!: string | core.StringOut; constructor(name: string, args?: BucketLoggingArgs) { super(name, "aws_s3_bucket_logging", args); } public override getNamespace(): string { return "aws_s3"; } }