aws.cfg.OrganizationManagedRule
Explore with Pulumi AI
Manages a Config Organization Managed Rule. More information about these rules can be found in the Enabling AWS Config Rules Across all Accounts in Your Organization and AWS Config Managed Rules documentation. For working with Organization Custom Rules (those invoking a custom Lambda Function), see the aws.cfg.OrganizationCustomRule
resource.
NOTE: This resource must be created in the Organization master account and rules will include the master account unless its ID is added to the
excluded_accounts
argument.
NOTE: Every Organization account except those configured in the
excluded_accounts
argument must have a Configuration Recorder with proper IAM permissions before the rule will successfully create or update. See also theaws.cfg.Recorder
resource.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.organizations.Organization("example", {
awsServiceAccessPrincipals: ["config-multiaccountsetup.amazonaws.com"],
featureSet: "ALL",
});
const exampleOrganizationManagedRule = new aws.cfg.OrganizationManagedRule("example", {
name: "example",
ruleIdentifier: "IAM_PASSWORD_POLICY",
}, {
dependsOn: [example],
});
import pulumi
import pulumi_aws as aws
example = aws.organizations.Organization("example",
aws_service_access_principals=["config-multiaccountsetup.amazonaws.com"],
feature_set="ALL")
example_organization_managed_rule = aws.cfg.OrganizationManagedRule("example",
name="example",
rule_identifier="IAM_PASSWORD_POLICY",
opts = pulumi.ResourceOptions(depends_on=[example]))
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cfg"
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/organizations"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
example, err := organizations.NewOrganization(ctx, "example", &organizations.OrganizationArgs{
AwsServiceAccessPrincipals: pulumi.StringArray{
pulumi.String("config-multiaccountsetup.amazonaws.com"),
},
FeatureSet: pulumi.String("ALL"),
})
if err != nil {
return err
}
_, err = cfg.NewOrganizationManagedRule(ctx, "example", &cfg.OrganizationManagedRuleArgs{
Name: pulumi.String("example"),
RuleIdentifier: pulumi.String("IAM_PASSWORD_POLICY"),
}, pulumi.DependsOn([]pulumi.Resource{
example,
}))
if err != nil {
return err
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.Organizations.Organization("example", new()
{
AwsServiceAccessPrincipals = new[]
{
"config-multiaccountsetup.amazonaws.com",
},
FeatureSet = "ALL",
});
var exampleOrganizationManagedRule = new Aws.Cfg.OrganizationManagedRule("example", new()
{
Name = "example",
RuleIdentifier = "IAM_PASSWORD_POLICY",
}, new CustomResourceOptions
{
DependsOn =
{
example,
},
});
});
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.organizations.Organization;
import com.pulumi.aws.organizations.OrganizationArgs;
import com.pulumi.aws.cfg.OrganizationManagedRule;
import com.pulumi.aws.cfg.OrganizationManagedRuleArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new Organization("example", OrganizationArgs.builder()
.awsServiceAccessPrincipals("config-multiaccountsetup.amazonaws.com")
.featureSet("ALL")
.build());
var exampleOrganizationManagedRule = new OrganizationManagedRule("exampleOrganizationManagedRule", OrganizationManagedRuleArgs.builder()
.name("example")
.ruleIdentifier("IAM_PASSWORD_POLICY")
.build(), CustomResourceOptions.builder()
.dependsOn(example)
.build());
}
}
resources:
example:
type: aws:organizations:Organization
properties:
awsServiceAccessPrincipals:
- config-multiaccountsetup.amazonaws.com
featureSet: ALL
exampleOrganizationManagedRule:
type: aws:cfg:OrganizationManagedRule
name: example
properties:
name: example
ruleIdentifier: IAM_PASSWORD_POLICY
options:
dependson:
- ${example}
Create OrganizationManagedRule Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new OrganizationManagedRule(name: string, args: OrganizationManagedRuleArgs, opts?: CustomResourceOptions);
@overload
def OrganizationManagedRule(resource_name: str,
args: OrganizationManagedRuleArgs,
opts: Optional[ResourceOptions] = None)
@overload
def OrganizationManagedRule(resource_name: str,
opts: Optional[ResourceOptions] = None,
rule_identifier: Optional[str] = None,
description: Optional[str] = None,
excluded_accounts: Optional[Sequence[str]] = None,
input_parameters: Optional[str] = None,
maximum_execution_frequency: Optional[str] = None,
name: Optional[str] = None,
resource_id_scope: Optional[str] = None,
resource_types_scopes: Optional[Sequence[str]] = None,
tag_key_scope: Optional[str] = None,
tag_value_scope: Optional[str] = None)
func NewOrganizationManagedRule(ctx *Context, name string, args OrganizationManagedRuleArgs, opts ...ResourceOption) (*OrganizationManagedRule, error)
public OrganizationManagedRule(string name, OrganizationManagedRuleArgs args, CustomResourceOptions? opts = null)
public OrganizationManagedRule(String name, OrganizationManagedRuleArgs args)
public OrganizationManagedRule(String name, OrganizationManagedRuleArgs args, CustomResourceOptions options)
type: aws:cfg:OrganizationManagedRule
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
Parameters
- name string
- The unique name of the resource.
- args OrganizationManagedRuleArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- resource_name str
- The unique name of the resource.
- args OrganizationManagedRuleArgs
- The arguments to resource properties.
- opts ResourceOptions
- Bag of options to control resource's behavior.
- ctx Context
- Context object for the current deployment.
- name string
- The unique name of the resource.
- args OrganizationManagedRuleArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args OrganizationManagedRuleArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args OrganizationManagedRuleArgs
- The arguments to resource properties.
- options CustomResourceOptions
- Bag of options to control resource's behavior.
Constructor example
The following reference example uses placeholder values for all input properties.
var organizationManagedRuleResource = new Aws.Cfg.OrganizationManagedRule("organizationManagedRuleResource", new()
{
RuleIdentifier = "string",
Description = "string",
ExcludedAccounts = new[]
{
"string",
},
InputParameters = "string",
MaximumExecutionFrequency = "string",
Name = "string",
ResourceIdScope = "string",
ResourceTypesScopes = new[]
{
"string",
},
TagKeyScope = "string",
TagValueScope = "string",
});
example, err := cfg.NewOrganizationManagedRule(ctx, "organizationManagedRuleResource", &cfg.OrganizationManagedRuleArgs{
RuleIdentifier: pulumi.String("string"),
Description: pulumi.String("string"),
ExcludedAccounts: pulumi.StringArray{
pulumi.String("string"),
},
InputParameters: pulumi.String("string"),
MaximumExecutionFrequency: pulumi.String("string"),
Name: pulumi.String("string"),
ResourceIdScope: pulumi.String("string"),
ResourceTypesScopes: pulumi.StringArray{
pulumi.String("string"),
},
TagKeyScope: pulumi.String("string"),
TagValueScope: pulumi.String("string"),
})
var organizationManagedRuleResource = new OrganizationManagedRule("organizationManagedRuleResource", OrganizationManagedRuleArgs.builder()
.ruleIdentifier("string")
.description("string")
.excludedAccounts("string")
.inputParameters("string")
.maximumExecutionFrequency("string")
.name("string")
.resourceIdScope("string")
.resourceTypesScopes("string")
.tagKeyScope("string")
.tagValueScope("string")
.build());
organization_managed_rule_resource = aws.cfg.OrganizationManagedRule("organizationManagedRuleResource",
rule_identifier="string",
description="string",
excluded_accounts=["string"],
input_parameters="string",
maximum_execution_frequency="string",
name="string",
resource_id_scope="string",
resource_types_scopes=["string"],
tag_key_scope="string",
tag_value_scope="string")
const organizationManagedRuleResource = new aws.cfg.OrganizationManagedRule("organizationManagedRuleResource", {
ruleIdentifier: "string",
description: "string",
excludedAccounts: ["string"],
inputParameters: "string",
maximumExecutionFrequency: "string",
name: "string",
resourceIdScope: "string",
resourceTypesScopes: ["string"],
tagKeyScope: "string",
tagValueScope: "string",
});
type: aws:cfg:OrganizationManagedRule
properties:
description: string
excludedAccounts:
- string
inputParameters: string
maximumExecutionFrequency: string
name: string
resourceIdScope: string
resourceTypesScopes:
- string
ruleIdentifier: string
tagKeyScope: string
tagValueScope: string
OrganizationManagedRule Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
The OrganizationManagedRule resource accepts the following input properties:
- Rule
Identifier string - Identifier of an available AWS Config Managed Rule to call. For available values, see the List of AWS Config Managed Rules documentation
- Description string
- Description of the rule
- Excluded
Accounts List<string> - List of AWS account identifiers to exclude from the rule
- Input
Parameters string - A string in JSON format that is passed to the AWS Config Rule Lambda Function
- Maximum
Execution stringFrequency - The maximum frequency with which AWS Config runs evaluations for a rule, if the rule is triggered at a periodic frequency. Defaults to
TwentyFour_Hours
for periodic frequency triggered rules. Valid values:One_Hour
,Three_Hours
,Six_Hours
,Twelve_Hours
, orTwentyFour_Hours
. - Name string
- The name of the rule
- Resource
Id stringScope - Identifier of the AWS resource to evaluate
- Resource
Types List<string>Scopes - List of types of AWS resources to evaluate
- Tag
Key stringScope - Tag key of AWS resources to evaluate
- Tag
Value stringScope - Tag value of AWS resources to evaluate
- Rule
Identifier string - Identifier of an available AWS Config Managed Rule to call. For available values, see the List of AWS Config Managed Rules documentation
- Description string
- Description of the rule
- Excluded
Accounts []string - List of AWS account identifiers to exclude from the rule
- Input
Parameters string - A string in JSON format that is passed to the AWS Config Rule Lambda Function
- Maximum
Execution stringFrequency - The maximum frequency with which AWS Config runs evaluations for a rule, if the rule is triggered at a periodic frequency. Defaults to
TwentyFour_Hours
for periodic frequency triggered rules. Valid values:One_Hour
,Three_Hours
,Six_Hours
,Twelve_Hours
, orTwentyFour_Hours
. - Name string
- The name of the rule
- Resource
Id stringScope - Identifier of the AWS resource to evaluate
- Resource
Types []stringScopes - List of types of AWS resources to evaluate
- Tag
Key stringScope - Tag key of AWS resources to evaluate
- Tag
Value stringScope - Tag value of AWS resources to evaluate
- rule
Identifier String - Identifier of an available AWS Config Managed Rule to call. For available values, see the List of AWS Config Managed Rules documentation
- description String
- Description of the rule
- excluded
Accounts List<String> - List of AWS account identifiers to exclude from the rule
- input
Parameters String - A string in JSON format that is passed to the AWS Config Rule Lambda Function
- maximum
Execution StringFrequency - The maximum frequency with which AWS Config runs evaluations for a rule, if the rule is triggered at a periodic frequency. Defaults to
TwentyFour_Hours
for periodic frequency triggered rules. Valid values:One_Hour
,Three_Hours
,Six_Hours
,Twelve_Hours
, orTwentyFour_Hours
. - name String
- The name of the rule
- resource
Id StringScope - Identifier of the AWS resource to evaluate
- resource
Types List<String>Scopes - List of types of AWS resources to evaluate
- tag
Key StringScope - Tag key of AWS resources to evaluate
- tag
Value StringScope - Tag value of AWS resources to evaluate
- rule
Identifier string - Identifier of an available AWS Config Managed Rule to call. For available values, see the List of AWS Config Managed Rules documentation
- description string
- Description of the rule
- excluded
Accounts string[] - List of AWS account identifiers to exclude from the rule
- input
Parameters string - A string in JSON format that is passed to the AWS Config Rule Lambda Function
- maximum
Execution stringFrequency - The maximum frequency with which AWS Config runs evaluations for a rule, if the rule is triggered at a periodic frequency. Defaults to
TwentyFour_Hours
for periodic frequency triggered rules. Valid values:One_Hour
,Three_Hours
,Six_Hours
,Twelve_Hours
, orTwentyFour_Hours
. - name string
- The name of the rule
- resource
Id stringScope - Identifier of the AWS resource to evaluate
- resource
Types string[]Scopes - List of types of AWS resources to evaluate
- tag
Key stringScope - Tag key of AWS resources to evaluate
- tag
Value stringScope - Tag value of AWS resources to evaluate
- rule_
identifier str - Identifier of an available AWS Config Managed Rule to call. For available values, see the List of AWS Config Managed Rules documentation
- description str
- Description of the rule
- excluded_
accounts Sequence[str] - List of AWS account identifiers to exclude from the rule
- input_
parameters str - A string in JSON format that is passed to the AWS Config Rule Lambda Function
- maximum_
execution_ strfrequency - The maximum frequency with which AWS Config runs evaluations for a rule, if the rule is triggered at a periodic frequency. Defaults to
TwentyFour_Hours
for periodic frequency triggered rules. Valid values:One_Hour
,Three_Hours
,Six_Hours
,Twelve_Hours
, orTwentyFour_Hours
. - name str
- The name of the rule
- resource_
id_ strscope - Identifier of the AWS resource to evaluate
- resource_
types_ Sequence[str]scopes - List of types of AWS resources to evaluate
- tag_
key_ strscope - Tag key of AWS resources to evaluate
- tag_
value_ strscope - Tag value of AWS resources to evaluate
- rule
Identifier String - Identifier of an available AWS Config Managed Rule to call. For available values, see the List of AWS Config Managed Rules documentation
- description String
- Description of the rule
- excluded
Accounts List<String> - List of AWS account identifiers to exclude from the rule
- input
Parameters String - A string in JSON format that is passed to the AWS Config Rule Lambda Function
- maximum
Execution StringFrequency - The maximum frequency with which AWS Config runs evaluations for a rule, if the rule is triggered at a periodic frequency. Defaults to
TwentyFour_Hours
for periodic frequency triggered rules. Valid values:One_Hour
,Three_Hours
,Six_Hours
,Twelve_Hours
, orTwentyFour_Hours
. - name String
- The name of the rule
- resource
Id StringScope - Identifier of the AWS resource to evaluate
- resource
Types List<String>Scopes - List of types of AWS resources to evaluate
- tag
Key StringScope - Tag key of AWS resources to evaluate
- tag
Value StringScope - Tag value of AWS resources to evaluate
Outputs
All input properties are implicitly available as output properties. Additionally, the OrganizationManagedRule resource produces the following output properties:
Look up Existing OrganizationManagedRule Resource
Get an existing OrganizationManagedRule resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.
public static get(name: string, id: Input<ID>, state?: OrganizationManagedRuleState, opts?: CustomResourceOptions): OrganizationManagedRule
@staticmethod
def get(resource_name: str,
id: str,
opts: Optional[ResourceOptions] = None,
arn: Optional[str] = None,
description: Optional[str] = None,
excluded_accounts: Optional[Sequence[str]] = None,
input_parameters: Optional[str] = None,
maximum_execution_frequency: Optional[str] = None,
name: Optional[str] = None,
resource_id_scope: Optional[str] = None,
resource_types_scopes: Optional[Sequence[str]] = None,
rule_identifier: Optional[str] = None,
tag_key_scope: Optional[str] = None,
tag_value_scope: Optional[str] = None) -> OrganizationManagedRule
func GetOrganizationManagedRule(ctx *Context, name string, id IDInput, state *OrganizationManagedRuleState, opts ...ResourceOption) (*OrganizationManagedRule, error)
public static OrganizationManagedRule Get(string name, Input<string> id, OrganizationManagedRuleState? state, CustomResourceOptions? opts = null)
public static OrganizationManagedRule get(String name, Output<String> id, OrganizationManagedRuleState state, CustomResourceOptions options)
Resource lookup is not supported in YAML
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- resource_name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- name
- The unique name of the resulting resource.
- id
- The unique provider ID of the resource to lookup.
- state
- Any extra arguments used during the lookup.
- opts
- A bag of options that control this resource's behavior.
- Arn string
- Amazon Resource Name (ARN) of the rule
- Description string
- Description of the rule
- Excluded
Accounts List<string> - List of AWS account identifiers to exclude from the rule
- Input
Parameters string - A string in JSON format that is passed to the AWS Config Rule Lambda Function
- Maximum
Execution stringFrequency - The maximum frequency with which AWS Config runs evaluations for a rule, if the rule is triggered at a periodic frequency. Defaults to
TwentyFour_Hours
for periodic frequency triggered rules. Valid values:One_Hour
,Three_Hours
,Six_Hours
,Twelve_Hours
, orTwentyFour_Hours
. - Name string
- The name of the rule
- Resource
Id stringScope - Identifier of the AWS resource to evaluate
- Resource
Types List<string>Scopes - List of types of AWS resources to evaluate
- Rule
Identifier string - Identifier of an available AWS Config Managed Rule to call. For available values, see the List of AWS Config Managed Rules documentation
- Tag
Key stringScope - Tag key of AWS resources to evaluate
- Tag
Value stringScope - Tag value of AWS resources to evaluate
- Arn string
- Amazon Resource Name (ARN) of the rule
- Description string
- Description of the rule
- Excluded
Accounts []string - List of AWS account identifiers to exclude from the rule
- Input
Parameters string - A string in JSON format that is passed to the AWS Config Rule Lambda Function
- Maximum
Execution stringFrequency - The maximum frequency with which AWS Config runs evaluations for a rule, if the rule is triggered at a periodic frequency. Defaults to
TwentyFour_Hours
for periodic frequency triggered rules. Valid values:One_Hour
,Three_Hours
,Six_Hours
,Twelve_Hours
, orTwentyFour_Hours
. - Name string
- The name of the rule
- Resource
Id stringScope - Identifier of the AWS resource to evaluate
- Resource
Types []stringScopes - List of types of AWS resources to evaluate
- Rule
Identifier string - Identifier of an available AWS Config Managed Rule to call. For available values, see the List of AWS Config Managed Rules documentation
- Tag
Key stringScope - Tag key of AWS resources to evaluate
- Tag
Value stringScope - Tag value of AWS resources to evaluate
- arn String
- Amazon Resource Name (ARN) of the rule
- description String
- Description of the rule
- excluded
Accounts List<String> - List of AWS account identifiers to exclude from the rule
- input
Parameters String - A string in JSON format that is passed to the AWS Config Rule Lambda Function
- maximum
Execution StringFrequency - The maximum frequency with which AWS Config runs evaluations for a rule, if the rule is triggered at a periodic frequency. Defaults to
TwentyFour_Hours
for periodic frequency triggered rules. Valid values:One_Hour
,Three_Hours
,Six_Hours
,Twelve_Hours
, orTwentyFour_Hours
. - name String
- The name of the rule
- resource
Id StringScope - Identifier of the AWS resource to evaluate
- resource
Types List<String>Scopes - List of types of AWS resources to evaluate
- rule
Identifier String - Identifier of an available AWS Config Managed Rule to call. For available values, see the List of AWS Config Managed Rules documentation
- tag
Key StringScope - Tag key of AWS resources to evaluate
- tag
Value StringScope - Tag value of AWS resources to evaluate
- arn string
- Amazon Resource Name (ARN) of the rule
- description string
- Description of the rule
- excluded
Accounts string[] - List of AWS account identifiers to exclude from the rule
- input
Parameters string - A string in JSON format that is passed to the AWS Config Rule Lambda Function
- maximum
Execution stringFrequency - The maximum frequency with which AWS Config runs evaluations for a rule, if the rule is triggered at a periodic frequency. Defaults to
TwentyFour_Hours
for periodic frequency triggered rules. Valid values:One_Hour
,Three_Hours
,Six_Hours
,Twelve_Hours
, orTwentyFour_Hours
. - name string
- The name of the rule
- resource
Id stringScope - Identifier of the AWS resource to evaluate
- resource
Types string[]Scopes - List of types of AWS resources to evaluate
- rule
Identifier string - Identifier of an available AWS Config Managed Rule to call. For available values, see the List of AWS Config Managed Rules documentation
- tag
Key stringScope - Tag key of AWS resources to evaluate
- tag
Value stringScope - Tag value of AWS resources to evaluate
- arn str
- Amazon Resource Name (ARN) of the rule
- description str
- Description of the rule
- excluded_
accounts Sequence[str] - List of AWS account identifiers to exclude from the rule
- input_
parameters str - A string in JSON format that is passed to the AWS Config Rule Lambda Function
- maximum_
execution_ strfrequency - The maximum frequency with which AWS Config runs evaluations for a rule, if the rule is triggered at a periodic frequency. Defaults to
TwentyFour_Hours
for periodic frequency triggered rules. Valid values:One_Hour
,Three_Hours
,Six_Hours
,Twelve_Hours
, orTwentyFour_Hours
. - name str
- The name of the rule
- resource_
id_ strscope - Identifier of the AWS resource to evaluate
- resource_
types_ Sequence[str]scopes - List of types of AWS resources to evaluate
- rule_
identifier str - Identifier of an available AWS Config Managed Rule to call. For available values, see the List of AWS Config Managed Rules documentation
- tag_
key_ strscope - Tag key of AWS resources to evaluate
- tag_
value_ strscope - Tag value of AWS resources to evaluate
- arn String
- Amazon Resource Name (ARN) of the rule
- description String
- Description of the rule
- excluded
Accounts List<String> - List of AWS account identifiers to exclude from the rule
- input
Parameters String - A string in JSON format that is passed to the AWS Config Rule Lambda Function
- maximum
Execution StringFrequency - The maximum frequency with which AWS Config runs evaluations for a rule, if the rule is triggered at a periodic frequency. Defaults to
TwentyFour_Hours
for periodic frequency triggered rules. Valid values:One_Hour
,Three_Hours
,Six_Hours
,Twelve_Hours
, orTwentyFour_Hours
. - name String
- The name of the rule
- resource
Id StringScope - Identifier of the AWS resource to evaluate
- resource
Types List<String>Scopes - List of types of AWS resources to evaluate
- rule
Identifier String - Identifier of an available AWS Config Managed Rule to call. For available values, see the List of AWS Config Managed Rules documentation
- tag
Key StringScope - Tag key of AWS resources to evaluate
- tag
Value StringScope - Tag value of AWS resources to evaluate
Import
Using pulumi import
, import Config Organization Managed Rules using the name. For example:
$ pulumi import aws:cfg/organizationManagedRule:OrganizationManagedRule example example
To learn more about importing existing cloud resources, see Importing resources.
Package Details
- Repository
- AWS Classic pulumi/pulumi-aws
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
aws
Terraform Provider.