github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/ssm/resourceDataSync.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 ssm
     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 a SSM resource data sync.
    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/iam"
    26  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3"
    27  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ssm"
    28  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    29  //
    30  // )
    31  //
    32  //	func main() {
    33  //		pulumi.Run(func(ctx *pulumi.Context) error {
    34  //			hogeBucketV2, err := s3.NewBucketV2(ctx, "hoge", &s3.BucketV2Args{
    35  //				Bucket: pulumi.String("tf-test-bucket-1234"),
    36  //			})
    37  //			if err != nil {
    38  //				return err
    39  //			}
    40  //			hoge, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
    41  //				Statements: []iam.GetPolicyDocumentStatement{
    42  //					{
    43  //						Sid:    pulumi.StringRef("SSMBucketPermissionsCheck"),
    44  //						Effect: pulumi.StringRef("Allow"),
    45  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
    46  //							{
    47  //								Type: "Service",
    48  //								Identifiers: []string{
    49  //									"ssm.amazonaws.com",
    50  //								},
    51  //							},
    52  //						},
    53  //						Actions: []string{
    54  //							"s3:GetBucketAcl",
    55  //						},
    56  //						Resources: []string{
    57  //							"arn:aws:s3:::tf-test-bucket-1234",
    58  //						},
    59  //					},
    60  //					{
    61  //						Sid:    pulumi.StringRef("SSMBucketDelivery"),
    62  //						Effect: pulumi.StringRef("Allow"),
    63  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
    64  //							{
    65  //								Type: "Service",
    66  //								Identifiers: []string{
    67  //									"ssm.amazonaws.com",
    68  //								},
    69  //							},
    70  //						},
    71  //						Actions: []string{
    72  //							"s3:PutObject",
    73  //						},
    74  //						Resources: []string{
    75  //							"arn:aws:s3:::tf-test-bucket-1234/*",
    76  //						},
    77  //						Conditions: []iam.GetPolicyDocumentStatementCondition{
    78  //							{
    79  //								Test:     "StringEquals",
    80  //								Variable: "s3:x-amz-acl",
    81  //								Values: []string{
    82  //									"bucket-owner-full-control",
    83  //								},
    84  //							},
    85  //						},
    86  //					},
    87  //				},
    88  //			}, nil)
    89  //			if err != nil {
    90  //				return err
    91  //			}
    92  //			_, err = s3.NewBucketPolicy(ctx, "hoge", &s3.BucketPolicyArgs{
    93  //				Bucket: hogeBucketV2.ID(),
    94  //				Policy: pulumi.String(hoge.Json),
    95  //			})
    96  //			if err != nil {
    97  //				return err
    98  //			}
    99  //			_, err = ssm.NewResourceDataSync(ctx, "foo", &ssm.ResourceDataSyncArgs{
   100  //				Name: pulumi.String("foo"),
   101  //				S3Destination: &ssm.ResourceDataSyncS3DestinationArgs{
   102  //					BucketName: hogeBucketV2.Bucket,
   103  //					Region:     hogeBucketV2.Region,
   104  //				},
   105  //			})
   106  //			if err != nil {
   107  //				return err
   108  //			}
   109  //			return nil
   110  //		})
   111  //	}
   112  //
   113  // ```
   114  // <!--End PulumiCodeChooser -->
   115  //
   116  // ## Import
   117  //
   118  // Using `pulumi import`, import SSM resource data sync using the `name`. For example:
   119  //
   120  // ```sh
   121  // $ pulumi import aws:ssm/resourceDataSync:ResourceDataSync example example-name
   122  // ```
   123  type ResourceDataSync struct {
   124  	pulumi.CustomResourceState
   125  
   126  	// Name for the configuration.
   127  	Name pulumi.StringOutput `pulumi:"name"`
   128  	// Amazon S3 configuration details for the sync.
   129  	S3Destination ResourceDataSyncS3DestinationOutput `pulumi:"s3Destination"`
   130  }
   131  
   132  // NewResourceDataSync registers a new resource with the given unique name, arguments, and options.
   133  func NewResourceDataSync(ctx *pulumi.Context,
   134  	name string, args *ResourceDataSyncArgs, opts ...pulumi.ResourceOption) (*ResourceDataSync, error) {
   135  	if args == nil {
   136  		return nil, errors.New("missing one or more required arguments")
   137  	}
   138  
   139  	if args.S3Destination == nil {
   140  		return nil, errors.New("invalid value for required argument 'S3Destination'")
   141  	}
   142  	opts = internal.PkgResourceDefaultOpts(opts)
   143  	var resource ResourceDataSync
   144  	err := ctx.RegisterResource("aws:ssm/resourceDataSync:ResourceDataSync", name, args, &resource, opts...)
   145  	if err != nil {
   146  		return nil, err
   147  	}
   148  	return &resource, nil
   149  }
   150  
   151  // GetResourceDataSync gets an existing ResourceDataSync resource's state with the given name, ID, and optional
   152  // state properties that are used to uniquely qualify the lookup (nil if not required).
   153  func GetResourceDataSync(ctx *pulumi.Context,
   154  	name string, id pulumi.IDInput, state *ResourceDataSyncState, opts ...pulumi.ResourceOption) (*ResourceDataSync, error) {
   155  	var resource ResourceDataSync
   156  	err := ctx.ReadResource("aws:ssm/resourceDataSync:ResourceDataSync", name, id, state, &resource, opts...)
   157  	if err != nil {
   158  		return nil, err
   159  	}
   160  	return &resource, nil
   161  }
   162  
   163  // Input properties used for looking up and filtering ResourceDataSync resources.
   164  type resourceDataSyncState struct {
   165  	// Name for the configuration.
   166  	Name *string `pulumi:"name"`
   167  	// Amazon S3 configuration details for the sync.
   168  	S3Destination *ResourceDataSyncS3Destination `pulumi:"s3Destination"`
   169  }
   170  
   171  type ResourceDataSyncState struct {
   172  	// Name for the configuration.
   173  	Name pulumi.StringPtrInput
   174  	// Amazon S3 configuration details for the sync.
   175  	S3Destination ResourceDataSyncS3DestinationPtrInput
   176  }
   177  
   178  func (ResourceDataSyncState) ElementType() reflect.Type {
   179  	return reflect.TypeOf((*resourceDataSyncState)(nil)).Elem()
   180  }
   181  
   182  type resourceDataSyncArgs struct {
   183  	// Name for the configuration.
   184  	Name *string `pulumi:"name"`
   185  	// Amazon S3 configuration details for the sync.
   186  	S3Destination ResourceDataSyncS3Destination `pulumi:"s3Destination"`
   187  }
   188  
   189  // The set of arguments for constructing a ResourceDataSync resource.
   190  type ResourceDataSyncArgs struct {
   191  	// Name for the configuration.
   192  	Name pulumi.StringPtrInput
   193  	// Amazon S3 configuration details for the sync.
   194  	S3Destination ResourceDataSyncS3DestinationInput
   195  }
   196  
   197  func (ResourceDataSyncArgs) ElementType() reflect.Type {
   198  	return reflect.TypeOf((*resourceDataSyncArgs)(nil)).Elem()
   199  }
   200  
   201  type ResourceDataSyncInput interface {
   202  	pulumi.Input
   203  
   204  	ToResourceDataSyncOutput() ResourceDataSyncOutput
   205  	ToResourceDataSyncOutputWithContext(ctx context.Context) ResourceDataSyncOutput
   206  }
   207  
   208  func (*ResourceDataSync) ElementType() reflect.Type {
   209  	return reflect.TypeOf((**ResourceDataSync)(nil)).Elem()
   210  }
   211  
   212  func (i *ResourceDataSync) ToResourceDataSyncOutput() ResourceDataSyncOutput {
   213  	return i.ToResourceDataSyncOutputWithContext(context.Background())
   214  }
   215  
   216  func (i *ResourceDataSync) ToResourceDataSyncOutputWithContext(ctx context.Context) ResourceDataSyncOutput {
   217  	return pulumi.ToOutputWithContext(ctx, i).(ResourceDataSyncOutput)
   218  }
   219  
   220  // ResourceDataSyncArrayInput is an input type that accepts ResourceDataSyncArray and ResourceDataSyncArrayOutput values.
   221  // You can construct a concrete instance of `ResourceDataSyncArrayInput` via:
   222  //
   223  //	ResourceDataSyncArray{ ResourceDataSyncArgs{...} }
   224  type ResourceDataSyncArrayInput interface {
   225  	pulumi.Input
   226  
   227  	ToResourceDataSyncArrayOutput() ResourceDataSyncArrayOutput
   228  	ToResourceDataSyncArrayOutputWithContext(context.Context) ResourceDataSyncArrayOutput
   229  }
   230  
   231  type ResourceDataSyncArray []ResourceDataSyncInput
   232  
   233  func (ResourceDataSyncArray) ElementType() reflect.Type {
   234  	return reflect.TypeOf((*[]*ResourceDataSync)(nil)).Elem()
   235  }
   236  
   237  func (i ResourceDataSyncArray) ToResourceDataSyncArrayOutput() ResourceDataSyncArrayOutput {
   238  	return i.ToResourceDataSyncArrayOutputWithContext(context.Background())
   239  }
   240  
   241  func (i ResourceDataSyncArray) ToResourceDataSyncArrayOutputWithContext(ctx context.Context) ResourceDataSyncArrayOutput {
   242  	return pulumi.ToOutputWithContext(ctx, i).(ResourceDataSyncArrayOutput)
   243  }
   244  
   245  // ResourceDataSyncMapInput is an input type that accepts ResourceDataSyncMap and ResourceDataSyncMapOutput values.
   246  // You can construct a concrete instance of `ResourceDataSyncMapInput` via:
   247  //
   248  //	ResourceDataSyncMap{ "key": ResourceDataSyncArgs{...} }
   249  type ResourceDataSyncMapInput interface {
   250  	pulumi.Input
   251  
   252  	ToResourceDataSyncMapOutput() ResourceDataSyncMapOutput
   253  	ToResourceDataSyncMapOutputWithContext(context.Context) ResourceDataSyncMapOutput
   254  }
   255  
   256  type ResourceDataSyncMap map[string]ResourceDataSyncInput
   257  
   258  func (ResourceDataSyncMap) ElementType() reflect.Type {
   259  	return reflect.TypeOf((*map[string]*ResourceDataSync)(nil)).Elem()
   260  }
   261  
   262  func (i ResourceDataSyncMap) ToResourceDataSyncMapOutput() ResourceDataSyncMapOutput {
   263  	return i.ToResourceDataSyncMapOutputWithContext(context.Background())
   264  }
   265  
   266  func (i ResourceDataSyncMap) ToResourceDataSyncMapOutputWithContext(ctx context.Context) ResourceDataSyncMapOutput {
   267  	return pulumi.ToOutputWithContext(ctx, i).(ResourceDataSyncMapOutput)
   268  }
   269  
   270  type ResourceDataSyncOutput struct{ *pulumi.OutputState }
   271  
   272  func (ResourceDataSyncOutput) ElementType() reflect.Type {
   273  	return reflect.TypeOf((**ResourceDataSync)(nil)).Elem()
   274  }
   275  
   276  func (o ResourceDataSyncOutput) ToResourceDataSyncOutput() ResourceDataSyncOutput {
   277  	return o
   278  }
   279  
   280  func (o ResourceDataSyncOutput) ToResourceDataSyncOutputWithContext(ctx context.Context) ResourceDataSyncOutput {
   281  	return o
   282  }
   283  
   284  // Name for the configuration.
   285  func (o ResourceDataSyncOutput) Name() pulumi.StringOutput {
   286  	return o.ApplyT(func(v *ResourceDataSync) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   287  }
   288  
   289  // Amazon S3 configuration details for the sync.
   290  func (o ResourceDataSyncOutput) S3Destination() ResourceDataSyncS3DestinationOutput {
   291  	return o.ApplyT(func(v *ResourceDataSync) ResourceDataSyncS3DestinationOutput { return v.S3Destination }).(ResourceDataSyncS3DestinationOutput)
   292  }
   293  
   294  type ResourceDataSyncArrayOutput struct{ *pulumi.OutputState }
   295  
   296  func (ResourceDataSyncArrayOutput) ElementType() reflect.Type {
   297  	return reflect.TypeOf((*[]*ResourceDataSync)(nil)).Elem()
   298  }
   299  
   300  func (o ResourceDataSyncArrayOutput) ToResourceDataSyncArrayOutput() ResourceDataSyncArrayOutput {
   301  	return o
   302  }
   303  
   304  func (o ResourceDataSyncArrayOutput) ToResourceDataSyncArrayOutputWithContext(ctx context.Context) ResourceDataSyncArrayOutput {
   305  	return o
   306  }
   307  
   308  func (o ResourceDataSyncArrayOutput) Index(i pulumi.IntInput) ResourceDataSyncOutput {
   309  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ResourceDataSync {
   310  		return vs[0].([]*ResourceDataSync)[vs[1].(int)]
   311  	}).(ResourceDataSyncOutput)
   312  }
   313  
   314  type ResourceDataSyncMapOutput struct{ *pulumi.OutputState }
   315  
   316  func (ResourceDataSyncMapOutput) ElementType() reflect.Type {
   317  	return reflect.TypeOf((*map[string]*ResourceDataSync)(nil)).Elem()
   318  }
   319  
   320  func (o ResourceDataSyncMapOutput) ToResourceDataSyncMapOutput() ResourceDataSyncMapOutput {
   321  	return o
   322  }
   323  
   324  func (o ResourceDataSyncMapOutput) ToResourceDataSyncMapOutputWithContext(ctx context.Context) ResourceDataSyncMapOutput {
   325  	return o
   326  }
   327  
   328  func (o ResourceDataSyncMapOutput) MapIndex(k pulumi.StringInput) ResourceDataSyncOutput {
   329  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ResourceDataSync {
   330  		return vs[0].(map[string]*ResourceDataSync)[vs[1].(string)]
   331  	}).(ResourceDataSyncOutput)
   332  }
   333  
   334  func init() {
   335  	pulumi.RegisterInputType(reflect.TypeOf((*ResourceDataSyncInput)(nil)).Elem(), &ResourceDataSync{})
   336  	pulumi.RegisterInputType(reflect.TypeOf((*ResourceDataSyncArrayInput)(nil)).Elem(), ResourceDataSyncArray{})
   337  	pulumi.RegisterInputType(reflect.TypeOf((*ResourceDataSyncMapInput)(nil)).Elem(), ResourceDataSyncMap{})
   338  	pulumi.RegisterOutputType(ResourceDataSyncOutput{})
   339  	pulumi.RegisterOutputType(ResourceDataSyncArrayOutput{})
   340  	pulumi.RegisterOutputType(ResourceDataSyncMapOutput{})
   341  }