github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/glue/crawler.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package glue
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Manages a Glue Crawler. More information can be found in the [AWS Glue Developer Guide](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)
    16  //
    17  // ## Example Usage
    18  //
    19  // ### DynamoDB Target Example
    20  //
    21  // <!--Start PulumiCodeChooser -->
    22  // ```go
    23  // package main
    24  //
    25  // import (
    26  //
    27  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/glue"
    28  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    29  //
    30  // )
    31  //
    32  //	func main() {
    33  //		pulumi.Run(func(ctx *pulumi.Context) error {
    34  //			_, err := glue.NewCrawler(ctx, "example", &glue.CrawlerArgs{
    35  //				DatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),
    36  //				Name:         pulumi.String("example"),
    37  //				Role:         pulumi.Any(exampleAwsIamRole.Arn),
    38  //				DynamodbTargets: glue.CrawlerDynamodbTargetArray{
    39  //					&glue.CrawlerDynamodbTargetArgs{
    40  //						Path: pulumi.String("table-name"),
    41  //					},
    42  //				},
    43  //			})
    44  //			if err != nil {
    45  //				return err
    46  //			}
    47  //			return nil
    48  //		})
    49  //	}
    50  //
    51  // ```
    52  // <!--End PulumiCodeChooser -->
    53  //
    54  // ### JDBC Target Example
    55  //
    56  // <!--Start PulumiCodeChooser -->
    57  // ```go
    58  // package main
    59  //
    60  // import (
    61  //
    62  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/glue"
    63  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    64  //
    65  // )
    66  //
    67  //	func main() {
    68  //		pulumi.Run(func(ctx *pulumi.Context) error {
    69  //			_, err := glue.NewCrawler(ctx, "example", &glue.CrawlerArgs{
    70  //				DatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),
    71  //				Name:         pulumi.String("example"),
    72  //				Role:         pulumi.Any(exampleAwsIamRole.Arn),
    73  //				JdbcTargets: glue.CrawlerJdbcTargetArray{
    74  //					&glue.CrawlerJdbcTargetArgs{
    75  //						ConnectionName: pulumi.Any(exampleAwsGlueConnection.Name),
    76  //						Path:           pulumi.String("database-name/%"),
    77  //					},
    78  //				},
    79  //			})
    80  //			if err != nil {
    81  //				return err
    82  //			}
    83  //			return nil
    84  //		})
    85  //	}
    86  //
    87  // ```
    88  // <!--End PulumiCodeChooser -->
    89  //
    90  // ### S3 Target Example
    91  //
    92  // <!--Start PulumiCodeChooser -->
    93  // ```go
    94  // package main
    95  //
    96  // import (
    97  //
    98  //	"fmt"
    99  //
   100  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/glue"
   101  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   102  //
   103  // )
   104  //
   105  //	func main() {
   106  //		pulumi.Run(func(ctx *pulumi.Context) error {
   107  //			_, err := glue.NewCrawler(ctx, "example", &glue.CrawlerArgs{
   108  //				DatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),
   109  //				Name:         pulumi.String("example"),
   110  //				Role:         pulumi.Any(exampleAwsIamRole.Arn),
   111  //				S3Targets: glue.CrawlerS3TargetArray{
   112  //					&glue.CrawlerS3TargetArgs{
   113  //						Path: pulumi.String(fmt.Sprintf("s3://%v", exampleAwsS3Bucket.Bucket)),
   114  //					},
   115  //				},
   116  //			})
   117  //			if err != nil {
   118  //				return err
   119  //			}
   120  //			return nil
   121  //		})
   122  //	}
   123  //
   124  // ```
   125  // <!--End PulumiCodeChooser -->
   126  //
   127  // ### Catalog Target Example
   128  //
   129  // <!--Start PulumiCodeChooser -->
   130  // ```go
   131  // package main
   132  //
   133  // import (
   134  //
   135  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/glue"
   136  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   137  //
   138  // )
   139  //
   140  //	func main() {
   141  //		pulumi.Run(func(ctx *pulumi.Context) error {
   142  //			_, err := glue.NewCrawler(ctx, "example", &glue.CrawlerArgs{
   143  //				DatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),
   144  //				Name:         pulumi.String("example"),
   145  //				Role:         pulumi.Any(exampleAwsIamRole.Arn),
   146  //				CatalogTargets: glue.CrawlerCatalogTargetArray{
   147  //					&glue.CrawlerCatalogTargetArgs{
   148  //						DatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),
   149  //						Tables: pulumi.StringArray{
   150  //							exampleAwsGlueCatalogTable.Name,
   151  //						},
   152  //					},
   153  //				},
   154  //				SchemaChangePolicy: &glue.CrawlerSchemaChangePolicyArgs{
   155  //					DeleteBehavior: pulumi.String("LOG"),
   156  //				},
   157  //				Configuration: pulumi.String(`{
   158  //	  "Version":1.0,
   159  //	  "Grouping": {
   160  //	    "TableGroupingPolicy": "CombineCompatibleSchemas"
   161  //	  }
   162  //	}
   163  //
   164  // `),
   165  //
   166  //			})
   167  //			if err != nil {
   168  //				return err
   169  //			}
   170  //			return nil
   171  //		})
   172  //	}
   173  //
   174  // ```
   175  // <!--End PulumiCodeChooser -->
   176  //
   177  // ### MongoDB Target Example
   178  //
   179  // <!--Start PulumiCodeChooser -->
   180  // ```go
   181  // package main
   182  //
   183  // import (
   184  //
   185  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/glue"
   186  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   187  //
   188  // )
   189  //
   190  //	func main() {
   191  //		pulumi.Run(func(ctx *pulumi.Context) error {
   192  //			_, err := glue.NewCrawler(ctx, "example", &glue.CrawlerArgs{
   193  //				DatabaseName: pulumi.Any(exampleAwsGlueCatalogDatabase.Name),
   194  //				Name:         pulumi.String("example"),
   195  //				Role:         pulumi.Any(exampleAwsIamRole.Arn),
   196  //				MongodbTargets: glue.CrawlerMongodbTargetArray{
   197  //					&glue.CrawlerMongodbTargetArgs{
   198  //						ConnectionName: pulumi.Any(exampleAwsGlueConnection.Name),
   199  //						Path:           pulumi.String("database-name/%"),
   200  //					},
   201  //				},
   202  //			})
   203  //			if err != nil {
   204  //				return err
   205  //			}
   206  //			return nil
   207  //		})
   208  //	}
   209  //
   210  // ```
   211  // <!--End PulumiCodeChooser -->
   212  //
   213  // ### Configuration Settings Example
   214  //
   215  // <!--Start PulumiCodeChooser -->
   216  // ```go
   217  // package main
   218  //
   219  // import (
   220  //
   221  //	"encoding/json"
   222  //	"fmt"
   223  //
   224  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/glue"
   225  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   226  //
   227  // )
   228  //
   229  //	func main() {
   230  //		pulumi.Run(func(ctx *pulumi.Context) error {
   231  //			tmpJSON0, err := json.Marshal(map[string]interface{}{
   232  //				"Grouping": map[string]interface{}{
   233  //					"TableGroupingPolicy": "CombineCompatibleSchemas",
   234  //				},
   235  //				"CrawlerOutput": map[string]interface{}{
   236  //					"Partitions": map[string]interface{}{
   237  //						"AddOrUpdateBehavior": "InheritFromTable",
   238  //					},
   239  //				},
   240  //				"Version": 1,
   241  //			})
   242  //			if err != nil {
   243  //				return err
   244  //			}
   245  //			json0 := string(tmpJSON0)
   246  //			_, err = glue.NewCrawler(ctx, "events_crawler", &glue.CrawlerArgs{
   247  //				DatabaseName:  pulumi.Any(glueDatabase.Name),
   248  //				Schedule:      pulumi.String("cron(0 1 * * ? *)"),
   249  //				Name:          pulumi.String(fmt.Sprintf("events_crawler_%v", environmentName)),
   250  //				Role:          pulumi.Any(glueRole.Arn),
   251  //				Tags:          pulumi.Any(tags),
   252  //				Configuration: pulumi.String(json0),
   253  //				S3Targets: glue.CrawlerS3TargetArray{
   254  //					&glue.CrawlerS3TargetArgs{
   255  //						Path: pulumi.String(fmt.Sprintf("s3://%v", dataLakeBucket.Bucket)),
   256  //					},
   257  //				},
   258  //			})
   259  //			if err != nil {
   260  //				return err
   261  //			}
   262  //			return nil
   263  //		})
   264  //	}
   265  //
   266  // ```
   267  // <!--End PulumiCodeChooser -->
   268  //
   269  // ## Import
   270  //
   271  // Using `pulumi import`, import Glue Crawlers using `name`. For example:
   272  //
   273  // ```sh
   274  // $ pulumi import aws:glue/crawler:Crawler MyJob MyJob
   275  // ```
   276  type Crawler struct {
   277  	pulumi.CustomResourceState
   278  
   279  	// The ARN of the crawler
   280  	Arn pulumi.StringOutput `pulumi:"arn"`
   281  	// List of nested AWS Glue Data Catalog target arguments. See Catalog Target below.
   282  	CatalogTargets CrawlerCatalogTargetArrayOutput `pulumi:"catalogTargets"`
   283  	// List of custom classifiers. By default, all AWS classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification.
   284  	Classifiers pulumi.StringArrayOutput `pulumi:"classifiers"`
   285  	// JSON string of configuration information. For more details see [Setting Crawler Configuration Options](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html).
   286  	Configuration pulumi.StringPtrOutput `pulumi:"configuration"`
   287  	// Glue database where results are written.
   288  	DatabaseName pulumi.StringOutput `pulumi:"databaseName"`
   289  	// List of nested Delta Lake target arguments. See Delta Target below.
   290  	DeltaTargets CrawlerDeltaTargetArrayOutput `pulumi:"deltaTargets"`
   291  	// Description of the crawler.
   292  	Description pulumi.StringPtrOutput `pulumi:"description"`
   293  	// List of nested DynamoDB target arguments. See Dynamodb Target below.
   294  	DynamodbTargets CrawlerDynamodbTargetArrayOutput `pulumi:"dynamodbTargets"`
   295  	// List of nested Hudi target arguments. See Iceberg Target below.
   296  	HudiTargets CrawlerHudiTargetArrayOutput `pulumi:"hudiTargets"`
   297  	// List of nested Iceberg target arguments. See Iceberg Target below.
   298  	IcebergTargets CrawlerIcebergTargetArrayOutput `pulumi:"icebergTargets"`
   299  	// List of nested JDBC target arguments. See JDBC Target below.
   300  	JdbcTargets CrawlerJdbcTargetArrayOutput `pulumi:"jdbcTargets"`
   301  	// Specifies Lake Formation configuration settings for the crawler. See Lake Formation Configuration below.
   302  	LakeFormationConfiguration CrawlerLakeFormationConfigurationPtrOutput `pulumi:"lakeFormationConfiguration"`
   303  	// Specifies data lineage configuration settings for the crawler. See Lineage Configuration below.
   304  	LineageConfiguration CrawlerLineageConfigurationPtrOutput `pulumi:"lineageConfiguration"`
   305  	// List of nested MongoDB target arguments. See MongoDB Target below.
   306  	MongodbTargets CrawlerMongodbTargetArrayOutput `pulumi:"mongodbTargets"`
   307  	// Name of the crawler.
   308  	Name pulumi.StringOutput `pulumi:"name"`
   309  	// A policy that specifies whether to crawl the entire dataset again, or to crawl only folders that were added since the last crawler run.. See Recrawl Policy below.
   310  	RecrawlPolicy CrawlerRecrawlPolicyPtrOutput `pulumi:"recrawlPolicy"`
   311  	// The IAM role friendly name (including path without leading slash), or ARN of an IAM role, used by the crawler to access other resources.
   312  	Role pulumi.StringOutput `pulumi:"role"`
   313  	// List of nested Amazon S3 target arguments. See S3 Target below.
   314  	S3Targets CrawlerS3TargetArrayOutput `pulumi:"s3Targets"`
   315  	// A cron expression used to specify the schedule. For more information, see [Time-Based Schedules for Jobs and Crawlers](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html). For example, to run something every day at 12:15 UTC, you would specify: `cron(15 12 * * ? *)`.
   316  	Schedule pulumi.StringPtrOutput `pulumi:"schedule"`
   317  	// Policy for the crawler's update and deletion behavior. See Schema Change Policy below.
   318  	SchemaChangePolicy CrawlerSchemaChangePolicyPtrOutput `pulumi:"schemaChangePolicy"`
   319  	// The name of Security Configuration to be used by the crawler
   320  	SecurityConfiguration pulumi.StringPtrOutput `pulumi:"securityConfiguration"`
   321  	// The table prefix used for catalog tables that are created.
   322  	TablePrefix pulumi.StringPtrOutput `pulumi:"tablePrefix"`
   323  	// Key-value map of resource tags. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   324  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   325  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   326  	//
   327  	// Deprecated: Please use `tags` instead.
   328  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   329  }
   330  
   331  // NewCrawler registers a new resource with the given unique name, arguments, and options.
   332  func NewCrawler(ctx *pulumi.Context,
   333  	name string, args *CrawlerArgs, opts ...pulumi.ResourceOption) (*Crawler, error) {
   334  	if args == nil {
   335  		return nil, errors.New("missing one or more required arguments")
   336  	}
   337  
   338  	if args.DatabaseName == nil {
   339  		return nil, errors.New("invalid value for required argument 'DatabaseName'")
   340  	}
   341  	if args.Role == nil {
   342  		return nil, errors.New("invalid value for required argument 'Role'")
   343  	}
   344  	opts = internal.PkgResourceDefaultOpts(opts)
   345  	var resource Crawler
   346  	err := ctx.RegisterResource("aws:glue/crawler:Crawler", name, args, &resource, opts...)
   347  	if err != nil {
   348  		return nil, err
   349  	}
   350  	return &resource, nil
   351  }
   352  
   353  // GetCrawler gets an existing Crawler resource's state with the given name, ID, and optional
   354  // state properties that are used to uniquely qualify the lookup (nil if not required).
   355  func GetCrawler(ctx *pulumi.Context,
   356  	name string, id pulumi.IDInput, state *CrawlerState, opts ...pulumi.ResourceOption) (*Crawler, error) {
   357  	var resource Crawler
   358  	err := ctx.ReadResource("aws:glue/crawler:Crawler", name, id, state, &resource, opts...)
   359  	if err != nil {
   360  		return nil, err
   361  	}
   362  	return &resource, nil
   363  }
   364  
   365  // Input properties used for looking up and filtering Crawler resources.
   366  type crawlerState struct {
   367  	// The ARN of the crawler
   368  	Arn *string `pulumi:"arn"`
   369  	// List of nested AWS Glue Data Catalog target arguments. See Catalog Target below.
   370  	CatalogTargets []CrawlerCatalogTarget `pulumi:"catalogTargets"`
   371  	// List of custom classifiers. By default, all AWS classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification.
   372  	Classifiers []string `pulumi:"classifiers"`
   373  	// JSON string of configuration information. For more details see [Setting Crawler Configuration Options](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html).
   374  	Configuration *string `pulumi:"configuration"`
   375  	// Glue database where results are written.
   376  	DatabaseName *string `pulumi:"databaseName"`
   377  	// List of nested Delta Lake target arguments. See Delta Target below.
   378  	DeltaTargets []CrawlerDeltaTarget `pulumi:"deltaTargets"`
   379  	// Description of the crawler.
   380  	Description *string `pulumi:"description"`
   381  	// List of nested DynamoDB target arguments. See Dynamodb Target below.
   382  	DynamodbTargets []CrawlerDynamodbTarget `pulumi:"dynamodbTargets"`
   383  	// List of nested Hudi target arguments. See Iceberg Target below.
   384  	HudiTargets []CrawlerHudiTarget `pulumi:"hudiTargets"`
   385  	// List of nested Iceberg target arguments. See Iceberg Target below.
   386  	IcebergTargets []CrawlerIcebergTarget `pulumi:"icebergTargets"`
   387  	// List of nested JDBC target arguments. See JDBC Target below.
   388  	JdbcTargets []CrawlerJdbcTarget `pulumi:"jdbcTargets"`
   389  	// Specifies Lake Formation configuration settings for the crawler. See Lake Formation Configuration below.
   390  	LakeFormationConfiguration *CrawlerLakeFormationConfiguration `pulumi:"lakeFormationConfiguration"`
   391  	// Specifies data lineage configuration settings for the crawler. See Lineage Configuration below.
   392  	LineageConfiguration *CrawlerLineageConfiguration `pulumi:"lineageConfiguration"`
   393  	// List of nested MongoDB target arguments. See MongoDB Target below.
   394  	MongodbTargets []CrawlerMongodbTarget `pulumi:"mongodbTargets"`
   395  	// Name of the crawler.
   396  	Name *string `pulumi:"name"`
   397  	// A policy that specifies whether to crawl the entire dataset again, or to crawl only folders that were added since the last crawler run.. See Recrawl Policy below.
   398  	RecrawlPolicy *CrawlerRecrawlPolicy `pulumi:"recrawlPolicy"`
   399  	// The IAM role friendly name (including path without leading slash), or ARN of an IAM role, used by the crawler to access other resources.
   400  	Role *string `pulumi:"role"`
   401  	// List of nested Amazon S3 target arguments. See S3 Target below.
   402  	S3Targets []CrawlerS3Target `pulumi:"s3Targets"`
   403  	// A cron expression used to specify the schedule. For more information, see [Time-Based Schedules for Jobs and Crawlers](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html). For example, to run something every day at 12:15 UTC, you would specify: `cron(15 12 * * ? *)`.
   404  	Schedule *string `pulumi:"schedule"`
   405  	// Policy for the crawler's update and deletion behavior. See Schema Change Policy below.
   406  	SchemaChangePolicy *CrawlerSchemaChangePolicy `pulumi:"schemaChangePolicy"`
   407  	// The name of Security Configuration to be used by the crawler
   408  	SecurityConfiguration *string `pulumi:"securityConfiguration"`
   409  	// The table prefix used for catalog tables that are created.
   410  	TablePrefix *string `pulumi:"tablePrefix"`
   411  	// Key-value map of resource tags. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   412  	Tags map[string]string `pulumi:"tags"`
   413  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   414  	//
   415  	// Deprecated: Please use `tags` instead.
   416  	TagsAll map[string]string `pulumi:"tagsAll"`
   417  }
   418  
   419  type CrawlerState struct {
   420  	// The ARN of the crawler
   421  	Arn pulumi.StringPtrInput
   422  	// List of nested AWS Glue Data Catalog target arguments. See Catalog Target below.
   423  	CatalogTargets CrawlerCatalogTargetArrayInput
   424  	// List of custom classifiers. By default, all AWS classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification.
   425  	Classifiers pulumi.StringArrayInput
   426  	// JSON string of configuration information. For more details see [Setting Crawler Configuration Options](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html).
   427  	Configuration pulumi.StringPtrInput
   428  	// Glue database where results are written.
   429  	DatabaseName pulumi.StringPtrInput
   430  	// List of nested Delta Lake target arguments. See Delta Target below.
   431  	DeltaTargets CrawlerDeltaTargetArrayInput
   432  	// Description of the crawler.
   433  	Description pulumi.StringPtrInput
   434  	// List of nested DynamoDB target arguments. See Dynamodb Target below.
   435  	DynamodbTargets CrawlerDynamodbTargetArrayInput
   436  	// List of nested Hudi target arguments. See Iceberg Target below.
   437  	HudiTargets CrawlerHudiTargetArrayInput
   438  	// List of nested Iceberg target arguments. See Iceberg Target below.
   439  	IcebergTargets CrawlerIcebergTargetArrayInput
   440  	// List of nested JDBC target arguments. See JDBC Target below.
   441  	JdbcTargets CrawlerJdbcTargetArrayInput
   442  	// Specifies Lake Formation configuration settings for the crawler. See Lake Formation Configuration below.
   443  	LakeFormationConfiguration CrawlerLakeFormationConfigurationPtrInput
   444  	// Specifies data lineage configuration settings for the crawler. See Lineage Configuration below.
   445  	LineageConfiguration CrawlerLineageConfigurationPtrInput
   446  	// List of nested MongoDB target arguments. See MongoDB Target below.
   447  	MongodbTargets CrawlerMongodbTargetArrayInput
   448  	// Name of the crawler.
   449  	Name pulumi.StringPtrInput
   450  	// A policy that specifies whether to crawl the entire dataset again, or to crawl only folders that were added since the last crawler run.. See Recrawl Policy below.
   451  	RecrawlPolicy CrawlerRecrawlPolicyPtrInput
   452  	// The IAM role friendly name (including path without leading slash), or ARN of an IAM role, used by the crawler to access other resources.
   453  	Role pulumi.StringPtrInput
   454  	// List of nested Amazon S3 target arguments. See S3 Target below.
   455  	S3Targets CrawlerS3TargetArrayInput
   456  	// A cron expression used to specify the schedule. For more information, see [Time-Based Schedules for Jobs and Crawlers](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html). For example, to run something every day at 12:15 UTC, you would specify: `cron(15 12 * * ? *)`.
   457  	Schedule pulumi.StringPtrInput
   458  	// Policy for the crawler's update and deletion behavior. See Schema Change Policy below.
   459  	SchemaChangePolicy CrawlerSchemaChangePolicyPtrInput
   460  	// The name of Security Configuration to be used by the crawler
   461  	SecurityConfiguration pulumi.StringPtrInput
   462  	// The table prefix used for catalog tables that are created.
   463  	TablePrefix pulumi.StringPtrInput
   464  	// Key-value map of resource tags. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   465  	Tags pulumi.StringMapInput
   466  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   467  	//
   468  	// Deprecated: Please use `tags` instead.
   469  	TagsAll pulumi.StringMapInput
   470  }
   471  
   472  func (CrawlerState) ElementType() reflect.Type {
   473  	return reflect.TypeOf((*crawlerState)(nil)).Elem()
   474  }
   475  
   476  type crawlerArgs struct {
   477  	// List of nested AWS Glue Data Catalog target arguments. See Catalog Target below.
   478  	CatalogTargets []CrawlerCatalogTarget `pulumi:"catalogTargets"`
   479  	// List of custom classifiers. By default, all AWS classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification.
   480  	Classifiers []string `pulumi:"classifiers"`
   481  	// JSON string of configuration information. For more details see [Setting Crawler Configuration Options](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html).
   482  	Configuration *string `pulumi:"configuration"`
   483  	// Glue database where results are written.
   484  	DatabaseName string `pulumi:"databaseName"`
   485  	// List of nested Delta Lake target arguments. See Delta Target below.
   486  	DeltaTargets []CrawlerDeltaTarget `pulumi:"deltaTargets"`
   487  	// Description of the crawler.
   488  	Description *string `pulumi:"description"`
   489  	// List of nested DynamoDB target arguments. See Dynamodb Target below.
   490  	DynamodbTargets []CrawlerDynamodbTarget `pulumi:"dynamodbTargets"`
   491  	// List of nested Hudi target arguments. See Iceberg Target below.
   492  	HudiTargets []CrawlerHudiTarget `pulumi:"hudiTargets"`
   493  	// List of nested Iceberg target arguments. See Iceberg Target below.
   494  	IcebergTargets []CrawlerIcebergTarget `pulumi:"icebergTargets"`
   495  	// List of nested JDBC target arguments. See JDBC Target below.
   496  	JdbcTargets []CrawlerJdbcTarget `pulumi:"jdbcTargets"`
   497  	// Specifies Lake Formation configuration settings for the crawler. See Lake Formation Configuration below.
   498  	LakeFormationConfiguration *CrawlerLakeFormationConfiguration `pulumi:"lakeFormationConfiguration"`
   499  	// Specifies data lineage configuration settings for the crawler. See Lineage Configuration below.
   500  	LineageConfiguration *CrawlerLineageConfiguration `pulumi:"lineageConfiguration"`
   501  	// List of nested MongoDB target arguments. See MongoDB Target below.
   502  	MongodbTargets []CrawlerMongodbTarget `pulumi:"mongodbTargets"`
   503  	// Name of the crawler.
   504  	Name *string `pulumi:"name"`
   505  	// A policy that specifies whether to crawl the entire dataset again, or to crawl only folders that were added since the last crawler run.. See Recrawl Policy below.
   506  	RecrawlPolicy *CrawlerRecrawlPolicy `pulumi:"recrawlPolicy"`
   507  	// The IAM role friendly name (including path without leading slash), or ARN of an IAM role, used by the crawler to access other resources.
   508  	Role string `pulumi:"role"`
   509  	// List of nested Amazon S3 target arguments. See S3 Target below.
   510  	S3Targets []CrawlerS3Target `pulumi:"s3Targets"`
   511  	// A cron expression used to specify the schedule. For more information, see [Time-Based Schedules for Jobs and Crawlers](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html). For example, to run something every day at 12:15 UTC, you would specify: `cron(15 12 * * ? *)`.
   512  	Schedule *string `pulumi:"schedule"`
   513  	// Policy for the crawler's update and deletion behavior. See Schema Change Policy below.
   514  	SchemaChangePolicy *CrawlerSchemaChangePolicy `pulumi:"schemaChangePolicy"`
   515  	// The name of Security Configuration to be used by the crawler
   516  	SecurityConfiguration *string `pulumi:"securityConfiguration"`
   517  	// The table prefix used for catalog tables that are created.
   518  	TablePrefix *string `pulumi:"tablePrefix"`
   519  	// Key-value map of resource tags. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   520  	Tags map[string]string `pulumi:"tags"`
   521  }
   522  
   523  // The set of arguments for constructing a Crawler resource.
   524  type CrawlerArgs struct {
   525  	// List of nested AWS Glue Data Catalog target arguments. See Catalog Target below.
   526  	CatalogTargets CrawlerCatalogTargetArrayInput
   527  	// List of custom classifiers. By default, all AWS classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification.
   528  	Classifiers pulumi.StringArrayInput
   529  	// JSON string of configuration information. For more details see [Setting Crawler Configuration Options](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html).
   530  	Configuration pulumi.StringPtrInput
   531  	// Glue database where results are written.
   532  	DatabaseName pulumi.StringInput
   533  	// List of nested Delta Lake target arguments. See Delta Target below.
   534  	DeltaTargets CrawlerDeltaTargetArrayInput
   535  	// Description of the crawler.
   536  	Description pulumi.StringPtrInput
   537  	// List of nested DynamoDB target arguments. See Dynamodb Target below.
   538  	DynamodbTargets CrawlerDynamodbTargetArrayInput
   539  	// List of nested Hudi target arguments. See Iceberg Target below.
   540  	HudiTargets CrawlerHudiTargetArrayInput
   541  	// List of nested Iceberg target arguments. See Iceberg Target below.
   542  	IcebergTargets CrawlerIcebergTargetArrayInput
   543  	// List of nested JDBC target arguments. See JDBC Target below.
   544  	JdbcTargets CrawlerJdbcTargetArrayInput
   545  	// Specifies Lake Formation configuration settings for the crawler. See Lake Formation Configuration below.
   546  	LakeFormationConfiguration CrawlerLakeFormationConfigurationPtrInput
   547  	// Specifies data lineage configuration settings for the crawler. See Lineage Configuration below.
   548  	LineageConfiguration CrawlerLineageConfigurationPtrInput
   549  	// List of nested MongoDB target arguments. See MongoDB Target below.
   550  	MongodbTargets CrawlerMongodbTargetArrayInput
   551  	// Name of the crawler.
   552  	Name pulumi.StringPtrInput
   553  	// A policy that specifies whether to crawl the entire dataset again, or to crawl only folders that were added since the last crawler run.. See Recrawl Policy below.
   554  	RecrawlPolicy CrawlerRecrawlPolicyPtrInput
   555  	// The IAM role friendly name (including path without leading slash), or ARN of an IAM role, used by the crawler to access other resources.
   556  	Role pulumi.StringInput
   557  	// List of nested Amazon S3 target arguments. See S3 Target below.
   558  	S3Targets CrawlerS3TargetArrayInput
   559  	// A cron expression used to specify the schedule. For more information, see [Time-Based Schedules for Jobs and Crawlers](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html). For example, to run something every day at 12:15 UTC, you would specify: `cron(15 12 * * ? *)`.
   560  	Schedule pulumi.StringPtrInput
   561  	// Policy for the crawler's update and deletion behavior. See Schema Change Policy below.
   562  	SchemaChangePolicy CrawlerSchemaChangePolicyPtrInput
   563  	// The name of Security Configuration to be used by the crawler
   564  	SecurityConfiguration pulumi.StringPtrInput
   565  	// The table prefix used for catalog tables that are created.
   566  	TablePrefix pulumi.StringPtrInput
   567  	// Key-value map of resource tags. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   568  	Tags pulumi.StringMapInput
   569  }
   570  
   571  func (CrawlerArgs) ElementType() reflect.Type {
   572  	return reflect.TypeOf((*crawlerArgs)(nil)).Elem()
   573  }
   574  
   575  type CrawlerInput interface {
   576  	pulumi.Input
   577  
   578  	ToCrawlerOutput() CrawlerOutput
   579  	ToCrawlerOutputWithContext(ctx context.Context) CrawlerOutput
   580  }
   581  
   582  func (*Crawler) ElementType() reflect.Type {
   583  	return reflect.TypeOf((**Crawler)(nil)).Elem()
   584  }
   585  
   586  func (i *Crawler) ToCrawlerOutput() CrawlerOutput {
   587  	return i.ToCrawlerOutputWithContext(context.Background())
   588  }
   589  
   590  func (i *Crawler) ToCrawlerOutputWithContext(ctx context.Context) CrawlerOutput {
   591  	return pulumi.ToOutputWithContext(ctx, i).(CrawlerOutput)
   592  }
   593  
   594  // CrawlerArrayInput is an input type that accepts CrawlerArray and CrawlerArrayOutput values.
   595  // You can construct a concrete instance of `CrawlerArrayInput` via:
   596  //
   597  //	CrawlerArray{ CrawlerArgs{...} }
   598  type CrawlerArrayInput interface {
   599  	pulumi.Input
   600  
   601  	ToCrawlerArrayOutput() CrawlerArrayOutput
   602  	ToCrawlerArrayOutputWithContext(context.Context) CrawlerArrayOutput
   603  }
   604  
   605  type CrawlerArray []CrawlerInput
   606  
   607  func (CrawlerArray) ElementType() reflect.Type {
   608  	return reflect.TypeOf((*[]*Crawler)(nil)).Elem()
   609  }
   610  
   611  func (i CrawlerArray) ToCrawlerArrayOutput() CrawlerArrayOutput {
   612  	return i.ToCrawlerArrayOutputWithContext(context.Background())
   613  }
   614  
   615  func (i CrawlerArray) ToCrawlerArrayOutputWithContext(ctx context.Context) CrawlerArrayOutput {
   616  	return pulumi.ToOutputWithContext(ctx, i).(CrawlerArrayOutput)
   617  }
   618  
   619  // CrawlerMapInput is an input type that accepts CrawlerMap and CrawlerMapOutput values.
   620  // You can construct a concrete instance of `CrawlerMapInput` via:
   621  //
   622  //	CrawlerMap{ "key": CrawlerArgs{...} }
   623  type CrawlerMapInput interface {
   624  	pulumi.Input
   625  
   626  	ToCrawlerMapOutput() CrawlerMapOutput
   627  	ToCrawlerMapOutputWithContext(context.Context) CrawlerMapOutput
   628  }
   629  
   630  type CrawlerMap map[string]CrawlerInput
   631  
   632  func (CrawlerMap) ElementType() reflect.Type {
   633  	return reflect.TypeOf((*map[string]*Crawler)(nil)).Elem()
   634  }
   635  
   636  func (i CrawlerMap) ToCrawlerMapOutput() CrawlerMapOutput {
   637  	return i.ToCrawlerMapOutputWithContext(context.Background())
   638  }
   639  
   640  func (i CrawlerMap) ToCrawlerMapOutputWithContext(ctx context.Context) CrawlerMapOutput {
   641  	return pulumi.ToOutputWithContext(ctx, i).(CrawlerMapOutput)
   642  }
   643  
   644  type CrawlerOutput struct{ *pulumi.OutputState }
   645  
   646  func (CrawlerOutput) ElementType() reflect.Type {
   647  	return reflect.TypeOf((**Crawler)(nil)).Elem()
   648  }
   649  
   650  func (o CrawlerOutput) ToCrawlerOutput() CrawlerOutput {
   651  	return o
   652  }
   653  
   654  func (o CrawlerOutput) ToCrawlerOutputWithContext(ctx context.Context) CrawlerOutput {
   655  	return o
   656  }
   657  
   658  // The ARN of the crawler
   659  func (o CrawlerOutput) Arn() pulumi.StringOutput {
   660  	return o.ApplyT(func(v *Crawler) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   661  }
   662  
   663  // List of nested AWS Glue Data Catalog target arguments. See Catalog Target below.
   664  func (o CrawlerOutput) CatalogTargets() CrawlerCatalogTargetArrayOutput {
   665  	return o.ApplyT(func(v *Crawler) CrawlerCatalogTargetArrayOutput { return v.CatalogTargets }).(CrawlerCatalogTargetArrayOutput)
   666  }
   667  
   668  // List of custom classifiers. By default, all AWS classifiers are included in a crawl, but these custom classifiers always override the default classifiers for a given classification.
   669  func (o CrawlerOutput) Classifiers() pulumi.StringArrayOutput {
   670  	return o.ApplyT(func(v *Crawler) pulumi.StringArrayOutput { return v.Classifiers }).(pulumi.StringArrayOutput)
   671  }
   672  
   673  // JSON string of configuration information. For more details see [Setting Crawler Configuration Options](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html).
   674  func (o CrawlerOutput) Configuration() pulumi.StringPtrOutput {
   675  	return o.ApplyT(func(v *Crawler) pulumi.StringPtrOutput { return v.Configuration }).(pulumi.StringPtrOutput)
   676  }
   677  
   678  // Glue database where results are written.
   679  func (o CrawlerOutput) DatabaseName() pulumi.StringOutput {
   680  	return o.ApplyT(func(v *Crawler) pulumi.StringOutput { return v.DatabaseName }).(pulumi.StringOutput)
   681  }
   682  
   683  // List of nested Delta Lake target arguments. See Delta Target below.
   684  func (o CrawlerOutput) DeltaTargets() CrawlerDeltaTargetArrayOutput {
   685  	return o.ApplyT(func(v *Crawler) CrawlerDeltaTargetArrayOutput { return v.DeltaTargets }).(CrawlerDeltaTargetArrayOutput)
   686  }
   687  
   688  // Description of the crawler.
   689  func (o CrawlerOutput) Description() pulumi.StringPtrOutput {
   690  	return o.ApplyT(func(v *Crawler) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
   691  }
   692  
   693  // List of nested DynamoDB target arguments. See Dynamodb Target below.
   694  func (o CrawlerOutput) DynamodbTargets() CrawlerDynamodbTargetArrayOutput {
   695  	return o.ApplyT(func(v *Crawler) CrawlerDynamodbTargetArrayOutput { return v.DynamodbTargets }).(CrawlerDynamodbTargetArrayOutput)
   696  }
   697  
   698  // List of nested Hudi target arguments. See Iceberg Target below.
   699  func (o CrawlerOutput) HudiTargets() CrawlerHudiTargetArrayOutput {
   700  	return o.ApplyT(func(v *Crawler) CrawlerHudiTargetArrayOutput { return v.HudiTargets }).(CrawlerHudiTargetArrayOutput)
   701  }
   702  
   703  // List of nested Iceberg target arguments. See Iceberg Target below.
   704  func (o CrawlerOutput) IcebergTargets() CrawlerIcebergTargetArrayOutput {
   705  	return o.ApplyT(func(v *Crawler) CrawlerIcebergTargetArrayOutput { return v.IcebergTargets }).(CrawlerIcebergTargetArrayOutput)
   706  }
   707  
   708  // List of nested JDBC target arguments. See JDBC Target below.
   709  func (o CrawlerOutput) JdbcTargets() CrawlerJdbcTargetArrayOutput {
   710  	return o.ApplyT(func(v *Crawler) CrawlerJdbcTargetArrayOutput { return v.JdbcTargets }).(CrawlerJdbcTargetArrayOutput)
   711  }
   712  
   713  // Specifies Lake Formation configuration settings for the crawler. See Lake Formation Configuration below.
   714  func (o CrawlerOutput) LakeFormationConfiguration() CrawlerLakeFormationConfigurationPtrOutput {
   715  	return o.ApplyT(func(v *Crawler) CrawlerLakeFormationConfigurationPtrOutput { return v.LakeFormationConfiguration }).(CrawlerLakeFormationConfigurationPtrOutput)
   716  }
   717  
   718  // Specifies data lineage configuration settings for the crawler. See Lineage Configuration below.
   719  func (o CrawlerOutput) LineageConfiguration() CrawlerLineageConfigurationPtrOutput {
   720  	return o.ApplyT(func(v *Crawler) CrawlerLineageConfigurationPtrOutput { return v.LineageConfiguration }).(CrawlerLineageConfigurationPtrOutput)
   721  }
   722  
   723  // List of nested MongoDB target arguments. See MongoDB Target below.
   724  func (o CrawlerOutput) MongodbTargets() CrawlerMongodbTargetArrayOutput {
   725  	return o.ApplyT(func(v *Crawler) CrawlerMongodbTargetArrayOutput { return v.MongodbTargets }).(CrawlerMongodbTargetArrayOutput)
   726  }
   727  
   728  // Name of the crawler.
   729  func (o CrawlerOutput) Name() pulumi.StringOutput {
   730  	return o.ApplyT(func(v *Crawler) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   731  }
   732  
   733  // A policy that specifies whether to crawl the entire dataset again, or to crawl only folders that were added since the last crawler run.. See Recrawl Policy below.
   734  func (o CrawlerOutput) RecrawlPolicy() CrawlerRecrawlPolicyPtrOutput {
   735  	return o.ApplyT(func(v *Crawler) CrawlerRecrawlPolicyPtrOutput { return v.RecrawlPolicy }).(CrawlerRecrawlPolicyPtrOutput)
   736  }
   737  
   738  // The IAM role friendly name (including path without leading slash), or ARN of an IAM role, used by the crawler to access other resources.
   739  func (o CrawlerOutput) Role() pulumi.StringOutput {
   740  	return o.ApplyT(func(v *Crawler) pulumi.StringOutput { return v.Role }).(pulumi.StringOutput)
   741  }
   742  
   743  // List of nested Amazon S3 target arguments. See S3 Target below.
   744  func (o CrawlerOutput) S3Targets() CrawlerS3TargetArrayOutput {
   745  	return o.ApplyT(func(v *Crawler) CrawlerS3TargetArrayOutput { return v.S3Targets }).(CrawlerS3TargetArrayOutput)
   746  }
   747  
   748  // A cron expression used to specify the schedule. For more information, see [Time-Based Schedules for Jobs and Crawlers](https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html). For example, to run something every day at 12:15 UTC, you would specify: `cron(15 12 * * ? *)`.
   749  func (o CrawlerOutput) Schedule() pulumi.StringPtrOutput {
   750  	return o.ApplyT(func(v *Crawler) pulumi.StringPtrOutput { return v.Schedule }).(pulumi.StringPtrOutput)
   751  }
   752  
   753  // Policy for the crawler's update and deletion behavior. See Schema Change Policy below.
   754  func (o CrawlerOutput) SchemaChangePolicy() CrawlerSchemaChangePolicyPtrOutput {
   755  	return o.ApplyT(func(v *Crawler) CrawlerSchemaChangePolicyPtrOutput { return v.SchemaChangePolicy }).(CrawlerSchemaChangePolicyPtrOutput)
   756  }
   757  
   758  // The name of Security Configuration to be used by the crawler
   759  func (o CrawlerOutput) SecurityConfiguration() pulumi.StringPtrOutput {
   760  	return o.ApplyT(func(v *Crawler) pulumi.StringPtrOutput { return v.SecurityConfiguration }).(pulumi.StringPtrOutput)
   761  }
   762  
   763  // The table prefix used for catalog tables that are created.
   764  func (o CrawlerOutput) TablePrefix() pulumi.StringPtrOutput {
   765  	return o.ApplyT(func(v *Crawler) pulumi.StringPtrOutput { return v.TablePrefix }).(pulumi.StringPtrOutput)
   766  }
   767  
   768  // Key-value map of resource tags. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   769  func (o CrawlerOutput) Tags() pulumi.StringMapOutput {
   770  	return o.ApplyT(func(v *Crawler) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   771  }
   772  
   773  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   774  //
   775  // Deprecated: Please use `tags` instead.
   776  func (o CrawlerOutput) TagsAll() pulumi.StringMapOutput {
   777  	return o.ApplyT(func(v *Crawler) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   778  }
   779  
   780  type CrawlerArrayOutput struct{ *pulumi.OutputState }
   781  
   782  func (CrawlerArrayOutput) ElementType() reflect.Type {
   783  	return reflect.TypeOf((*[]*Crawler)(nil)).Elem()
   784  }
   785  
   786  func (o CrawlerArrayOutput) ToCrawlerArrayOutput() CrawlerArrayOutput {
   787  	return o
   788  }
   789  
   790  func (o CrawlerArrayOutput) ToCrawlerArrayOutputWithContext(ctx context.Context) CrawlerArrayOutput {
   791  	return o
   792  }
   793  
   794  func (o CrawlerArrayOutput) Index(i pulumi.IntInput) CrawlerOutput {
   795  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Crawler {
   796  		return vs[0].([]*Crawler)[vs[1].(int)]
   797  	}).(CrawlerOutput)
   798  }
   799  
   800  type CrawlerMapOutput struct{ *pulumi.OutputState }
   801  
   802  func (CrawlerMapOutput) ElementType() reflect.Type {
   803  	return reflect.TypeOf((*map[string]*Crawler)(nil)).Elem()
   804  }
   805  
   806  func (o CrawlerMapOutput) ToCrawlerMapOutput() CrawlerMapOutput {
   807  	return o
   808  }
   809  
   810  func (o CrawlerMapOutput) ToCrawlerMapOutputWithContext(ctx context.Context) CrawlerMapOutput {
   811  	return o
   812  }
   813  
   814  func (o CrawlerMapOutput) MapIndex(k pulumi.StringInput) CrawlerOutput {
   815  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Crawler {
   816  		return vs[0].(map[string]*Crawler)[vs[1].(string)]
   817  	}).(CrawlerOutput)
   818  }
   819  
   820  func init() {
   821  	pulumi.RegisterInputType(reflect.TypeOf((*CrawlerInput)(nil)).Elem(), &Crawler{})
   822  	pulumi.RegisterInputType(reflect.TypeOf((*CrawlerArrayInput)(nil)).Elem(), CrawlerArray{})
   823  	pulumi.RegisterInputType(reflect.TypeOf((*CrawlerMapInput)(nil)).Elem(), CrawlerMap{})
   824  	pulumi.RegisterOutputType(CrawlerOutput{})
   825  	pulumi.RegisterOutputType(CrawlerArrayOutput{})
   826  	pulumi.RegisterOutputType(CrawlerMapOutput{})
   827  }