github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/appsync/dataSource.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 appsync
     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  // Provides an AppSync Data Source.
    16  //
    17  // ## Example Usage
    18  //
    19  // <!--Start PulumiCodeChooser -->
    20  // ```go
    21  // package main
    22  //
    23  // import (
    24  //
    25  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/appsync"
    26  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/dynamodb"
    27  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
    28  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    29  //
    30  // )
    31  //
    32  //	func main() {
    33  //		pulumi.Run(func(ctx *pulumi.Context) error {
    34  //			exampleTable, err := dynamodb.NewTable(ctx, "example", &dynamodb.TableArgs{
    35  //				Name:          pulumi.String("example"),
    36  //				ReadCapacity:  pulumi.Int(1),
    37  //				WriteCapacity: pulumi.Int(1),
    38  //				HashKey:       pulumi.String("UserId"),
    39  //				Attributes: dynamodb.TableAttributeArray{
    40  //					&dynamodb.TableAttributeArgs{
    41  //						Name: pulumi.String("UserId"),
    42  //						Type: pulumi.String("S"),
    43  //					},
    44  //				},
    45  //			})
    46  //			if err != nil {
    47  //				return err
    48  //			}
    49  //			assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
    50  //				Statements: []iam.GetPolicyDocumentStatement{
    51  //					{
    52  //						Effect: pulumi.StringRef("Allow"),
    53  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
    54  //							{
    55  //								Type: "Service",
    56  //								Identifiers: []string{
    57  //									"appsync.amazonaws.com",
    58  //								},
    59  //							},
    60  //						},
    61  //						Actions: []string{
    62  //							"sts:AssumeRole",
    63  //						},
    64  //					},
    65  //				},
    66  //			}, nil)
    67  //			if err != nil {
    68  //				return err
    69  //			}
    70  //			exampleRole, err := iam.NewRole(ctx, "example", &iam.RoleArgs{
    71  //				Name:             pulumi.String("example"),
    72  //				AssumeRolePolicy: pulumi.String(assumeRole.Json),
    73  //			})
    74  //			if err != nil {
    75  //				return err
    76  //			}
    77  //			example := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{
    78  //				Statements: iam.GetPolicyDocumentStatementArray{
    79  //					&iam.GetPolicyDocumentStatementArgs{
    80  //						Effect: pulumi.String("Allow"),
    81  //						Actions: pulumi.StringArray{
    82  //							pulumi.String("dynamodb:*"),
    83  //						},
    84  //						Resources: pulumi.StringArray{
    85  //							exampleTable.Arn,
    86  //						},
    87  //					},
    88  //				},
    89  //			}, nil)
    90  //			_, err = iam.NewRolePolicy(ctx, "example", &iam.RolePolicyArgs{
    91  //				Name: pulumi.String("example"),
    92  //				Role: exampleRole.ID(),
    93  //				Policy: example.ApplyT(func(example iam.GetPolicyDocumentResult) (*string, error) {
    94  //					return &example.Json, nil
    95  //				}).(pulumi.StringPtrOutput),
    96  //			})
    97  //			if err != nil {
    98  //				return err
    99  //			}
   100  //			exampleGraphQLApi, err := appsync.NewGraphQLApi(ctx, "example", &appsync.GraphQLApiArgs{
   101  //				AuthenticationType: pulumi.String("API_KEY"),
   102  //				Name:               pulumi.String("my_appsync_example"),
   103  //			})
   104  //			if err != nil {
   105  //				return err
   106  //			}
   107  //			_, err = appsync.NewDataSource(ctx, "example", &appsync.DataSourceArgs{
   108  //				ApiId:          exampleGraphQLApi.ID(),
   109  //				Name:           pulumi.String("my_appsync_example"),
   110  //				ServiceRoleArn: exampleRole.Arn,
   111  //				Type:           pulumi.String("AMAZON_DYNAMODB"),
   112  //				DynamodbConfig: &appsync.DataSourceDynamodbConfigArgs{
   113  //					TableName: exampleTable.Name,
   114  //				},
   115  //			})
   116  //			if err != nil {
   117  //				return err
   118  //			}
   119  //			return nil
   120  //		})
   121  //	}
   122  //
   123  // ```
   124  // <!--End PulumiCodeChooser -->
   125  //
   126  // ## Import
   127  //
   128  // Using `pulumi import`, import `aws_appsync_datasource` using the `api_id`, a hyphen, and `name`. For example:
   129  //
   130  // ```sh
   131  // $ pulumi import aws:appsync/dataSource:DataSource example abcdef123456-example
   132  // ```
   133  type DataSource struct {
   134  	pulumi.CustomResourceState
   135  
   136  	// API ID for the GraphQL API for the data source.
   137  	ApiId pulumi.StringOutput `pulumi:"apiId"`
   138  	// ARN
   139  	Arn pulumi.StringOutput `pulumi:"arn"`
   140  	// Description of the data source.
   141  	Description pulumi.StringPtrOutput `pulumi:"description"`
   142  	// DynamoDB settings. See DynamoDB Config
   143  	DynamodbConfig DataSourceDynamodbConfigPtrOutput `pulumi:"dynamodbConfig"`
   144  	// Amazon Elasticsearch settings. See ElasticSearch Config
   145  	ElasticsearchConfig DataSourceElasticsearchConfigPtrOutput `pulumi:"elasticsearchConfig"`
   146  	// AWS EventBridge settings. See Event Bridge Config
   147  	EventBridgeConfig DataSourceEventBridgeConfigPtrOutput `pulumi:"eventBridgeConfig"`
   148  	// HTTP settings. See HTTP Config
   149  	HttpConfig DataSourceHttpConfigPtrOutput `pulumi:"httpConfig"`
   150  	// AWS Lambda settings. See Lambda Config
   151  	LambdaConfig DataSourceLambdaConfigPtrOutput `pulumi:"lambdaConfig"`
   152  	// User-supplied name for the data source.
   153  	Name pulumi.StringOutput `pulumi:"name"`
   154  	// Amazon OpenSearch Service settings. See OpenSearch Service Config
   155  	OpensearchserviceConfig DataSourceOpensearchserviceConfigPtrOutput `pulumi:"opensearchserviceConfig"`
   156  	// AWS RDS settings. See Relational Database Config
   157  	RelationalDatabaseConfig DataSourceRelationalDatabaseConfigPtrOutput `pulumi:"relationalDatabaseConfig"`
   158  	// IAM service role ARN for the data source. Required if `type` is specified as `AWS_LAMBDA`, `AMAZON_DYNAMODB`, `AMAZON_ELASTICSEARCH`, `AMAZON_EVENTBRIDGE`, or `AMAZON_OPENSEARCH_SERVICE`.
   159  	ServiceRoleArn pulumi.StringPtrOutput `pulumi:"serviceRoleArn"`
   160  	// Type of the Data Source. Valid values: `AWS_LAMBDA`, `AMAZON_DYNAMODB`, `AMAZON_ELASTICSEARCH`, `HTTP`, `NONE`, `RELATIONAL_DATABASE`, `AMAZON_EVENTBRIDGE`, `AMAZON_OPENSEARCH_SERVICE`.
   161  	Type pulumi.StringOutput `pulumi:"type"`
   162  }
   163  
   164  // NewDataSource registers a new resource with the given unique name, arguments, and options.
   165  func NewDataSource(ctx *pulumi.Context,
   166  	name string, args *DataSourceArgs, opts ...pulumi.ResourceOption) (*DataSource, error) {
   167  	if args == nil {
   168  		return nil, errors.New("missing one or more required arguments")
   169  	}
   170  
   171  	if args.ApiId == nil {
   172  		return nil, errors.New("invalid value for required argument 'ApiId'")
   173  	}
   174  	if args.Type == nil {
   175  		return nil, errors.New("invalid value for required argument 'Type'")
   176  	}
   177  	opts = internal.PkgResourceDefaultOpts(opts)
   178  	var resource DataSource
   179  	err := ctx.RegisterResource("aws:appsync/dataSource:DataSource", name, args, &resource, opts...)
   180  	if err != nil {
   181  		return nil, err
   182  	}
   183  	return &resource, nil
   184  }
   185  
   186  // GetDataSource gets an existing DataSource resource's state with the given name, ID, and optional
   187  // state properties that are used to uniquely qualify the lookup (nil if not required).
   188  func GetDataSource(ctx *pulumi.Context,
   189  	name string, id pulumi.IDInput, state *DataSourceState, opts ...pulumi.ResourceOption) (*DataSource, error) {
   190  	var resource DataSource
   191  	err := ctx.ReadResource("aws:appsync/dataSource:DataSource", name, id, state, &resource, opts...)
   192  	if err != nil {
   193  		return nil, err
   194  	}
   195  	return &resource, nil
   196  }
   197  
   198  // Input properties used for looking up and filtering DataSource resources.
   199  type dataSourceState struct {
   200  	// API ID for the GraphQL API for the data source.
   201  	ApiId *string `pulumi:"apiId"`
   202  	// ARN
   203  	Arn *string `pulumi:"arn"`
   204  	// Description of the data source.
   205  	Description *string `pulumi:"description"`
   206  	// DynamoDB settings. See DynamoDB Config
   207  	DynamodbConfig *DataSourceDynamodbConfig `pulumi:"dynamodbConfig"`
   208  	// Amazon Elasticsearch settings. See ElasticSearch Config
   209  	ElasticsearchConfig *DataSourceElasticsearchConfig `pulumi:"elasticsearchConfig"`
   210  	// AWS EventBridge settings. See Event Bridge Config
   211  	EventBridgeConfig *DataSourceEventBridgeConfig `pulumi:"eventBridgeConfig"`
   212  	// HTTP settings. See HTTP Config
   213  	HttpConfig *DataSourceHttpConfig `pulumi:"httpConfig"`
   214  	// AWS Lambda settings. See Lambda Config
   215  	LambdaConfig *DataSourceLambdaConfig `pulumi:"lambdaConfig"`
   216  	// User-supplied name for the data source.
   217  	Name *string `pulumi:"name"`
   218  	// Amazon OpenSearch Service settings. See OpenSearch Service Config
   219  	OpensearchserviceConfig *DataSourceOpensearchserviceConfig `pulumi:"opensearchserviceConfig"`
   220  	// AWS RDS settings. See Relational Database Config
   221  	RelationalDatabaseConfig *DataSourceRelationalDatabaseConfig `pulumi:"relationalDatabaseConfig"`
   222  	// IAM service role ARN for the data source. Required if `type` is specified as `AWS_LAMBDA`, `AMAZON_DYNAMODB`, `AMAZON_ELASTICSEARCH`, `AMAZON_EVENTBRIDGE`, or `AMAZON_OPENSEARCH_SERVICE`.
   223  	ServiceRoleArn *string `pulumi:"serviceRoleArn"`
   224  	// Type of the Data Source. Valid values: `AWS_LAMBDA`, `AMAZON_DYNAMODB`, `AMAZON_ELASTICSEARCH`, `HTTP`, `NONE`, `RELATIONAL_DATABASE`, `AMAZON_EVENTBRIDGE`, `AMAZON_OPENSEARCH_SERVICE`.
   225  	Type *string `pulumi:"type"`
   226  }
   227  
   228  type DataSourceState struct {
   229  	// API ID for the GraphQL API for the data source.
   230  	ApiId pulumi.StringPtrInput
   231  	// ARN
   232  	Arn pulumi.StringPtrInput
   233  	// Description of the data source.
   234  	Description pulumi.StringPtrInput
   235  	// DynamoDB settings. See DynamoDB Config
   236  	DynamodbConfig DataSourceDynamodbConfigPtrInput
   237  	// Amazon Elasticsearch settings. See ElasticSearch Config
   238  	ElasticsearchConfig DataSourceElasticsearchConfigPtrInput
   239  	// AWS EventBridge settings. See Event Bridge Config
   240  	EventBridgeConfig DataSourceEventBridgeConfigPtrInput
   241  	// HTTP settings. See HTTP Config
   242  	HttpConfig DataSourceHttpConfigPtrInput
   243  	// AWS Lambda settings. See Lambda Config
   244  	LambdaConfig DataSourceLambdaConfigPtrInput
   245  	// User-supplied name for the data source.
   246  	Name pulumi.StringPtrInput
   247  	// Amazon OpenSearch Service settings. See OpenSearch Service Config
   248  	OpensearchserviceConfig DataSourceOpensearchserviceConfigPtrInput
   249  	// AWS RDS settings. See Relational Database Config
   250  	RelationalDatabaseConfig DataSourceRelationalDatabaseConfigPtrInput
   251  	// IAM service role ARN for the data source. Required if `type` is specified as `AWS_LAMBDA`, `AMAZON_DYNAMODB`, `AMAZON_ELASTICSEARCH`, `AMAZON_EVENTBRIDGE`, or `AMAZON_OPENSEARCH_SERVICE`.
   252  	ServiceRoleArn pulumi.StringPtrInput
   253  	// Type of the Data Source. Valid values: `AWS_LAMBDA`, `AMAZON_DYNAMODB`, `AMAZON_ELASTICSEARCH`, `HTTP`, `NONE`, `RELATIONAL_DATABASE`, `AMAZON_EVENTBRIDGE`, `AMAZON_OPENSEARCH_SERVICE`.
   254  	Type pulumi.StringPtrInput
   255  }
   256  
   257  func (DataSourceState) ElementType() reflect.Type {
   258  	return reflect.TypeOf((*dataSourceState)(nil)).Elem()
   259  }
   260  
   261  type dataSourceArgs struct {
   262  	// API ID for the GraphQL API for the data source.
   263  	ApiId string `pulumi:"apiId"`
   264  	// Description of the data source.
   265  	Description *string `pulumi:"description"`
   266  	// DynamoDB settings. See DynamoDB Config
   267  	DynamodbConfig *DataSourceDynamodbConfig `pulumi:"dynamodbConfig"`
   268  	// Amazon Elasticsearch settings. See ElasticSearch Config
   269  	ElasticsearchConfig *DataSourceElasticsearchConfig `pulumi:"elasticsearchConfig"`
   270  	// AWS EventBridge settings. See Event Bridge Config
   271  	EventBridgeConfig *DataSourceEventBridgeConfig `pulumi:"eventBridgeConfig"`
   272  	// HTTP settings. See HTTP Config
   273  	HttpConfig *DataSourceHttpConfig `pulumi:"httpConfig"`
   274  	// AWS Lambda settings. See Lambda Config
   275  	LambdaConfig *DataSourceLambdaConfig `pulumi:"lambdaConfig"`
   276  	// User-supplied name for the data source.
   277  	Name *string `pulumi:"name"`
   278  	// Amazon OpenSearch Service settings. See OpenSearch Service Config
   279  	OpensearchserviceConfig *DataSourceOpensearchserviceConfig `pulumi:"opensearchserviceConfig"`
   280  	// AWS RDS settings. See Relational Database Config
   281  	RelationalDatabaseConfig *DataSourceRelationalDatabaseConfig `pulumi:"relationalDatabaseConfig"`
   282  	// IAM service role ARN for the data source. Required if `type` is specified as `AWS_LAMBDA`, `AMAZON_DYNAMODB`, `AMAZON_ELASTICSEARCH`, `AMAZON_EVENTBRIDGE`, or `AMAZON_OPENSEARCH_SERVICE`.
   283  	ServiceRoleArn *string `pulumi:"serviceRoleArn"`
   284  	// Type of the Data Source. Valid values: `AWS_LAMBDA`, `AMAZON_DYNAMODB`, `AMAZON_ELASTICSEARCH`, `HTTP`, `NONE`, `RELATIONAL_DATABASE`, `AMAZON_EVENTBRIDGE`, `AMAZON_OPENSEARCH_SERVICE`.
   285  	Type string `pulumi:"type"`
   286  }
   287  
   288  // The set of arguments for constructing a DataSource resource.
   289  type DataSourceArgs struct {
   290  	// API ID for the GraphQL API for the data source.
   291  	ApiId pulumi.StringInput
   292  	// Description of the data source.
   293  	Description pulumi.StringPtrInput
   294  	// DynamoDB settings. See DynamoDB Config
   295  	DynamodbConfig DataSourceDynamodbConfigPtrInput
   296  	// Amazon Elasticsearch settings. See ElasticSearch Config
   297  	ElasticsearchConfig DataSourceElasticsearchConfigPtrInput
   298  	// AWS EventBridge settings. See Event Bridge Config
   299  	EventBridgeConfig DataSourceEventBridgeConfigPtrInput
   300  	// HTTP settings. See HTTP Config
   301  	HttpConfig DataSourceHttpConfigPtrInput
   302  	// AWS Lambda settings. See Lambda Config
   303  	LambdaConfig DataSourceLambdaConfigPtrInput
   304  	// User-supplied name for the data source.
   305  	Name pulumi.StringPtrInput
   306  	// Amazon OpenSearch Service settings. See OpenSearch Service Config
   307  	OpensearchserviceConfig DataSourceOpensearchserviceConfigPtrInput
   308  	// AWS RDS settings. See Relational Database Config
   309  	RelationalDatabaseConfig DataSourceRelationalDatabaseConfigPtrInput
   310  	// IAM service role ARN for the data source. Required if `type` is specified as `AWS_LAMBDA`, `AMAZON_DYNAMODB`, `AMAZON_ELASTICSEARCH`, `AMAZON_EVENTBRIDGE`, or `AMAZON_OPENSEARCH_SERVICE`.
   311  	ServiceRoleArn pulumi.StringPtrInput
   312  	// Type of the Data Source. Valid values: `AWS_LAMBDA`, `AMAZON_DYNAMODB`, `AMAZON_ELASTICSEARCH`, `HTTP`, `NONE`, `RELATIONAL_DATABASE`, `AMAZON_EVENTBRIDGE`, `AMAZON_OPENSEARCH_SERVICE`.
   313  	Type pulumi.StringInput
   314  }
   315  
   316  func (DataSourceArgs) ElementType() reflect.Type {
   317  	return reflect.TypeOf((*dataSourceArgs)(nil)).Elem()
   318  }
   319  
   320  type DataSourceInput interface {
   321  	pulumi.Input
   322  
   323  	ToDataSourceOutput() DataSourceOutput
   324  	ToDataSourceOutputWithContext(ctx context.Context) DataSourceOutput
   325  }
   326  
   327  func (*DataSource) ElementType() reflect.Type {
   328  	return reflect.TypeOf((**DataSource)(nil)).Elem()
   329  }
   330  
   331  func (i *DataSource) ToDataSourceOutput() DataSourceOutput {
   332  	return i.ToDataSourceOutputWithContext(context.Background())
   333  }
   334  
   335  func (i *DataSource) ToDataSourceOutputWithContext(ctx context.Context) DataSourceOutput {
   336  	return pulumi.ToOutputWithContext(ctx, i).(DataSourceOutput)
   337  }
   338  
   339  // DataSourceArrayInput is an input type that accepts DataSourceArray and DataSourceArrayOutput values.
   340  // You can construct a concrete instance of `DataSourceArrayInput` via:
   341  //
   342  //	DataSourceArray{ DataSourceArgs{...} }
   343  type DataSourceArrayInput interface {
   344  	pulumi.Input
   345  
   346  	ToDataSourceArrayOutput() DataSourceArrayOutput
   347  	ToDataSourceArrayOutputWithContext(context.Context) DataSourceArrayOutput
   348  }
   349  
   350  type DataSourceArray []DataSourceInput
   351  
   352  func (DataSourceArray) ElementType() reflect.Type {
   353  	return reflect.TypeOf((*[]*DataSource)(nil)).Elem()
   354  }
   355  
   356  func (i DataSourceArray) ToDataSourceArrayOutput() DataSourceArrayOutput {
   357  	return i.ToDataSourceArrayOutputWithContext(context.Background())
   358  }
   359  
   360  func (i DataSourceArray) ToDataSourceArrayOutputWithContext(ctx context.Context) DataSourceArrayOutput {
   361  	return pulumi.ToOutputWithContext(ctx, i).(DataSourceArrayOutput)
   362  }
   363  
   364  // DataSourceMapInput is an input type that accepts DataSourceMap and DataSourceMapOutput values.
   365  // You can construct a concrete instance of `DataSourceMapInput` via:
   366  //
   367  //	DataSourceMap{ "key": DataSourceArgs{...} }
   368  type DataSourceMapInput interface {
   369  	pulumi.Input
   370  
   371  	ToDataSourceMapOutput() DataSourceMapOutput
   372  	ToDataSourceMapOutputWithContext(context.Context) DataSourceMapOutput
   373  }
   374  
   375  type DataSourceMap map[string]DataSourceInput
   376  
   377  func (DataSourceMap) ElementType() reflect.Type {
   378  	return reflect.TypeOf((*map[string]*DataSource)(nil)).Elem()
   379  }
   380  
   381  func (i DataSourceMap) ToDataSourceMapOutput() DataSourceMapOutput {
   382  	return i.ToDataSourceMapOutputWithContext(context.Background())
   383  }
   384  
   385  func (i DataSourceMap) ToDataSourceMapOutputWithContext(ctx context.Context) DataSourceMapOutput {
   386  	return pulumi.ToOutputWithContext(ctx, i).(DataSourceMapOutput)
   387  }
   388  
   389  type DataSourceOutput struct{ *pulumi.OutputState }
   390  
   391  func (DataSourceOutput) ElementType() reflect.Type {
   392  	return reflect.TypeOf((**DataSource)(nil)).Elem()
   393  }
   394  
   395  func (o DataSourceOutput) ToDataSourceOutput() DataSourceOutput {
   396  	return o
   397  }
   398  
   399  func (o DataSourceOutput) ToDataSourceOutputWithContext(ctx context.Context) DataSourceOutput {
   400  	return o
   401  }
   402  
   403  // API ID for the GraphQL API for the data source.
   404  func (o DataSourceOutput) ApiId() pulumi.StringOutput {
   405  	return o.ApplyT(func(v *DataSource) pulumi.StringOutput { return v.ApiId }).(pulumi.StringOutput)
   406  }
   407  
   408  // ARN
   409  func (o DataSourceOutput) Arn() pulumi.StringOutput {
   410  	return o.ApplyT(func(v *DataSource) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   411  }
   412  
   413  // Description of the data source.
   414  func (o DataSourceOutput) Description() pulumi.StringPtrOutput {
   415  	return o.ApplyT(func(v *DataSource) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
   416  }
   417  
   418  // DynamoDB settings. See DynamoDB Config
   419  func (o DataSourceOutput) DynamodbConfig() DataSourceDynamodbConfigPtrOutput {
   420  	return o.ApplyT(func(v *DataSource) DataSourceDynamodbConfigPtrOutput { return v.DynamodbConfig }).(DataSourceDynamodbConfigPtrOutput)
   421  }
   422  
   423  // Amazon Elasticsearch settings. See ElasticSearch Config
   424  func (o DataSourceOutput) ElasticsearchConfig() DataSourceElasticsearchConfigPtrOutput {
   425  	return o.ApplyT(func(v *DataSource) DataSourceElasticsearchConfigPtrOutput { return v.ElasticsearchConfig }).(DataSourceElasticsearchConfigPtrOutput)
   426  }
   427  
   428  // AWS EventBridge settings. See Event Bridge Config
   429  func (o DataSourceOutput) EventBridgeConfig() DataSourceEventBridgeConfigPtrOutput {
   430  	return o.ApplyT(func(v *DataSource) DataSourceEventBridgeConfigPtrOutput { return v.EventBridgeConfig }).(DataSourceEventBridgeConfigPtrOutput)
   431  }
   432  
   433  // HTTP settings. See HTTP Config
   434  func (o DataSourceOutput) HttpConfig() DataSourceHttpConfigPtrOutput {
   435  	return o.ApplyT(func(v *DataSource) DataSourceHttpConfigPtrOutput { return v.HttpConfig }).(DataSourceHttpConfigPtrOutput)
   436  }
   437  
   438  // AWS Lambda settings. See Lambda Config
   439  func (o DataSourceOutput) LambdaConfig() DataSourceLambdaConfigPtrOutput {
   440  	return o.ApplyT(func(v *DataSource) DataSourceLambdaConfigPtrOutput { return v.LambdaConfig }).(DataSourceLambdaConfigPtrOutput)
   441  }
   442  
   443  // User-supplied name for the data source.
   444  func (o DataSourceOutput) Name() pulumi.StringOutput {
   445  	return o.ApplyT(func(v *DataSource) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   446  }
   447  
   448  // Amazon OpenSearch Service settings. See OpenSearch Service Config
   449  func (o DataSourceOutput) OpensearchserviceConfig() DataSourceOpensearchserviceConfigPtrOutput {
   450  	return o.ApplyT(func(v *DataSource) DataSourceOpensearchserviceConfigPtrOutput { return v.OpensearchserviceConfig }).(DataSourceOpensearchserviceConfigPtrOutput)
   451  }
   452  
   453  // AWS RDS settings. See Relational Database Config
   454  func (o DataSourceOutput) RelationalDatabaseConfig() DataSourceRelationalDatabaseConfigPtrOutput {
   455  	return o.ApplyT(func(v *DataSource) DataSourceRelationalDatabaseConfigPtrOutput { return v.RelationalDatabaseConfig }).(DataSourceRelationalDatabaseConfigPtrOutput)
   456  }
   457  
   458  // IAM service role ARN for the data source. Required if `type` is specified as `AWS_LAMBDA`, `AMAZON_DYNAMODB`, `AMAZON_ELASTICSEARCH`, `AMAZON_EVENTBRIDGE`, or `AMAZON_OPENSEARCH_SERVICE`.
   459  func (o DataSourceOutput) ServiceRoleArn() pulumi.StringPtrOutput {
   460  	return o.ApplyT(func(v *DataSource) pulumi.StringPtrOutput { return v.ServiceRoleArn }).(pulumi.StringPtrOutput)
   461  }
   462  
   463  // Type of the Data Source. Valid values: `AWS_LAMBDA`, `AMAZON_DYNAMODB`, `AMAZON_ELASTICSEARCH`, `HTTP`, `NONE`, `RELATIONAL_DATABASE`, `AMAZON_EVENTBRIDGE`, `AMAZON_OPENSEARCH_SERVICE`.
   464  func (o DataSourceOutput) Type() pulumi.StringOutput {
   465  	return o.ApplyT(func(v *DataSource) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput)
   466  }
   467  
   468  type DataSourceArrayOutput struct{ *pulumi.OutputState }
   469  
   470  func (DataSourceArrayOutput) ElementType() reflect.Type {
   471  	return reflect.TypeOf((*[]*DataSource)(nil)).Elem()
   472  }
   473  
   474  func (o DataSourceArrayOutput) ToDataSourceArrayOutput() DataSourceArrayOutput {
   475  	return o
   476  }
   477  
   478  func (o DataSourceArrayOutput) ToDataSourceArrayOutputWithContext(ctx context.Context) DataSourceArrayOutput {
   479  	return o
   480  }
   481  
   482  func (o DataSourceArrayOutput) Index(i pulumi.IntInput) DataSourceOutput {
   483  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *DataSource {
   484  		return vs[0].([]*DataSource)[vs[1].(int)]
   485  	}).(DataSourceOutput)
   486  }
   487  
   488  type DataSourceMapOutput struct{ *pulumi.OutputState }
   489  
   490  func (DataSourceMapOutput) ElementType() reflect.Type {
   491  	return reflect.TypeOf((*map[string]*DataSource)(nil)).Elem()
   492  }
   493  
   494  func (o DataSourceMapOutput) ToDataSourceMapOutput() DataSourceMapOutput {
   495  	return o
   496  }
   497  
   498  func (o DataSourceMapOutput) ToDataSourceMapOutputWithContext(ctx context.Context) DataSourceMapOutput {
   499  	return o
   500  }
   501  
   502  func (o DataSourceMapOutput) MapIndex(k pulumi.StringInput) DataSourceOutput {
   503  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *DataSource {
   504  		return vs[0].(map[string]*DataSource)[vs[1].(string)]
   505  	}).(DataSourceOutput)
   506  }
   507  
   508  func init() {
   509  	pulumi.RegisterInputType(reflect.TypeOf((*DataSourceInput)(nil)).Elem(), &DataSource{})
   510  	pulumi.RegisterInputType(reflect.TypeOf((*DataSourceArrayInput)(nil)).Elem(), DataSourceArray{})
   511  	pulumi.RegisterInputType(reflect.TypeOf((*DataSourceMapInput)(nil)).Elem(), DataSourceMap{})
   512  	pulumi.RegisterOutputType(DataSourceOutput{})
   513  	pulumi.RegisterOutputType(DataSourceArrayOutput{})
   514  	pulumi.RegisterOutputType(DataSourceMapOutput{})
   515  }