Package com.pulumi.aws.workspaces
Class Directory
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.workspaces.Directory
-
public class Directory extends com.pulumi.resources.CustomResourceProvides a WorkSpaces directory in AWS WorkSpaces Service. > **NOTE:** AWS WorkSpaces service requires [`workspaces_DefaultRole`](https://docs.aws.amazon.com/workspaces/latest/adminguide/workspaces-access-control.html#create-default-role) IAM role to operate normally. ## Example Usage
### WorkSpaces Poolspackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.Vpc; import com.pulumi.aws.ec2.VpcArgs; import com.pulumi.aws.ec2.Subnet; import com.pulumi.aws.ec2.SubnetArgs; import com.pulumi.aws.directoryservice.inputs.DirectoryVpcSettingsArgs; import com.pulumi.aws.iam.IamFunctions; import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs; import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs; import com.pulumi.aws.iam.Role; import com.pulumi.aws.iam.RoleArgs; import com.pulumi.aws.iam.RolePolicyAttachment; import com.pulumi.aws.iam.RolePolicyAttachmentArgs; import com.pulumi.aws.workspaces.inputs.DirectoryCertificateBasedAuthPropertiesArgs; import com.pulumi.aws.workspaces.inputs.DirectorySamlPropertiesArgs; import com.pulumi.aws.workspaces.inputs.DirectorySelfServicePermissionsArgs; import com.pulumi.aws.workspaces.inputs.DirectoryWorkspaceAccessPropertiesArgs; import com.pulumi.aws.workspaces.inputs.DirectoryWorkspaceCreationPropertiesArgs; import com.pulumi.resources.CustomResourceOptions; 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) { var exampleVpc = new Vpc("exampleVpc", VpcArgs.builder() .cidrBlock("10.0.0.0/16") .build()); var exampleA = new Subnet("exampleA", SubnetArgs.builder() .vpcId(exampleVpc.id()) .availabilityZone("us-east-1a") .cidrBlock("10.0.0.0/24") .build()); var exampleB = new Subnet("exampleB", SubnetArgs.builder() .vpcId(exampleVpc.id()) .availabilityZone("us-east-1b") .cidrBlock("10.0.1.0/24") .build()); var exampleDirectory = new com.pulumi.aws.directoryservice.Directory("exampleDirectory", com.pulumi.aws.directoryservice.DirectoryArgs.builder() .vpcSettings(DirectoryVpcSettingsArgs.builder() .vpcId(exampleVpc.id()) .subnetIds( exampleA.id(), exampleB.id()) .build()) .name("corp.example.com") .password("#S1ncerely") .size("Small") .build()); final var workspaces = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .type("Service") .identifiers("workspaces.amazonaws.com") .build()) .actions("sts:AssumeRole") .build()) .build()); var workspacesDefault = new Role("workspacesDefault", RoleArgs.builder() .name("workspaces_DefaultRole") .assumeRolePolicy(workspaces.json()) .build()); var workspacesDefaultServiceAccess = new RolePolicyAttachment("workspacesDefaultServiceAccess", RolePolicyAttachmentArgs.builder() .role(workspacesDefault.name()) .policyArn("arn:aws:iam::aws:policy/AmazonWorkSpacesServiceAccess") .build()); var workspacesDefaultSelfServiceAccess = new RolePolicyAttachment("workspacesDefaultSelfServiceAccess", RolePolicyAttachmentArgs.builder() .role(workspacesDefault.name()) .policyArn("arn:aws:iam::aws:policy/AmazonWorkSpacesSelfServiceAccess") .build()); var exampleC = new Subnet("exampleC", SubnetArgs.builder() .vpcId(exampleVpc.id()) .availabilityZone("us-east-1c") .cidrBlock("10.0.2.0/24") .build()); var exampleD = new Subnet("exampleD", SubnetArgs.builder() .vpcId(exampleVpc.id()) .availabilityZone("us-east-1d") .cidrBlock("10.0.3.0/24") .build()); var example = new com.pulumi.aws.workspaces.Directory("example", com.pulumi.aws.workspaces.DirectoryArgs.builder() .certificateBasedAuthProperties(DirectoryCertificateBasedAuthPropertiesArgs.builder() .certificateAuthorityArn("arn:aws:acm-pca:us-east-1:123456789012:certificate-authority/12345678-1234-1234-1234-123456789012") .status("ENABLED") .build()) .samlProperties(DirectorySamlPropertiesArgs.builder() .userAccessUrl("https://sso.example.com/") .status("ENABLED") .build()) .selfServicePermissions(DirectorySelfServicePermissionsArgs.builder() .changeComputeType(true) .increaseVolumeSize(true) .rebuildWorkspace(true) .restartWorkspace(true) .switchRunningMode(true) .build()) .workspaceAccessProperties(DirectoryWorkspaceAccessPropertiesArgs.builder() .deviceTypeAndroid("ALLOW") .deviceTypeChromeos("ALLOW") .deviceTypeIos("ALLOW") .deviceTypeLinux("DENY") .deviceTypeOsx("ALLOW") .deviceTypeWeb("DENY") .deviceTypeWindows("DENY") .deviceTypeZeroclient("DENY") .build()) .workspaceCreationProperties(DirectoryWorkspaceCreationPropertiesArgs.builder() .customSecurityGroupId(exampleAwsSecurityGroup.id()) .defaultOu("OU=AWS,DC=Workgroup,DC=Example,DC=com") .enableInternetAccess(true) .enableMaintenanceMode(true) .userEnabledAsLocalAdministrator(true) .build()) .directoryId(exampleDirectory.id()) .subnetIds( exampleC.id(), exampleD.id()) .tags(Map.of("Example", "true")) .build(), CustomResourceOptions.builder() .dependsOn( workspacesDefaultServiceAccess, workspacesDefaultSelfServiceAccess) .build()); } }
### IP Groupspackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.workspaces.Directory; import com.pulumi.aws.workspaces.DirectoryArgs; import com.pulumi.aws.workspaces.inputs.DirectoryActiveDirectoryConfigArgs; import com.pulumi.aws.workspaces.inputs.DirectoryWorkspaceAccessPropertiesArgs; import com.pulumi.aws.workspaces.inputs.DirectoryWorkspaceCreationPropertiesArgs; import com.pulumi.aws.workspaces.inputs.DirectorySamlPropertiesArgs; 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) { var example = new Directory("example", DirectoryArgs.builder() .activeDirectoryConfig(DirectoryActiveDirectoryConfigArgs.builder() .domainName("example.internal") .serviceAccountSecretArn(exampleAwsSecretsmanagerSecret.arn()) .build()) .workspaceAccessProperties(DirectoryWorkspaceAccessPropertiesArgs.builder() .deviceTypeAndroid("ALLOW") .deviceTypeChromeos("ALLOW") .deviceTypeIos("ALLOW") .deviceTypeLinux("DENY") .deviceTypeOsx("ALLOW") .deviceTypeWeb("DENY") .deviceTypeWindows("DENY") .deviceTypeZeroclient("DENY") .build()) .workspaceCreationProperties(DirectoryWorkspaceCreationPropertiesArgs.builder() .customSecurityGroupId(exampleAwsSecurityGroup.id()) .defaultOu("OU=AWS,DC=Workgroup,DC=Example,DC=com") .enableInternetAccess(true) .build()) .samlProperties(DirectorySamlPropertiesArgs.builder() .relayStateParameterName("RelayState") .userAccessUrl("https://sso.example.com/") .status("ENABLED") .build()) .subnetIds( exampleC.id(), exampleD.id()) .workspaceType("POOLS") .workspaceDirectoryName("Pool directory") .workspaceDirectoryDescription("WorkSpaces Pools directory") .userIdentityType("CUSTOMER_MANAGED") .build()); } }
### VPC Endpoint Streamingpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.workspaces.IpGroup; import com.pulumi.aws.workspaces.IpGroupArgs; import com.pulumi.aws.workspaces.Directory; import com.pulumi.aws.workspaces.DirectoryArgs; 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) { var exampleIpGroup = new IpGroup("exampleIpGroup", IpGroupArgs.builder() .name("example") .build()); var example = new Directory("example", DirectoryArgs.builder() .directoryId(exampleAwsDirectoryServiceDirectory.id()) .ipGroupIds(exampleIpGroup.id()) .build()); } }
## Import Using `pulumi import`, import WorkSpaces directory using the directory ID. For example: ```sh $ pulumi import aws:workspaces/directory:Directory main d-4444444444 ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.SecurityGroup; import com.pulumi.aws.ec2.SecurityGroupArgs; import com.pulumi.aws.AwsFunctions; import com.pulumi.aws.inputs.GetRegionArgs; import com.pulumi.aws.ec2.VpcEndpoint; import com.pulumi.aws.ec2.VpcEndpointArgs; import com.pulumi.aws.workspaces.Directory; import com.pulumi.aws.workspaces.DirectoryArgs; import com.pulumi.aws.workspaces.inputs.DirectoryWorkspaceAccessPropertiesArgs; import com.pulumi.aws.workspaces.inputs.DirectoryWorkspaceAccessPropertiesAccessEndpointConfigArgs; import com.pulumi.aws.workspaces.inputs.DirectoryWorkspaceAccessPropertiesAccessEndpointConfigAccessEndpointArgs; import com.pulumi.aws.vpc.SecurityGroupIngressRule; import com.pulumi.aws.vpc.SecurityGroupIngressRuleArgs; 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) { var workspacesStreaming = new SecurityGroup("workspacesStreaming", SecurityGroupArgs.builder() .name("workspaces-streaming-endpoint") .vpcId(exampleAwsVpc.id()) .build()); final var current = AwsFunctions.getRegion(GetRegionArgs.builder() .build()); var workspaces = new VpcEndpoint("workspaces", VpcEndpointArgs.builder() .vpcId(exampleAwsVpc.id()) .serviceName(String.format("com.amazonaws.%s.highlander", current.region())) .vpcEndpointType("Interface") .subnetIds( exampleA.id(), exampleB.id()) .securityGroupIds(workspacesStreaming.id()) .privateDnsEnabled(true) .build()); var example = new Directory("example", DirectoryArgs.builder() .workspaceAccessProperties(DirectoryWorkspaceAccessPropertiesArgs.builder() .accessEndpointConfig(DirectoryWorkspaceAccessPropertiesAccessEndpointConfigArgs.builder() .accessEndpoints(DirectoryWorkspaceAccessPropertiesAccessEndpointConfigAccessEndpointArgs.builder() .accessEndpointType("STREAMING_WSP") .vpcEndpointId(workspaces.id()) .build()) .internetFallbackProtocols("PCOIP") .build()) .deviceTypeWindows("ALLOW") .build()) .directoryId(exampleAwsDirectoryServiceDirectory.id()) .build()); var workspacesStreamingTcp443 = new SecurityGroupIngressRule("workspacesStreamingTcp443", SecurityGroupIngressRuleArgs.builder() .securityGroupId(workspacesStreaming.id()) .cidrIpv4(exampleAwsVpc.cidrBlock()) .fromPort(443) .toPort(443) .ipProtocol("tcp") .build()); var workspacesStreamingTcp4195 = new SecurityGroupIngressRule("workspacesStreamingTcp4195", SecurityGroupIngressRuleArgs.builder() .securityGroupId(workspacesStreaming.id()) .cidrIpv4(exampleAwsVpc.cidrBlock()) .fromPort(4195) .toPort(4195) .ipProtocol("tcp") .build()); var workspacesStreamingUdp443 = new SecurityGroupIngressRule("workspacesStreamingUdp443", SecurityGroupIngressRuleArgs.builder() .securityGroupId(workspacesStreaming.id()) .cidrIpv4(exampleAwsVpc.cidrBlock()) .fromPort(443) .toPort(443) .ipProtocol("udp") .build()); var workspacesStreamingUdp4195 = new SecurityGroupIngressRule("workspacesStreamingUdp4195", SecurityGroupIngressRuleArgs.builder() .securityGroupId(workspacesStreaming.id()) .cidrIpv4(exampleAwsVpc.cidrBlock()) .fromPort(4195) .toPort(4195) .ipProtocol("udp") .build()); } }
-
-
Constructor Summary
Constructors Constructor Description Directory(java.lang.String name)Directory(java.lang.String name, DirectoryArgs args)Directory(java.lang.String name, DirectoryArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.util.Optional<DirectoryActiveDirectoryConfig>>activeDirectoryConfig()com.pulumi.core.Output<java.lang.String>alias()com.pulumi.core.Output<DirectoryCertificateBasedAuthProperties>certificateBasedAuthProperties()com.pulumi.core.Output<java.lang.String>customerUserName()com.pulumi.core.Output<java.lang.String>directoryId()com.pulumi.core.Output<java.lang.String>directoryName()com.pulumi.core.Output<java.lang.String>directoryType()com.pulumi.core.Output<java.util.List<java.lang.String>>dnsIpAddresses()static Directoryget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, DirectoryState state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<java.lang.String>iamRoleId()com.pulumi.core.Output<java.util.List<java.lang.String>>ipGroupIds()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.lang.String>registrationCode()com.pulumi.core.Output<DirectorySamlProperties>samlProperties()com.pulumi.core.Output<DirectorySelfServicePermissions>selfServicePermissions()com.pulumi.core.Output<java.util.List<java.lang.String>>subnetIds()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>tags()com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>>tagsAll()com.pulumi.core.Output<java.lang.String>tenancy()com.pulumi.core.Output<java.lang.String>userIdentityType()com.pulumi.core.Output<DirectoryWorkspaceAccessProperties>workspaceAccessProperties()com.pulumi.core.Output<DirectoryWorkspaceCreationProperties>workspaceCreationProperties()com.pulumi.core.Output<java.util.Optional<java.lang.String>>workspaceDirectoryDescription()com.pulumi.core.Output<java.util.Optional<java.lang.String>>workspaceDirectoryName()com.pulumi.core.Output<java.lang.String>workspaceSecurityGroupId()com.pulumi.core.Output<java.util.Optional<java.lang.String>>workspaceType()
-
-
-
Constructor Detail
-
Directory
public Directory(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
Directory
public Directory(java.lang.String name, @Nullable DirectoryArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
Directory
public Directory(java.lang.String name, @Nullable DirectoryArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
activeDirectoryConfig
public com.pulumi.core.Output<java.util.Optional<DirectoryActiveDirectoryConfig>> activeDirectoryConfig()
- Returns:
- Configuration for Active Directory integration when `workspaceType` is set to `POOLS`. Defined below.
-
alias
public com.pulumi.core.Output<java.lang.String> alias()
- Returns:
- The directory alias.
-
certificateBasedAuthProperties
public com.pulumi.core.Output<DirectoryCertificateBasedAuthProperties> certificateBasedAuthProperties()
- Returns:
- Configuration of certificate-based authentication (CBA) integration. Requires SAML authentication to be enabled. Defined below.
-
customerUserName
public com.pulumi.core.Output<java.lang.String> customerUserName()
- Returns:
- The user name for the service account.
-
directoryId
public com.pulumi.core.Output<java.lang.String> directoryId()
- Returns:
- The directory identifier for registration in WorkSpaces service.
-
directoryName
public com.pulumi.core.Output<java.lang.String> directoryName()
- Returns:
- The name of the directory.
-
directoryType
public com.pulumi.core.Output<java.lang.String> directoryType()
- Returns:
- The directory type.
-
dnsIpAddresses
public com.pulumi.core.Output<java.util.List<java.lang.String>> dnsIpAddresses()
- Returns:
- The IP addresses of the DNS servers for the directory.
-
iamRoleId
public com.pulumi.core.Output<java.lang.String> iamRoleId()
- Returns:
- The identifier of the IAM role. This is the role that allows Amazon WorkSpaces to make calls to other services, such as Amazon EC2, on your behalf.
-
ipGroupIds
public com.pulumi.core.Output<java.util.List<java.lang.String>> ipGroupIds()
- Returns:
- The identifiers of the IP access control groups associated with the directory.
-
region
public com.pulumi.core.Output<java.lang.String> region()
- Returns:
- Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
-
registrationCode
public com.pulumi.core.Output<java.lang.String> registrationCode()
- Returns:
- The registration code for the directory. This is the code that users enter in their Amazon WorkSpaces client application to connect to the directory.
-
samlProperties
public com.pulumi.core.Output<DirectorySamlProperties> samlProperties()
- Returns:
- Configuration of SAML authentication integration. Defined below.
-
selfServicePermissions
public com.pulumi.core.Output<DirectorySelfServicePermissions> selfServicePermissions()
- Returns:
- Permissions to enable or disable self-service capabilities when `workspaceType` is set to `PERSONAL`.. Defined below.
-
subnetIds
public com.pulumi.core.Output<java.util.List<java.lang.String>> subnetIds()
- Returns:
- The identifiers of the subnets where the directory resides.
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> tags()
- Returns:
- A map of tags assigned to the WorkSpaces directory. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
-
tagsAll
public com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>> tagsAll()
- Returns:
- A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
-
tenancy
public com.pulumi.core.Output<java.lang.String> tenancy()
- Returns:
- Tenancy of the WorkSpaces directory. Valid values are `DEDICATED` or `SHARED`.
-
userIdentityType
public com.pulumi.core.Output<java.lang.String> userIdentityType()
- Returns:
- Specifies the user identity type for the WorkSpaces directory. Valid values are `CUSTOMER_MANAGED`, `AWS_DIRECTORY_SERVICE`, `AWS_IAM_IDENTITY_CENTER`. > **Note:** When `workspaceType` is set to `POOLS`, the `directoryId` is automatically generated and cannot be manually set.
-
workspaceAccessProperties
public com.pulumi.core.Output<DirectoryWorkspaceAccessProperties> workspaceAccessProperties()
- Returns:
- Specifies which devices and operating systems users can use to access their WorkSpaces. Defined below.
-
workspaceCreationProperties
public com.pulumi.core.Output<DirectoryWorkspaceCreationProperties> workspaceCreationProperties()
- Returns:
- Default properties that are used for creating WorkSpaces. Defined below.
-
workspaceDirectoryDescription
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> workspaceDirectoryDescription()
- Returns:
- The description of the WorkSpaces directory when `workspaceType` is set to `POOLS`.
-
workspaceDirectoryName
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> workspaceDirectoryName()
- Returns:
- The name of the WorkSpaces directory when `workspaceType` is set to `POOLS`.
-
workspaceSecurityGroupId
public com.pulumi.core.Output<java.lang.String> workspaceSecurityGroupId()
- Returns:
- The identifier of the security group that is assigned to new WorkSpaces.
-
workspaceType
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> workspaceType()
- Returns:
- Specifies the type of WorkSpaces directory. Valid values are `PERSONAL` and `POOLS`. Default is `PERSONAL`.
-
get
public static Directory get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable DirectoryState state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-