github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/iam/getPolicy.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 iam
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    11  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    12  )
    13  
    14  // This data source can be used to fetch information about a specific
    15  // IAM policy.
    16  //
    17  // ## Example Usage
    18  //
    19  // ### By ARN
    20  //
    21  // <!--Start PulumiCodeChooser -->
    22  // ```go
    23  // package main
    24  //
    25  // import (
    26  //
    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  //			_, err := iam.LookupPolicy(ctx, &iam.LookupPolicyArgs{
    35  //				Arn: pulumi.StringRef("arn:aws:iam::123456789012:policy/UsersManageOwnCredentials"),
    36  //			}, nil)
    37  //			if err != nil {
    38  //				return err
    39  //			}
    40  //			return nil
    41  //		})
    42  //	}
    43  //
    44  // ```
    45  // <!--End PulumiCodeChooser -->
    46  //
    47  // ### By Name
    48  //
    49  // <!--Start PulumiCodeChooser -->
    50  // ```go
    51  // package main
    52  //
    53  // import (
    54  //
    55  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
    56  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    57  //
    58  // )
    59  //
    60  //	func main() {
    61  //		pulumi.Run(func(ctx *pulumi.Context) error {
    62  //			_, err := iam.LookupPolicy(ctx, &iam.LookupPolicyArgs{
    63  //				Name: pulumi.StringRef("test_policy"),
    64  //			}, nil)
    65  //			if err != nil {
    66  //				return err
    67  //			}
    68  //			return nil
    69  //		})
    70  //	}
    71  //
    72  // ```
    73  // <!--End PulumiCodeChooser -->
    74  func LookupPolicy(ctx *pulumi.Context, args *LookupPolicyArgs, opts ...pulumi.InvokeOption) (*LookupPolicyResult, error) {
    75  	opts = internal.PkgInvokeDefaultOpts(opts)
    76  	var rv LookupPolicyResult
    77  	err := ctx.Invoke("aws:iam/getPolicy:getPolicy", args, &rv, opts...)
    78  	if err != nil {
    79  		return nil, err
    80  	}
    81  	return &rv, nil
    82  }
    83  
    84  // A collection of arguments for invoking getPolicy.
    85  type LookupPolicyArgs struct {
    86  	// ARN of the IAM policy.
    87  	// Conflicts with `name` and `pathPrefix`.
    88  	Arn *string `pulumi:"arn"`
    89  	// Name of the IAM policy.
    90  	// Conflicts with `arn`.
    91  	Name *string `pulumi:"name"`
    92  	// Prefix of the path to the IAM policy.
    93  	// Defaults to a slash (`/`).
    94  	// Conflicts with `arn`.
    95  	PathPrefix *string `pulumi:"pathPrefix"`
    96  	// Key-value mapping of tags for the IAM Policy.
    97  	Tags map[string]string `pulumi:"tags"`
    98  }
    99  
   100  // A collection of values returned by getPolicy.
   101  type LookupPolicyResult struct {
   102  	// ARN of the policy.
   103  	Arn string `pulumi:"arn"`
   104  	// Number of entities (users, groups, and roles) that the policy is attached to.
   105  	AttachmentCount int `pulumi:"attachmentCount"`
   106  	// Description of the policy.
   107  	Description string `pulumi:"description"`
   108  	// The provider-assigned unique ID for this managed resource.
   109  	Id   string `pulumi:"id"`
   110  	Name string `pulumi:"name"`
   111  	// Path to the policy.
   112  	Path       string  `pulumi:"path"`
   113  	PathPrefix *string `pulumi:"pathPrefix"`
   114  	// Policy document of the policy.
   115  	Policy string `pulumi:"policy"`
   116  	// Policy's ID.
   117  	PolicyId string `pulumi:"policyId"`
   118  	// Key-value mapping of tags for the IAM Policy.
   119  	Tags map[string]string `pulumi:"tags"`
   120  }
   121  
   122  func LookupPolicyOutput(ctx *pulumi.Context, args LookupPolicyOutputArgs, opts ...pulumi.InvokeOption) LookupPolicyResultOutput {
   123  	return pulumi.ToOutputWithContext(context.Background(), args).
   124  		ApplyT(func(v interface{}) (LookupPolicyResult, error) {
   125  			args := v.(LookupPolicyArgs)
   126  			r, err := LookupPolicy(ctx, &args, opts...)
   127  			var s LookupPolicyResult
   128  			if r != nil {
   129  				s = *r
   130  			}
   131  			return s, err
   132  		}).(LookupPolicyResultOutput)
   133  }
   134  
   135  // A collection of arguments for invoking getPolicy.
   136  type LookupPolicyOutputArgs struct {
   137  	// ARN of the IAM policy.
   138  	// Conflicts with `name` and `pathPrefix`.
   139  	Arn pulumi.StringPtrInput `pulumi:"arn"`
   140  	// Name of the IAM policy.
   141  	// Conflicts with `arn`.
   142  	Name pulumi.StringPtrInput `pulumi:"name"`
   143  	// Prefix of the path to the IAM policy.
   144  	// Defaults to a slash (`/`).
   145  	// Conflicts with `arn`.
   146  	PathPrefix pulumi.StringPtrInput `pulumi:"pathPrefix"`
   147  	// Key-value mapping of tags for the IAM Policy.
   148  	Tags pulumi.StringMapInput `pulumi:"tags"`
   149  }
   150  
   151  func (LookupPolicyOutputArgs) ElementType() reflect.Type {
   152  	return reflect.TypeOf((*LookupPolicyArgs)(nil)).Elem()
   153  }
   154  
   155  // A collection of values returned by getPolicy.
   156  type LookupPolicyResultOutput struct{ *pulumi.OutputState }
   157  
   158  func (LookupPolicyResultOutput) ElementType() reflect.Type {
   159  	return reflect.TypeOf((*LookupPolicyResult)(nil)).Elem()
   160  }
   161  
   162  func (o LookupPolicyResultOutput) ToLookupPolicyResultOutput() LookupPolicyResultOutput {
   163  	return o
   164  }
   165  
   166  func (o LookupPolicyResultOutput) ToLookupPolicyResultOutputWithContext(ctx context.Context) LookupPolicyResultOutput {
   167  	return o
   168  }
   169  
   170  // ARN of the policy.
   171  func (o LookupPolicyResultOutput) Arn() pulumi.StringOutput {
   172  	return o.ApplyT(func(v LookupPolicyResult) string { return v.Arn }).(pulumi.StringOutput)
   173  }
   174  
   175  // Number of entities (users, groups, and roles) that the policy is attached to.
   176  func (o LookupPolicyResultOutput) AttachmentCount() pulumi.IntOutput {
   177  	return o.ApplyT(func(v LookupPolicyResult) int { return v.AttachmentCount }).(pulumi.IntOutput)
   178  }
   179  
   180  // Description of the policy.
   181  func (o LookupPolicyResultOutput) Description() pulumi.StringOutput {
   182  	return o.ApplyT(func(v LookupPolicyResult) string { return v.Description }).(pulumi.StringOutput)
   183  }
   184  
   185  // The provider-assigned unique ID for this managed resource.
   186  func (o LookupPolicyResultOutput) Id() pulumi.StringOutput {
   187  	return o.ApplyT(func(v LookupPolicyResult) string { return v.Id }).(pulumi.StringOutput)
   188  }
   189  
   190  func (o LookupPolicyResultOutput) Name() pulumi.StringOutput {
   191  	return o.ApplyT(func(v LookupPolicyResult) string { return v.Name }).(pulumi.StringOutput)
   192  }
   193  
   194  // Path to the policy.
   195  func (o LookupPolicyResultOutput) Path() pulumi.StringOutput {
   196  	return o.ApplyT(func(v LookupPolicyResult) string { return v.Path }).(pulumi.StringOutput)
   197  }
   198  
   199  func (o LookupPolicyResultOutput) PathPrefix() pulumi.StringPtrOutput {
   200  	return o.ApplyT(func(v LookupPolicyResult) *string { return v.PathPrefix }).(pulumi.StringPtrOutput)
   201  }
   202  
   203  // Policy document of the policy.
   204  func (o LookupPolicyResultOutput) Policy() pulumi.StringOutput {
   205  	return o.ApplyT(func(v LookupPolicyResult) string { return v.Policy }).(pulumi.StringOutput)
   206  }
   207  
   208  // Policy's ID.
   209  func (o LookupPolicyResultOutput) PolicyId() pulumi.StringOutput {
   210  	return o.ApplyT(func(v LookupPolicyResult) string { return v.PolicyId }).(pulumi.StringOutput)
   211  }
   212  
   213  // Key-value mapping of tags for the IAM Policy.
   214  func (o LookupPolicyResultOutput) Tags() pulumi.StringMapOutput {
   215  	return o.ApplyT(func(v LookupPolicyResult) map[string]string { return v.Tags }).(pulumi.StringMapOutput)
   216  }
   217  
   218  func init() {
   219  	pulumi.RegisterOutputType(LookupPolicyResultOutput{})
   220  }