getIamCustomRole function

Future<GetIamCustomRoleResult> getIamCustomRole(
  1. GetIamCustomRoleArgs args, {
  2. InvokeOptions? options,
})

Get information about a Google Cloud Project IAM Custom Role. Note that you must have the roles/iam.roleViewer role (or equivalent permissions) at the project level to use this datasource.

import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";

const example = gcp.projects.getIamCustomRole({
    project: "your-project-id",
    roleId: "your-role-id",
});
const project = new gcp.projects.IAMMember("project", {
    project: "your-project-id",
    role: example.then(example => example.name),
    member: "user:jane@example.com",
});
import pulumi
import pulumi_gcp as gcp

example = gcp.projects.get_iam_custom_role(project="your-project-id",
    role_id="your-role-id")
project = gcp.projects.IAMMember("project",
    project="your-project-id",
    role=example.name,
    member="user:jane@example.com")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;

return await Deployment.RunAsync(() =>
{
    var example = Gcp.Projects.GetIamCustomRole.Invoke(new()
    {
        Project = "your-project-id",
        RoleId = "your-role-id",
    });

    var project = new Gcp.Projects.IAMMember("project", new()
    {
        Project = "your-project-id",
        Role = example.Apply(getIamCustomRoleResult => getIamCustomRoleResult.Name),
        Member = "user:jane@example.com",
    });

});
package main

import (
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/projects"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		example, err := projects.GetIamCustomRole(ctx, &projects.GetIamCustomRoleArgs{
			Project: pulumi.StringRef("your-project-id"),
			RoleId:  "your-role-id",
		}, nil)
		if err != nil {
			return err
		}
		_, err = projects.NewIAMMember(ctx, "project", &projects.IAMMemberArgs{
			Project: pulumi.String("your-project-id"),
			Role:    pulumi.String(example.Name),
			Member:  pulumi.String("user:jane@example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    gcp = {
      source = "pulumi/gcp"
    }
  }
}

data "gcp_projects_getiamcustomrole" "example" {
  project = "your-project-id"
  role_id = "your-role-id"
}

resource "gcp_projects_iammember" "project" {
  project = "your-project-id"
  role    = data.gcp_projects_getiamcustomrole.example.name
  member  = "user:jane@example.com"
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.projects.ProjectsFunctions;
import com.pulumi.gcp.projects.inputs.GetIamCustomRoleArgs;
import com.pulumi.gcp.projects.IAMMember;
import com.pulumi.gcp.projects.IAMMemberArgs;
import java.util.ArrayList;
import java.util.Arrays;
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) {
        final var example = ProjectsFunctions.getIamCustomRole(GetIamCustomRoleArgs.builder()
            .project("your-project-id")
            .roleId("your-role-id")
            .build());

        var project = new IAMMember("project", IAMMemberArgs.builder()
            .project("your-project-id")
            .role(example.name())
            .member("user:jane@example.com")
            .build());

    }
}
resources:
  project:
    type: gcp:projects:IAMMember
    properties:
      project: your-project-id
      role: ${example.name}
      member: user:jane@example.com
variables:
  example:
    fn::invoke:
      function: gcp:projects:getIamCustomRole
      arguments:
        project: your-project-id
        roleId: your-role-id

args Arguments passed to this invoke. Arguments for getIamCustomRole. options Invoke options controlling this call.

Implementation

Future<GetIamCustomRoleResult> getIamCustomRole(
  GetIamCustomRoleArgs args, {
  pulumi.InvokeOptions? options,
}) async {
  final deployment = pulumi.Deployment.instance;
  final result = await deployment.invoke<Map<String, dynamic>>(
    'gcp:projects/getIamCustomRole:getIamCustomRole',
    args.toMap(),
    options: pulumi.toDeploymentInvokeOptions(options),
  );
  return GetIamCustomRoleResult.fromMap(result);
}