github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/transfer/server.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 transfer
     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  // Provides a AWS Transfer Server resource.
    15  //
    16  // > **NOTE on AWS IAM permissions:** If the `endpointType` is set to `VPC`, the `ec2:DescribeVpcEndpoints` and `ec2:ModifyVpcEndpoint` [actions](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions) are used.
    17  //
    18  // > **NOTE:** Use the `transfer.Tag` resource to manage the system tags used for [custom hostnames](https://docs.aws.amazon.com/transfer/latest/userguide/requirements-dns.html#tag-custom-hostname-cdk).
    19  //
    20  // ## Example Usage
    21  //
    22  // ### Basic
    23  //
    24  // <!--Start PulumiCodeChooser -->
    25  // ```go
    26  // package main
    27  //
    28  // import (
    29  //
    30  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/transfer"
    31  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    32  //
    33  // )
    34  //
    35  //	func main() {
    36  //		pulumi.Run(func(ctx *pulumi.Context) error {
    37  //			_, err := transfer.NewServer(ctx, "example", &transfer.ServerArgs{
    38  //				Tags: pulumi.StringMap{
    39  //					"Name": pulumi.String("Example"),
    40  //				},
    41  //			})
    42  //			if err != nil {
    43  //				return err
    44  //			}
    45  //			return nil
    46  //		})
    47  //	}
    48  //
    49  // ```
    50  // <!--End PulumiCodeChooser -->
    51  //
    52  // ### Security Policy Name
    53  //
    54  // <!--Start PulumiCodeChooser -->
    55  // ```go
    56  // package main
    57  //
    58  // import (
    59  //
    60  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/transfer"
    61  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    62  //
    63  // )
    64  //
    65  //	func main() {
    66  //		pulumi.Run(func(ctx *pulumi.Context) error {
    67  //			_, err := transfer.NewServer(ctx, "example", &transfer.ServerArgs{
    68  //				SecurityPolicyName: pulumi.String("TransferSecurityPolicy-2020-06"),
    69  //			})
    70  //			if err != nil {
    71  //				return err
    72  //			}
    73  //			return nil
    74  //		})
    75  //	}
    76  //
    77  // ```
    78  // <!--End PulumiCodeChooser -->
    79  //
    80  // ### VPC Endpoint
    81  //
    82  // <!--Start PulumiCodeChooser -->
    83  // ```go
    84  // package main
    85  //
    86  // import (
    87  //
    88  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/transfer"
    89  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    90  //
    91  // )
    92  //
    93  //	func main() {
    94  //		pulumi.Run(func(ctx *pulumi.Context) error {
    95  //			_, err := transfer.NewServer(ctx, "example", &transfer.ServerArgs{
    96  //				EndpointType: pulumi.String("VPC"),
    97  //				EndpointDetails: &transfer.ServerEndpointDetailsArgs{
    98  //					AddressAllocationIds: pulumi.StringArray{
    99  //						exampleAwsEip.Id,
   100  //					},
   101  //					SubnetIds: pulumi.StringArray{
   102  //						exampleAwsSubnet.Id,
   103  //					},
   104  //					VpcId: pulumi.Any(exampleAwsVpc.Id),
   105  //				},
   106  //			})
   107  //			if err != nil {
   108  //				return err
   109  //			}
   110  //			return nil
   111  //		})
   112  //	}
   113  //
   114  // ```
   115  // <!--End PulumiCodeChooser -->
   116  //
   117  // ### AWS Directory authentication
   118  //
   119  // <!--Start PulumiCodeChooser -->
   120  // ```go
   121  // package main
   122  //
   123  // import (
   124  //
   125  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/transfer"
   126  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   127  //
   128  // )
   129  //
   130  //	func main() {
   131  //		pulumi.Run(func(ctx *pulumi.Context) error {
   132  //			_, err := transfer.NewServer(ctx, "example", &transfer.ServerArgs{
   133  //				IdentityProviderType: pulumi.String("AWS_DIRECTORY_SERVICE"),
   134  //				DirectoryId:          pulumi.Any(exampleAwsDirectoryServiceDirectory.Id),
   135  //			})
   136  //			if err != nil {
   137  //				return err
   138  //			}
   139  //			return nil
   140  //		})
   141  //	}
   142  //
   143  // ```
   144  // <!--End PulumiCodeChooser -->
   145  //
   146  // ### AWS Lambda authentication
   147  //
   148  // <!--Start PulumiCodeChooser -->
   149  // ```go
   150  // package main
   151  //
   152  // import (
   153  //
   154  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/transfer"
   155  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   156  //
   157  // )
   158  //
   159  //	func main() {
   160  //		pulumi.Run(func(ctx *pulumi.Context) error {
   161  //			_, err := transfer.NewServer(ctx, "example", &transfer.ServerArgs{
   162  //				IdentityProviderType: pulumi.String("AWS_LAMBDA"),
   163  //				Function:             pulumi.Any(exampleAwsLambdaIdentityProvider.Arn),
   164  //			})
   165  //			if err != nil {
   166  //				return err
   167  //			}
   168  //			return nil
   169  //		})
   170  //	}
   171  //
   172  // ```
   173  // <!--End PulumiCodeChooser -->
   174  //
   175  // ### Protocols
   176  //
   177  // <!--Start PulumiCodeChooser -->
   178  // ```go
   179  // package main
   180  //
   181  // import (
   182  //
   183  //	"fmt"
   184  //
   185  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/transfer"
   186  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   187  //
   188  // )
   189  //
   190  //	func main() {
   191  //		pulumi.Run(func(ctx *pulumi.Context) error {
   192  //			_, err := transfer.NewServer(ctx, "example", &transfer.ServerArgs{
   193  //				EndpointType: pulumi.String("VPC"),
   194  //				EndpointDetails: &transfer.ServerEndpointDetailsArgs{
   195  //					SubnetIds: pulumi.StringArray{
   196  //						exampleAwsSubnet.Id,
   197  //					},
   198  //					VpcId: pulumi.Any(exampleAwsVpc.Id),
   199  //				},
   200  //				Protocols: pulumi.StringArray{
   201  //					pulumi.String("FTP"),
   202  //					pulumi.String("FTPS"),
   203  //				},
   204  //				Certificate:          pulumi.Any(exampleAwsAcmCertificate.Arn),
   205  //				IdentityProviderType: pulumi.String("API_GATEWAY"),
   206  //				Url:                  pulumi.String(fmt.Sprintf("%v%v", exampleAwsApiGatewayDeployment.InvokeUrl, exampleAwsApiGatewayResource.Path)),
   207  //			})
   208  //			if err != nil {
   209  //				return err
   210  //			}
   211  //			return nil
   212  //		})
   213  //	}
   214  //
   215  // ```
   216  // <!--End PulumiCodeChooser -->
   217  //
   218  // ### Using Structured Logging Destinations
   219  //
   220  // <!--Start PulumiCodeChooser -->
   221  // ```go
   222  // package main
   223  //
   224  // import (
   225  //
   226  //	"fmt"
   227  //
   228  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch"
   229  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
   230  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/transfer"
   231  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   232  //
   233  // )
   234  //
   235  //	func main() {
   236  //		pulumi.Run(func(ctx *pulumi.Context) error {
   237  //			transfer, err := cloudwatch.NewLogGroup(ctx, "transfer", &cloudwatch.LogGroupArgs{
   238  //				NamePrefix: pulumi.String("transfer_test_"),
   239  //			})
   240  //			if err != nil {
   241  //				return err
   242  //			}
   243  //			transferAssumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
   244  //				Statements: []iam.GetPolicyDocumentStatement{
   245  //					{
   246  //						Effect: pulumi.StringRef("Allow"),
   247  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
   248  //							{
   249  //								Type: "Service",
   250  //								Identifiers: []string{
   251  //									"transfer.amazonaws.com",
   252  //								},
   253  //							},
   254  //						},
   255  //						Actions: []string{
   256  //							"sts:AssumeRole",
   257  //						},
   258  //					},
   259  //				},
   260  //			}, nil)
   261  //			if err != nil {
   262  //				return err
   263  //			}
   264  //			iamForTransfer, err := iam.NewRole(ctx, "iam_for_transfer", &iam.RoleArgs{
   265  //				NamePrefix:       pulumi.String("iam_for_transfer_"),
   266  //				AssumeRolePolicy: pulumi.String(transferAssumeRole.Json),
   267  //				ManagedPolicyArns: pulumi.StringArray{
   268  //					pulumi.String("arn:aws:iam::aws:policy/service-role/AWSTransferLoggingAccess"),
   269  //				},
   270  //			})
   271  //			if err != nil {
   272  //				return err
   273  //			}
   274  //			_, err = transfer.NewServer(ctx, "transfer", &transfer.ServerArgs{
   275  //				EndpointType: pulumi.String("PUBLIC"),
   276  //				LoggingRole:  iamForTransfer.Arn,
   277  //				Protocols: pulumi.StringArray{
   278  //					pulumi.String("SFTP"),
   279  //				},
   280  //				StructuredLogDestinations: pulumi.StringArray{
   281  //					transfer.Arn.ApplyT(func(arn string) (string, error) {
   282  //						return fmt.Sprintf("%v:*", arn), nil
   283  //					}).(pulumi.StringOutput),
   284  //				},
   285  //			})
   286  //			if err != nil {
   287  //				return err
   288  //			}
   289  //			return nil
   290  //		})
   291  //	}
   292  //
   293  // ```
   294  // <!--End PulumiCodeChooser -->
   295  //
   296  // ## Import
   297  //
   298  // Using `pulumi import`, import Transfer Servers using the server `id`. For example:
   299  //
   300  // ```sh
   301  // $ pulumi import aws:transfer/server:Server example s-12345678
   302  // ```
   303  // Certain resource arguments, such as `host_key`, cannot be read via the API and imported into the provider. This provider will display a difference for these arguments the first run after import if declared in the provider configuration for an imported resource.
   304  type Server struct {
   305  	pulumi.CustomResourceState
   306  
   307  	// Amazon Resource Name (ARN) of Transfer Server
   308  	Arn pulumi.StringOutput `pulumi:"arn"`
   309  	// The Amazon Resource Name (ARN) of the AWS Certificate Manager (ACM) certificate. This is required when `protocols` is set to `FTPS`
   310  	Certificate pulumi.StringPtrOutput `pulumi:"certificate"`
   311  	// The directory service ID of the directory service you want to connect to with an `identityProviderType` of `AWS_DIRECTORY_SERVICE`.
   312  	DirectoryId pulumi.StringPtrOutput `pulumi:"directoryId"`
   313  	// The domain of the storage system that is used for file transfers. Valid values are: `S3` and `EFS`. The default value is `S3`.
   314  	Domain pulumi.StringPtrOutput `pulumi:"domain"`
   315  	// The endpoint of the Transfer Server (e.g., `s-12345678.server.transfer.REGION.amazonaws.com`)
   316  	Endpoint pulumi.StringOutput `pulumi:"endpoint"`
   317  	// The virtual private cloud (VPC) endpoint settings that you want to configure for your SFTP server. See `endpointDetails` block below for details.
   318  	EndpointDetails ServerEndpointDetailsPtrOutput `pulumi:"endpointDetails"`
   319  	// The type of endpoint that you want your SFTP server connect to. If you connect to a `VPC` (or `VPC_ENDPOINT`), your SFTP server isn't accessible over the public internet. If you want to connect your SFTP server via public internet, set `PUBLIC`.  Defaults to `PUBLIC`.
   320  	EndpointType pulumi.StringPtrOutput `pulumi:"endpointType"`
   321  	// A boolean that indicates all users associated with the server should be deleted so that the Server can be destroyed without error. The default value is `false`. This option only applies to servers configured with a `SERVICE_MANAGED` `identityProviderType`.
   322  	ForceDestroy pulumi.BoolPtrOutput `pulumi:"forceDestroy"`
   323  	// The ARN for a lambda function to use for the Identity provider.
   324  	Function pulumi.StringPtrOutput `pulumi:"function"`
   325  	// RSA, ECDSA, or ED25519 private key (e.g., as generated by the `ssh-keygen -t rsa -b 2048 -N "" -m PEM -f my-new-server-key`, `ssh-keygen -t ecdsa -b 256 -N "" -m PEM -f my-new-server-key` or `ssh-keygen -t ed25519 -N "" -f my-new-server-key` commands).
   326  	HostKey pulumi.StringPtrOutput `pulumi:"hostKey"`
   327  	// This value contains the message-digest algorithm (MD5) hash of the server's host key. This value is equivalent to the output of the `ssh-keygen -l -E md5 -f my-new-server-key` command.
   328  	HostKeyFingerprint pulumi.StringOutput `pulumi:"hostKeyFingerprint"`
   329  	// The mode of authentication enabled for this service. The default value is `SERVICE_MANAGED`, which allows you to store and access SFTP user credentials within the service. `API_GATEWAY` indicates that user authentication requires a call to an API Gateway endpoint URL provided by you to integrate an identity provider of your choice. Using `AWS_DIRECTORY_SERVICE` will allow for authentication against AWS Managed Active Directory or Microsoft Active Directory in your on-premises environment, or in AWS using AD Connectors. Use the `AWS_LAMBDA` value to directly use a Lambda function as your identity provider. If you choose this value, you must specify the ARN for the lambda function in the `function` argument.
   330  	IdentityProviderType pulumi.StringPtrOutput `pulumi:"identityProviderType"`
   331  	// Amazon Resource Name (ARN) of the IAM role used to authenticate the user account with an `identityProviderType` of `API_GATEWAY`.
   332  	InvocationRole pulumi.StringPtrOutput `pulumi:"invocationRole"`
   333  	// Amazon Resource Name (ARN) of an IAM role that allows the service to write your SFTP users’ activity to your Amazon CloudWatch logs for monitoring and auditing purposes.
   334  	LoggingRole pulumi.StringPtrOutput `pulumi:"loggingRole"`
   335  	// Specify a string to display when users connect to a server. This string is displayed after the user authenticates. The SFTP protocol does not support post-authentication display banners.
   336  	PostAuthenticationLoginBanner pulumi.StringPtrOutput `pulumi:"postAuthenticationLoginBanner"`
   337  	// Specify a string to display when users connect to a server. This string is displayed before the user authenticates.
   338  	PreAuthenticationLoginBanner pulumi.StringPtrOutput `pulumi:"preAuthenticationLoginBanner"`
   339  	// The protocol settings that are configured for your server. See `protocolDetails` block below for details.
   340  	ProtocolDetails ServerProtocolDetailsOutput `pulumi:"protocolDetails"`
   341  	// Specifies the file transfer protocol or protocols over which your file transfer protocol client can connect to your server's endpoint. This defaults to `SFTP` . The available protocols are:
   342  	Protocols pulumi.StringArrayOutput `pulumi:"protocols"`
   343  	// Specifies whether or not performance for your Amazon S3 directories is optimized. This is disabled by default. See `s3StorageOptions` block below for details.
   344  	S3StorageOptions ServerS3StorageOptionsOutput `pulumi:"s3StorageOptions"`
   345  	// Specifies the name of the security policy that is attached to the server. Default value is: `TransferSecurityPolicy-2018-11`. The available values are:
   346  	// * `TransferSecurityPolicy-2024-01`
   347  	// * `TransferSecurityPolicy-2023-05`
   348  	// * `TransferSecurityPolicy-2022-03`
   349  	// * `TransferSecurityPolicy-2020-06`
   350  	// * `TransferSecurityPolicy-2018-11`
   351  	// * `TransferSecurityPolicy-FIPS-2024-01`
   352  	// * `TransferSecurityPolicy-FIPS-2023-05`
   353  	// * `TransferSecurityPolicy-FIPS-2020-06`
   354  	// * `TransferSecurityPolicy-PQ-SSH-Experimental-2023-04`
   355  	// * `TransferSecurityPolicy-PQ-SSH-FIPS-Experimental-2023-04`
   356  	SecurityPolicyName pulumi.StringPtrOutput `pulumi:"securityPolicyName"`
   357  	// A set of ARNs of destinations that will receive structured logs from the transfer server such as CloudWatch Log Group ARNs. If provided this enables the transfer server to emit structured logs to the specified locations.
   358  	StructuredLogDestinations pulumi.StringArrayOutput `pulumi:"structuredLogDestinations"`
   359  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   360  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   361  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   362  	//
   363  	// Deprecated: Please use `tags` instead.
   364  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   365  	// URL of the service endpoint used to authenticate users with an `identityProviderType` of `API_GATEWAY`.
   366  	Url pulumi.StringPtrOutput `pulumi:"url"`
   367  	// Specifies the workflow details. See `workflowDetails` block below for details.
   368  	WorkflowDetails ServerWorkflowDetailsPtrOutput `pulumi:"workflowDetails"`
   369  }
   370  
   371  // NewServer registers a new resource with the given unique name, arguments, and options.
   372  func NewServer(ctx *pulumi.Context,
   373  	name string, args *ServerArgs, opts ...pulumi.ResourceOption) (*Server, error) {
   374  	if args == nil {
   375  		args = &ServerArgs{}
   376  	}
   377  
   378  	if args.HostKey != nil {
   379  		args.HostKey = pulumi.ToSecret(args.HostKey).(pulumi.StringPtrInput)
   380  	}
   381  	if args.PostAuthenticationLoginBanner != nil {
   382  		args.PostAuthenticationLoginBanner = pulumi.ToSecret(args.PostAuthenticationLoginBanner).(pulumi.StringPtrInput)
   383  	}
   384  	if args.PreAuthenticationLoginBanner != nil {
   385  		args.PreAuthenticationLoginBanner = pulumi.ToSecret(args.PreAuthenticationLoginBanner).(pulumi.StringPtrInput)
   386  	}
   387  	secrets := pulumi.AdditionalSecretOutputs([]string{
   388  		"hostKey",
   389  		"postAuthenticationLoginBanner",
   390  		"preAuthenticationLoginBanner",
   391  	})
   392  	opts = append(opts, secrets)
   393  	opts = internal.PkgResourceDefaultOpts(opts)
   394  	var resource Server
   395  	err := ctx.RegisterResource("aws:transfer/server:Server", name, args, &resource, opts...)
   396  	if err != nil {
   397  		return nil, err
   398  	}
   399  	return &resource, nil
   400  }
   401  
   402  // GetServer gets an existing Server resource's state with the given name, ID, and optional
   403  // state properties that are used to uniquely qualify the lookup (nil if not required).
   404  func GetServer(ctx *pulumi.Context,
   405  	name string, id pulumi.IDInput, state *ServerState, opts ...pulumi.ResourceOption) (*Server, error) {
   406  	var resource Server
   407  	err := ctx.ReadResource("aws:transfer/server:Server", name, id, state, &resource, opts...)
   408  	if err != nil {
   409  		return nil, err
   410  	}
   411  	return &resource, nil
   412  }
   413  
   414  // Input properties used for looking up and filtering Server resources.
   415  type serverState struct {
   416  	// Amazon Resource Name (ARN) of Transfer Server
   417  	Arn *string `pulumi:"arn"`
   418  	// The Amazon Resource Name (ARN) of the AWS Certificate Manager (ACM) certificate. This is required when `protocols` is set to `FTPS`
   419  	Certificate *string `pulumi:"certificate"`
   420  	// The directory service ID of the directory service you want to connect to with an `identityProviderType` of `AWS_DIRECTORY_SERVICE`.
   421  	DirectoryId *string `pulumi:"directoryId"`
   422  	// The domain of the storage system that is used for file transfers. Valid values are: `S3` and `EFS`. The default value is `S3`.
   423  	Domain *string `pulumi:"domain"`
   424  	// The endpoint of the Transfer Server (e.g., `s-12345678.server.transfer.REGION.amazonaws.com`)
   425  	Endpoint *string `pulumi:"endpoint"`
   426  	// The virtual private cloud (VPC) endpoint settings that you want to configure for your SFTP server. See `endpointDetails` block below for details.
   427  	EndpointDetails *ServerEndpointDetails `pulumi:"endpointDetails"`
   428  	// The type of endpoint that you want your SFTP server connect to. If you connect to a `VPC` (or `VPC_ENDPOINT`), your SFTP server isn't accessible over the public internet. If you want to connect your SFTP server via public internet, set `PUBLIC`.  Defaults to `PUBLIC`.
   429  	EndpointType *string `pulumi:"endpointType"`
   430  	// A boolean that indicates all users associated with the server should be deleted so that the Server can be destroyed without error. The default value is `false`. This option only applies to servers configured with a `SERVICE_MANAGED` `identityProviderType`.
   431  	ForceDestroy *bool `pulumi:"forceDestroy"`
   432  	// The ARN for a lambda function to use for the Identity provider.
   433  	Function *string `pulumi:"function"`
   434  	// RSA, ECDSA, or ED25519 private key (e.g., as generated by the `ssh-keygen -t rsa -b 2048 -N "" -m PEM -f my-new-server-key`, `ssh-keygen -t ecdsa -b 256 -N "" -m PEM -f my-new-server-key` or `ssh-keygen -t ed25519 -N "" -f my-new-server-key` commands).
   435  	HostKey *string `pulumi:"hostKey"`
   436  	// This value contains the message-digest algorithm (MD5) hash of the server's host key. This value is equivalent to the output of the `ssh-keygen -l -E md5 -f my-new-server-key` command.
   437  	HostKeyFingerprint *string `pulumi:"hostKeyFingerprint"`
   438  	// The mode of authentication enabled for this service. The default value is `SERVICE_MANAGED`, which allows you to store and access SFTP user credentials within the service. `API_GATEWAY` indicates that user authentication requires a call to an API Gateway endpoint URL provided by you to integrate an identity provider of your choice. Using `AWS_DIRECTORY_SERVICE` will allow for authentication against AWS Managed Active Directory or Microsoft Active Directory in your on-premises environment, or in AWS using AD Connectors. Use the `AWS_LAMBDA` value to directly use a Lambda function as your identity provider. If you choose this value, you must specify the ARN for the lambda function in the `function` argument.
   439  	IdentityProviderType *string `pulumi:"identityProviderType"`
   440  	// Amazon Resource Name (ARN) of the IAM role used to authenticate the user account with an `identityProviderType` of `API_GATEWAY`.
   441  	InvocationRole *string `pulumi:"invocationRole"`
   442  	// Amazon Resource Name (ARN) of an IAM role that allows the service to write your SFTP users’ activity to your Amazon CloudWatch logs for monitoring and auditing purposes.
   443  	LoggingRole *string `pulumi:"loggingRole"`
   444  	// Specify a string to display when users connect to a server. This string is displayed after the user authenticates. The SFTP protocol does not support post-authentication display banners.
   445  	PostAuthenticationLoginBanner *string `pulumi:"postAuthenticationLoginBanner"`
   446  	// Specify a string to display when users connect to a server. This string is displayed before the user authenticates.
   447  	PreAuthenticationLoginBanner *string `pulumi:"preAuthenticationLoginBanner"`
   448  	// The protocol settings that are configured for your server. See `protocolDetails` block below for details.
   449  	ProtocolDetails *ServerProtocolDetails `pulumi:"protocolDetails"`
   450  	// Specifies the file transfer protocol or protocols over which your file transfer protocol client can connect to your server's endpoint. This defaults to `SFTP` . The available protocols are:
   451  	Protocols []string `pulumi:"protocols"`
   452  	// Specifies whether or not performance for your Amazon S3 directories is optimized. This is disabled by default. See `s3StorageOptions` block below for details.
   453  	S3StorageOptions *ServerS3StorageOptions `pulumi:"s3StorageOptions"`
   454  	// Specifies the name of the security policy that is attached to the server. Default value is: `TransferSecurityPolicy-2018-11`. The available values are:
   455  	// * `TransferSecurityPolicy-2024-01`
   456  	// * `TransferSecurityPolicy-2023-05`
   457  	// * `TransferSecurityPolicy-2022-03`
   458  	// * `TransferSecurityPolicy-2020-06`
   459  	// * `TransferSecurityPolicy-2018-11`
   460  	// * `TransferSecurityPolicy-FIPS-2024-01`
   461  	// * `TransferSecurityPolicy-FIPS-2023-05`
   462  	// * `TransferSecurityPolicy-FIPS-2020-06`
   463  	// * `TransferSecurityPolicy-PQ-SSH-Experimental-2023-04`
   464  	// * `TransferSecurityPolicy-PQ-SSH-FIPS-Experimental-2023-04`
   465  	SecurityPolicyName *string `pulumi:"securityPolicyName"`
   466  	// A set of ARNs of destinations that will receive structured logs from the transfer server such as CloudWatch Log Group ARNs. If provided this enables the transfer server to emit structured logs to the specified locations.
   467  	StructuredLogDestinations []string `pulumi:"structuredLogDestinations"`
   468  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   469  	Tags map[string]string `pulumi:"tags"`
   470  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   471  	//
   472  	// Deprecated: Please use `tags` instead.
   473  	TagsAll map[string]string `pulumi:"tagsAll"`
   474  	// URL of the service endpoint used to authenticate users with an `identityProviderType` of `API_GATEWAY`.
   475  	Url *string `pulumi:"url"`
   476  	// Specifies the workflow details. See `workflowDetails` block below for details.
   477  	WorkflowDetails *ServerWorkflowDetails `pulumi:"workflowDetails"`
   478  }
   479  
   480  type ServerState struct {
   481  	// Amazon Resource Name (ARN) of Transfer Server
   482  	Arn pulumi.StringPtrInput
   483  	// The Amazon Resource Name (ARN) of the AWS Certificate Manager (ACM) certificate. This is required when `protocols` is set to `FTPS`
   484  	Certificate pulumi.StringPtrInput
   485  	// The directory service ID of the directory service you want to connect to with an `identityProviderType` of `AWS_DIRECTORY_SERVICE`.
   486  	DirectoryId pulumi.StringPtrInput
   487  	// The domain of the storage system that is used for file transfers. Valid values are: `S3` and `EFS`. The default value is `S3`.
   488  	Domain pulumi.StringPtrInput
   489  	// The endpoint of the Transfer Server (e.g., `s-12345678.server.transfer.REGION.amazonaws.com`)
   490  	Endpoint pulumi.StringPtrInput
   491  	// The virtual private cloud (VPC) endpoint settings that you want to configure for your SFTP server. See `endpointDetails` block below for details.
   492  	EndpointDetails ServerEndpointDetailsPtrInput
   493  	// The type of endpoint that you want your SFTP server connect to. If you connect to a `VPC` (or `VPC_ENDPOINT`), your SFTP server isn't accessible over the public internet. If you want to connect your SFTP server via public internet, set `PUBLIC`.  Defaults to `PUBLIC`.
   494  	EndpointType pulumi.StringPtrInput
   495  	// A boolean that indicates all users associated with the server should be deleted so that the Server can be destroyed without error. The default value is `false`. This option only applies to servers configured with a `SERVICE_MANAGED` `identityProviderType`.
   496  	ForceDestroy pulumi.BoolPtrInput
   497  	// The ARN for a lambda function to use for the Identity provider.
   498  	Function pulumi.StringPtrInput
   499  	// RSA, ECDSA, or ED25519 private key (e.g., as generated by the `ssh-keygen -t rsa -b 2048 -N "" -m PEM -f my-new-server-key`, `ssh-keygen -t ecdsa -b 256 -N "" -m PEM -f my-new-server-key` or `ssh-keygen -t ed25519 -N "" -f my-new-server-key` commands).
   500  	HostKey pulumi.StringPtrInput
   501  	// This value contains the message-digest algorithm (MD5) hash of the server's host key. This value is equivalent to the output of the `ssh-keygen -l -E md5 -f my-new-server-key` command.
   502  	HostKeyFingerprint pulumi.StringPtrInput
   503  	// The mode of authentication enabled for this service. The default value is `SERVICE_MANAGED`, which allows you to store and access SFTP user credentials within the service. `API_GATEWAY` indicates that user authentication requires a call to an API Gateway endpoint URL provided by you to integrate an identity provider of your choice. Using `AWS_DIRECTORY_SERVICE` will allow for authentication against AWS Managed Active Directory or Microsoft Active Directory in your on-premises environment, or in AWS using AD Connectors. Use the `AWS_LAMBDA` value to directly use a Lambda function as your identity provider. If you choose this value, you must specify the ARN for the lambda function in the `function` argument.
   504  	IdentityProviderType pulumi.StringPtrInput
   505  	// Amazon Resource Name (ARN) of the IAM role used to authenticate the user account with an `identityProviderType` of `API_GATEWAY`.
   506  	InvocationRole pulumi.StringPtrInput
   507  	// Amazon Resource Name (ARN) of an IAM role that allows the service to write your SFTP users’ activity to your Amazon CloudWatch logs for monitoring and auditing purposes.
   508  	LoggingRole pulumi.StringPtrInput
   509  	// Specify a string to display when users connect to a server. This string is displayed after the user authenticates. The SFTP protocol does not support post-authentication display banners.
   510  	PostAuthenticationLoginBanner pulumi.StringPtrInput
   511  	// Specify a string to display when users connect to a server. This string is displayed before the user authenticates.
   512  	PreAuthenticationLoginBanner pulumi.StringPtrInput
   513  	// The protocol settings that are configured for your server. See `protocolDetails` block below for details.
   514  	ProtocolDetails ServerProtocolDetailsPtrInput
   515  	// Specifies the file transfer protocol or protocols over which your file transfer protocol client can connect to your server's endpoint. This defaults to `SFTP` . The available protocols are:
   516  	Protocols pulumi.StringArrayInput
   517  	// Specifies whether or not performance for your Amazon S3 directories is optimized. This is disabled by default. See `s3StorageOptions` block below for details.
   518  	S3StorageOptions ServerS3StorageOptionsPtrInput
   519  	// Specifies the name of the security policy that is attached to the server. Default value is: `TransferSecurityPolicy-2018-11`. The available values are:
   520  	// * `TransferSecurityPolicy-2024-01`
   521  	// * `TransferSecurityPolicy-2023-05`
   522  	// * `TransferSecurityPolicy-2022-03`
   523  	// * `TransferSecurityPolicy-2020-06`
   524  	// * `TransferSecurityPolicy-2018-11`
   525  	// * `TransferSecurityPolicy-FIPS-2024-01`
   526  	// * `TransferSecurityPolicy-FIPS-2023-05`
   527  	// * `TransferSecurityPolicy-FIPS-2020-06`
   528  	// * `TransferSecurityPolicy-PQ-SSH-Experimental-2023-04`
   529  	// * `TransferSecurityPolicy-PQ-SSH-FIPS-Experimental-2023-04`
   530  	SecurityPolicyName pulumi.StringPtrInput
   531  	// A set of ARNs of destinations that will receive structured logs from the transfer server such as CloudWatch Log Group ARNs. If provided this enables the transfer server to emit structured logs to the specified locations.
   532  	StructuredLogDestinations pulumi.StringArrayInput
   533  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   534  	Tags pulumi.StringMapInput
   535  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   536  	//
   537  	// Deprecated: Please use `tags` instead.
   538  	TagsAll pulumi.StringMapInput
   539  	// URL of the service endpoint used to authenticate users with an `identityProviderType` of `API_GATEWAY`.
   540  	Url pulumi.StringPtrInput
   541  	// Specifies the workflow details. See `workflowDetails` block below for details.
   542  	WorkflowDetails ServerWorkflowDetailsPtrInput
   543  }
   544  
   545  func (ServerState) ElementType() reflect.Type {
   546  	return reflect.TypeOf((*serverState)(nil)).Elem()
   547  }
   548  
   549  type serverArgs struct {
   550  	// The Amazon Resource Name (ARN) of the AWS Certificate Manager (ACM) certificate. This is required when `protocols` is set to `FTPS`
   551  	Certificate *string `pulumi:"certificate"`
   552  	// The directory service ID of the directory service you want to connect to with an `identityProviderType` of `AWS_DIRECTORY_SERVICE`.
   553  	DirectoryId *string `pulumi:"directoryId"`
   554  	// The domain of the storage system that is used for file transfers. Valid values are: `S3` and `EFS`. The default value is `S3`.
   555  	Domain *string `pulumi:"domain"`
   556  	// The virtual private cloud (VPC) endpoint settings that you want to configure for your SFTP server. See `endpointDetails` block below for details.
   557  	EndpointDetails *ServerEndpointDetails `pulumi:"endpointDetails"`
   558  	// The type of endpoint that you want your SFTP server connect to. If you connect to a `VPC` (or `VPC_ENDPOINT`), your SFTP server isn't accessible over the public internet. If you want to connect your SFTP server via public internet, set `PUBLIC`.  Defaults to `PUBLIC`.
   559  	EndpointType *string `pulumi:"endpointType"`
   560  	// A boolean that indicates all users associated with the server should be deleted so that the Server can be destroyed without error. The default value is `false`. This option only applies to servers configured with a `SERVICE_MANAGED` `identityProviderType`.
   561  	ForceDestroy *bool `pulumi:"forceDestroy"`
   562  	// The ARN for a lambda function to use for the Identity provider.
   563  	Function *string `pulumi:"function"`
   564  	// RSA, ECDSA, or ED25519 private key (e.g., as generated by the `ssh-keygen -t rsa -b 2048 -N "" -m PEM -f my-new-server-key`, `ssh-keygen -t ecdsa -b 256 -N "" -m PEM -f my-new-server-key` or `ssh-keygen -t ed25519 -N "" -f my-new-server-key` commands).
   565  	HostKey *string `pulumi:"hostKey"`
   566  	// The mode of authentication enabled for this service. The default value is `SERVICE_MANAGED`, which allows you to store and access SFTP user credentials within the service. `API_GATEWAY` indicates that user authentication requires a call to an API Gateway endpoint URL provided by you to integrate an identity provider of your choice. Using `AWS_DIRECTORY_SERVICE` will allow for authentication against AWS Managed Active Directory or Microsoft Active Directory in your on-premises environment, or in AWS using AD Connectors. Use the `AWS_LAMBDA` value to directly use a Lambda function as your identity provider. If you choose this value, you must specify the ARN for the lambda function in the `function` argument.
   567  	IdentityProviderType *string `pulumi:"identityProviderType"`
   568  	// Amazon Resource Name (ARN) of the IAM role used to authenticate the user account with an `identityProviderType` of `API_GATEWAY`.
   569  	InvocationRole *string `pulumi:"invocationRole"`
   570  	// Amazon Resource Name (ARN) of an IAM role that allows the service to write your SFTP users’ activity to your Amazon CloudWatch logs for monitoring and auditing purposes.
   571  	LoggingRole *string `pulumi:"loggingRole"`
   572  	// Specify a string to display when users connect to a server. This string is displayed after the user authenticates. The SFTP protocol does not support post-authentication display banners.
   573  	PostAuthenticationLoginBanner *string `pulumi:"postAuthenticationLoginBanner"`
   574  	// Specify a string to display when users connect to a server. This string is displayed before the user authenticates.
   575  	PreAuthenticationLoginBanner *string `pulumi:"preAuthenticationLoginBanner"`
   576  	// The protocol settings that are configured for your server. See `protocolDetails` block below for details.
   577  	ProtocolDetails *ServerProtocolDetails `pulumi:"protocolDetails"`
   578  	// Specifies the file transfer protocol or protocols over which your file transfer protocol client can connect to your server's endpoint. This defaults to `SFTP` . The available protocols are:
   579  	Protocols []string `pulumi:"protocols"`
   580  	// Specifies whether or not performance for your Amazon S3 directories is optimized. This is disabled by default. See `s3StorageOptions` block below for details.
   581  	S3StorageOptions *ServerS3StorageOptions `pulumi:"s3StorageOptions"`
   582  	// Specifies the name of the security policy that is attached to the server. Default value is: `TransferSecurityPolicy-2018-11`. The available values are:
   583  	// * `TransferSecurityPolicy-2024-01`
   584  	// * `TransferSecurityPolicy-2023-05`
   585  	// * `TransferSecurityPolicy-2022-03`
   586  	// * `TransferSecurityPolicy-2020-06`
   587  	// * `TransferSecurityPolicy-2018-11`
   588  	// * `TransferSecurityPolicy-FIPS-2024-01`
   589  	// * `TransferSecurityPolicy-FIPS-2023-05`
   590  	// * `TransferSecurityPolicy-FIPS-2020-06`
   591  	// * `TransferSecurityPolicy-PQ-SSH-Experimental-2023-04`
   592  	// * `TransferSecurityPolicy-PQ-SSH-FIPS-Experimental-2023-04`
   593  	SecurityPolicyName *string `pulumi:"securityPolicyName"`
   594  	// A set of ARNs of destinations that will receive structured logs from the transfer server such as CloudWatch Log Group ARNs. If provided this enables the transfer server to emit structured logs to the specified locations.
   595  	StructuredLogDestinations []string `pulumi:"structuredLogDestinations"`
   596  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   597  	Tags map[string]string `pulumi:"tags"`
   598  	// URL of the service endpoint used to authenticate users with an `identityProviderType` of `API_GATEWAY`.
   599  	Url *string `pulumi:"url"`
   600  	// Specifies the workflow details. See `workflowDetails` block below for details.
   601  	WorkflowDetails *ServerWorkflowDetails `pulumi:"workflowDetails"`
   602  }
   603  
   604  // The set of arguments for constructing a Server resource.
   605  type ServerArgs struct {
   606  	// The Amazon Resource Name (ARN) of the AWS Certificate Manager (ACM) certificate. This is required when `protocols` is set to `FTPS`
   607  	Certificate pulumi.StringPtrInput
   608  	// The directory service ID of the directory service you want to connect to with an `identityProviderType` of `AWS_DIRECTORY_SERVICE`.
   609  	DirectoryId pulumi.StringPtrInput
   610  	// The domain of the storage system that is used for file transfers. Valid values are: `S3` and `EFS`. The default value is `S3`.
   611  	Domain pulumi.StringPtrInput
   612  	// The virtual private cloud (VPC) endpoint settings that you want to configure for your SFTP server. See `endpointDetails` block below for details.
   613  	EndpointDetails ServerEndpointDetailsPtrInput
   614  	// The type of endpoint that you want your SFTP server connect to. If you connect to a `VPC` (or `VPC_ENDPOINT`), your SFTP server isn't accessible over the public internet. If you want to connect your SFTP server via public internet, set `PUBLIC`.  Defaults to `PUBLIC`.
   615  	EndpointType pulumi.StringPtrInput
   616  	// A boolean that indicates all users associated with the server should be deleted so that the Server can be destroyed without error. The default value is `false`. This option only applies to servers configured with a `SERVICE_MANAGED` `identityProviderType`.
   617  	ForceDestroy pulumi.BoolPtrInput
   618  	// The ARN for a lambda function to use for the Identity provider.
   619  	Function pulumi.StringPtrInput
   620  	// RSA, ECDSA, or ED25519 private key (e.g., as generated by the `ssh-keygen -t rsa -b 2048 -N "" -m PEM -f my-new-server-key`, `ssh-keygen -t ecdsa -b 256 -N "" -m PEM -f my-new-server-key` or `ssh-keygen -t ed25519 -N "" -f my-new-server-key` commands).
   621  	HostKey pulumi.StringPtrInput
   622  	// The mode of authentication enabled for this service. The default value is `SERVICE_MANAGED`, which allows you to store and access SFTP user credentials within the service. `API_GATEWAY` indicates that user authentication requires a call to an API Gateway endpoint URL provided by you to integrate an identity provider of your choice. Using `AWS_DIRECTORY_SERVICE` will allow for authentication against AWS Managed Active Directory or Microsoft Active Directory in your on-premises environment, or in AWS using AD Connectors. Use the `AWS_LAMBDA` value to directly use a Lambda function as your identity provider. If you choose this value, you must specify the ARN for the lambda function in the `function` argument.
   623  	IdentityProviderType pulumi.StringPtrInput
   624  	// Amazon Resource Name (ARN) of the IAM role used to authenticate the user account with an `identityProviderType` of `API_GATEWAY`.
   625  	InvocationRole pulumi.StringPtrInput
   626  	// Amazon Resource Name (ARN) of an IAM role that allows the service to write your SFTP users’ activity to your Amazon CloudWatch logs for monitoring and auditing purposes.
   627  	LoggingRole pulumi.StringPtrInput
   628  	// Specify a string to display when users connect to a server. This string is displayed after the user authenticates. The SFTP protocol does not support post-authentication display banners.
   629  	PostAuthenticationLoginBanner pulumi.StringPtrInput
   630  	// Specify a string to display when users connect to a server. This string is displayed before the user authenticates.
   631  	PreAuthenticationLoginBanner pulumi.StringPtrInput
   632  	// The protocol settings that are configured for your server. See `protocolDetails` block below for details.
   633  	ProtocolDetails ServerProtocolDetailsPtrInput
   634  	// Specifies the file transfer protocol or protocols over which your file transfer protocol client can connect to your server's endpoint. This defaults to `SFTP` . The available protocols are:
   635  	Protocols pulumi.StringArrayInput
   636  	// Specifies whether or not performance for your Amazon S3 directories is optimized. This is disabled by default. See `s3StorageOptions` block below for details.
   637  	S3StorageOptions ServerS3StorageOptionsPtrInput
   638  	// Specifies the name of the security policy that is attached to the server. Default value is: `TransferSecurityPolicy-2018-11`. The available values are:
   639  	// * `TransferSecurityPolicy-2024-01`
   640  	// * `TransferSecurityPolicy-2023-05`
   641  	// * `TransferSecurityPolicy-2022-03`
   642  	// * `TransferSecurityPolicy-2020-06`
   643  	// * `TransferSecurityPolicy-2018-11`
   644  	// * `TransferSecurityPolicy-FIPS-2024-01`
   645  	// * `TransferSecurityPolicy-FIPS-2023-05`
   646  	// * `TransferSecurityPolicy-FIPS-2020-06`
   647  	// * `TransferSecurityPolicy-PQ-SSH-Experimental-2023-04`
   648  	// * `TransferSecurityPolicy-PQ-SSH-FIPS-Experimental-2023-04`
   649  	SecurityPolicyName pulumi.StringPtrInput
   650  	// A set of ARNs of destinations that will receive structured logs from the transfer server such as CloudWatch Log Group ARNs. If provided this enables the transfer server to emit structured logs to the specified locations.
   651  	StructuredLogDestinations pulumi.StringArrayInput
   652  	// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   653  	Tags pulumi.StringMapInput
   654  	// URL of the service endpoint used to authenticate users with an `identityProviderType` of `API_GATEWAY`.
   655  	Url pulumi.StringPtrInput
   656  	// Specifies the workflow details. See `workflowDetails` block below for details.
   657  	WorkflowDetails ServerWorkflowDetailsPtrInput
   658  }
   659  
   660  func (ServerArgs) ElementType() reflect.Type {
   661  	return reflect.TypeOf((*serverArgs)(nil)).Elem()
   662  }
   663  
   664  type ServerInput interface {
   665  	pulumi.Input
   666  
   667  	ToServerOutput() ServerOutput
   668  	ToServerOutputWithContext(ctx context.Context) ServerOutput
   669  }
   670  
   671  func (*Server) ElementType() reflect.Type {
   672  	return reflect.TypeOf((**Server)(nil)).Elem()
   673  }
   674  
   675  func (i *Server) ToServerOutput() ServerOutput {
   676  	return i.ToServerOutputWithContext(context.Background())
   677  }
   678  
   679  func (i *Server) ToServerOutputWithContext(ctx context.Context) ServerOutput {
   680  	return pulumi.ToOutputWithContext(ctx, i).(ServerOutput)
   681  }
   682  
   683  // ServerArrayInput is an input type that accepts ServerArray and ServerArrayOutput values.
   684  // You can construct a concrete instance of `ServerArrayInput` via:
   685  //
   686  //	ServerArray{ ServerArgs{...} }
   687  type ServerArrayInput interface {
   688  	pulumi.Input
   689  
   690  	ToServerArrayOutput() ServerArrayOutput
   691  	ToServerArrayOutputWithContext(context.Context) ServerArrayOutput
   692  }
   693  
   694  type ServerArray []ServerInput
   695  
   696  func (ServerArray) ElementType() reflect.Type {
   697  	return reflect.TypeOf((*[]*Server)(nil)).Elem()
   698  }
   699  
   700  func (i ServerArray) ToServerArrayOutput() ServerArrayOutput {
   701  	return i.ToServerArrayOutputWithContext(context.Background())
   702  }
   703  
   704  func (i ServerArray) ToServerArrayOutputWithContext(ctx context.Context) ServerArrayOutput {
   705  	return pulumi.ToOutputWithContext(ctx, i).(ServerArrayOutput)
   706  }
   707  
   708  // ServerMapInput is an input type that accepts ServerMap and ServerMapOutput values.
   709  // You can construct a concrete instance of `ServerMapInput` via:
   710  //
   711  //	ServerMap{ "key": ServerArgs{...} }
   712  type ServerMapInput interface {
   713  	pulumi.Input
   714  
   715  	ToServerMapOutput() ServerMapOutput
   716  	ToServerMapOutputWithContext(context.Context) ServerMapOutput
   717  }
   718  
   719  type ServerMap map[string]ServerInput
   720  
   721  func (ServerMap) ElementType() reflect.Type {
   722  	return reflect.TypeOf((*map[string]*Server)(nil)).Elem()
   723  }
   724  
   725  func (i ServerMap) ToServerMapOutput() ServerMapOutput {
   726  	return i.ToServerMapOutputWithContext(context.Background())
   727  }
   728  
   729  func (i ServerMap) ToServerMapOutputWithContext(ctx context.Context) ServerMapOutput {
   730  	return pulumi.ToOutputWithContext(ctx, i).(ServerMapOutput)
   731  }
   732  
   733  type ServerOutput struct{ *pulumi.OutputState }
   734  
   735  func (ServerOutput) ElementType() reflect.Type {
   736  	return reflect.TypeOf((**Server)(nil)).Elem()
   737  }
   738  
   739  func (o ServerOutput) ToServerOutput() ServerOutput {
   740  	return o
   741  }
   742  
   743  func (o ServerOutput) ToServerOutputWithContext(ctx context.Context) ServerOutput {
   744  	return o
   745  }
   746  
   747  // Amazon Resource Name (ARN) of Transfer Server
   748  func (o ServerOutput) Arn() pulumi.StringOutput {
   749  	return o.ApplyT(func(v *Server) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   750  }
   751  
   752  // The Amazon Resource Name (ARN) of the AWS Certificate Manager (ACM) certificate. This is required when `protocols` is set to `FTPS`
   753  func (o ServerOutput) Certificate() pulumi.StringPtrOutput {
   754  	return o.ApplyT(func(v *Server) pulumi.StringPtrOutput { return v.Certificate }).(pulumi.StringPtrOutput)
   755  }
   756  
   757  // The directory service ID of the directory service you want to connect to with an `identityProviderType` of `AWS_DIRECTORY_SERVICE`.
   758  func (o ServerOutput) DirectoryId() pulumi.StringPtrOutput {
   759  	return o.ApplyT(func(v *Server) pulumi.StringPtrOutput { return v.DirectoryId }).(pulumi.StringPtrOutput)
   760  }
   761  
   762  // The domain of the storage system that is used for file transfers. Valid values are: `S3` and `EFS`. The default value is `S3`.
   763  func (o ServerOutput) Domain() pulumi.StringPtrOutput {
   764  	return o.ApplyT(func(v *Server) pulumi.StringPtrOutput { return v.Domain }).(pulumi.StringPtrOutput)
   765  }
   766  
   767  // The endpoint of the Transfer Server (e.g., `s-12345678.server.transfer.REGION.amazonaws.com`)
   768  func (o ServerOutput) Endpoint() pulumi.StringOutput {
   769  	return o.ApplyT(func(v *Server) pulumi.StringOutput { return v.Endpoint }).(pulumi.StringOutput)
   770  }
   771  
   772  // The virtual private cloud (VPC) endpoint settings that you want to configure for your SFTP server. See `endpointDetails` block below for details.
   773  func (o ServerOutput) EndpointDetails() ServerEndpointDetailsPtrOutput {
   774  	return o.ApplyT(func(v *Server) ServerEndpointDetailsPtrOutput { return v.EndpointDetails }).(ServerEndpointDetailsPtrOutput)
   775  }
   776  
   777  // The type of endpoint that you want your SFTP server connect to. If you connect to a `VPC` (or `VPC_ENDPOINT`), your SFTP server isn't accessible over the public internet. If you want to connect your SFTP server via public internet, set `PUBLIC`.  Defaults to `PUBLIC`.
   778  func (o ServerOutput) EndpointType() pulumi.StringPtrOutput {
   779  	return o.ApplyT(func(v *Server) pulumi.StringPtrOutput { return v.EndpointType }).(pulumi.StringPtrOutput)
   780  }
   781  
   782  // A boolean that indicates all users associated with the server should be deleted so that the Server can be destroyed without error. The default value is `false`. This option only applies to servers configured with a `SERVICE_MANAGED` `identityProviderType`.
   783  func (o ServerOutput) ForceDestroy() pulumi.BoolPtrOutput {
   784  	return o.ApplyT(func(v *Server) pulumi.BoolPtrOutput { return v.ForceDestroy }).(pulumi.BoolPtrOutput)
   785  }
   786  
   787  // The ARN for a lambda function to use for the Identity provider.
   788  func (o ServerOutput) Function() pulumi.StringPtrOutput {
   789  	return o.ApplyT(func(v *Server) pulumi.StringPtrOutput { return v.Function }).(pulumi.StringPtrOutput)
   790  }
   791  
   792  // RSA, ECDSA, or ED25519 private key (e.g., as generated by the `ssh-keygen -t rsa -b 2048 -N "" -m PEM -f my-new-server-key`, `ssh-keygen -t ecdsa -b 256 -N "" -m PEM -f my-new-server-key` or `ssh-keygen -t ed25519 -N "" -f my-new-server-key` commands).
   793  func (o ServerOutput) HostKey() pulumi.StringPtrOutput {
   794  	return o.ApplyT(func(v *Server) pulumi.StringPtrOutput { return v.HostKey }).(pulumi.StringPtrOutput)
   795  }
   796  
   797  // This value contains the message-digest algorithm (MD5) hash of the server's host key. This value is equivalent to the output of the `ssh-keygen -l -E md5 -f my-new-server-key` command.
   798  func (o ServerOutput) HostKeyFingerprint() pulumi.StringOutput {
   799  	return o.ApplyT(func(v *Server) pulumi.StringOutput { return v.HostKeyFingerprint }).(pulumi.StringOutput)
   800  }
   801  
   802  // The mode of authentication enabled for this service. The default value is `SERVICE_MANAGED`, which allows you to store and access SFTP user credentials within the service. `API_GATEWAY` indicates that user authentication requires a call to an API Gateway endpoint URL provided by you to integrate an identity provider of your choice. Using `AWS_DIRECTORY_SERVICE` will allow for authentication against AWS Managed Active Directory or Microsoft Active Directory in your on-premises environment, or in AWS using AD Connectors. Use the `AWS_LAMBDA` value to directly use a Lambda function as your identity provider. If you choose this value, you must specify the ARN for the lambda function in the `function` argument.
   803  func (o ServerOutput) IdentityProviderType() pulumi.StringPtrOutput {
   804  	return o.ApplyT(func(v *Server) pulumi.StringPtrOutput { return v.IdentityProviderType }).(pulumi.StringPtrOutput)
   805  }
   806  
   807  // Amazon Resource Name (ARN) of the IAM role used to authenticate the user account with an `identityProviderType` of `API_GATEWAY`.
   808  func (o ServerOutput) InvocationRole() pulumi.StringPtrOutput {
   809  	return o.ApplyT(func(v *Server) pulumi.StringPtrOutput { return v.InvocationRole }).(pulumi.StringPtrOutput)
   810  }
   811  
   812  // Amazon Resource Name (ARN) of an IAM role that allows the service to write your SFTP users’ activity to your Amazon CloudWatch logs for monitoring and auditing purposes.
   813  func (o ServerOutput) LoggingRole() pulumi.StringPtrOutput {
   814  	return o.ApplyT(func(v *Server) pulumi.StringPtrOutput { return v.LoggingRole }).(pulumi.StringPtrOutput)
   815  }
   816  
   817  // Specify a string to display when users connect to a server. This string is displayed after the user authenticates. The SFTP protocol does not support post-authentication display banners.
   818  func (o ServerOutput) PostAuthenticationLoginBanner() pulumi.StringPtrOutput {
   819  	return o.ApplyT(func(v *Server) pulumi.StringPtrOutput { return v.PostAuthenticationLoginBanner }).(pulumi.StringPtrOutput)
   820  }
   821  
   822  // Specify a string to display when users connect to a server. This string is displayed before the user authenticates.
   823  func (o ServerOutput) PreAuthenticationLoginBanner() pulumi.StringPtrOutput {
   824  	return o.ApplyT(func(v *Server) pulumi.StringPtrOutput { return v.PreAuthenticationLoginBanner }).(pulumi.StringPtrOutput)
   825  }
   826  
   827  // The protocol settings that are configured for your server. See `protocolDetails` block below for details.
   828  func (o ServerOutput) ProtocolDetails() ServerProtocolDetailsOutput {
   829  	return o.ApplyT(func(v *Server) ServerProtocolDetailsOutput { return v.ProtocolDetails }).(ServerProtocolDetailsOutput)
   830  }
   831  
   832  // Specifies the file transfer protocol or protocols over which your file transfer protocol client can connect to your server's endpoint. This defaults to `SFTP` . The available protocols are:
   833  func (o ServerOutput) Protocols() pulumi.StringArrayOutput {
   834  	return o.ApplyT(func(v *Server) pulumi.StringArrayOutput { return v.Protocols }).(pulumi.StringArrayOutput)
   835  }
   836  
   837  // Specifies whether or not performance for your Amazon S3 directories is optimized. This is disabled by default. See `s3StorageOptions` block below for details.
   838  func (o ServerOutput) S3StorageOptions() ServerS3StorageOptionsOutput {
   839  	return o.ApplyT(func(v *Server) ServerS3StorageOptionsOutput { return v.S3StorageOptions }).(ServerS3StorageOptionsOutput)
   840  }
   841  
   842  // Specifies the name of the security policy that is attached to the server. Default value is: `TransferSecurityPolicy-2018-11`. The available values are:
   843  // * `TransferSecurityPolicy-2024-01`
   844  // * `TransferSecurityPolicy-2023-05`
   845  // * `TransferSecurityPolicy-2022-03`
   846  // * `TransferSecurityPolicy-2020-06`
   847  // * `TransferSecurityPolicy-2018-11`
   848  // * `TransferSecurityPolicy-FIPS-2024-01`
   849  // * `TransferSecurityPolicy-FIPS-2023-05`
   850  // * `TransferSecurityPolicy-FIPS-2020-06`
   851  // * `TransferSecurityPolicy-PQ-SSH-Experimental-2023-04`
   852  // * `TransferSecurityPolicy-PQ-SSH-FIPS-Experimental-2023-04`
   853  func (o ServerOutput) SecurityPolicyName() pulumi.StringPtrOutput {
   854  	return o.ApplyT(func(v *Server) pulumi.StringPtrOutput { return v.SecurityPolicyName }).(pulumi.StringPtrOutput)
   855  }
   856  
   857  // A set of ARNs of destinations that will receive structured logs from the transfer server such as CloudWatch Log Group ARNs. If provided this enables the transfer server to emit structured logs to the specified locations.
   858  func (o ServerOutput) StructuredLogDestinations() pulumi.StringArrayOutput {
   859  	return o.ApplyT(func(v *Server) pulumi.StringArrayOutput { return v.StructuredLogDestinations }).(pulumi.StringArrayOutput)
   860  }
   861  
   862  // A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   863  func (o ServerOutput) Tags() pulumi.StringMapOutput {
   864  	return o.ApplyT(func(v *Server) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   865  }
   866  
   867  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   868  //
   869  // Deprecated: Please use `tags` instead.
   870  func (o ServerOutput) TagsAll() pulumi.StringMapOutput {
   871  	return o.ApplyT(func(v *Server) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   872  }
   873  
   874  // URL of the service endpoint used to authenticate users with an `identityProviderType` of `API_GATEWAY`.
   875  func (o ServerOutput) Url() pulumi.StringPtrOutput {
   876  	return o.ApplyT(func(v *Server) pulumi.StringPtrOutput { return v.Url }).(pulumi.StringPtrOutput)
   877  }
   878  
   879  // Specifies the workflow details. See `workflowDetails` block below for details.
   880  func (o ServerOutput) WorkflowDetails() ServerWorkflowDetailsPtrOutput {
   881  	return o.ApplyT(func(v *Server) ServerWorkflowDetailsPtrOutput { return v.WorkflowDetails }).(ServerWorkflowDetailsPtrOutput)
   882  }
   883  
   884  type ServerArrayOutput struct{ *pulumi.OutputState }
   885  
   886  func (ServerArrayOutput) ElementType() reflect.Type {
   887  	return reflect.TypeOf((*[]*Server)(nil)).Elem()
   888  }
   889  
   890  func (o ServerArrayOutput) ToServerArrayOutput() ServerArrayOutput {
   891  	return o
   892  }
   893  
   894  func (o ServerArrayOutput) ToServerArrayOutputWithContext(ctx context.Context) ServerArrayOutput {
   895  	return o
   896  }
   897  
   898  func (o ServerArrayOutput) Index(i pulumi.IntInput) ServerOutput {
   899  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Server {
   900  		return vs[0].([]*Server)[vs[1].(int)]
   901  	}).(ServerOutput)
   902  }
   903  
   904  type ServerMapOutput struct{ *pulumi.OutputState }
   905  
   906  func (ServerMapOutput) ElementType() reflect.Type {
   907  	return reflect.TypeOf((*map[string]*Server)(nil)).Elem()
   908  }
   909  
   910  func (o ServerMapOutput) ToServerMapOutput() ServerMapOutput {
   911  	return o
   912  }
   913  
   914  func (o ServerMapOutput) ToServerMapOutputWithContext(ctx context.Context) ServerMapOutput {
   915  	return o
   916  }
   917  
   918  func (o ServerMapOutput) MapIndex(k pulumi.StringInput) ServerOutput {
   919  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Server {
   920  		return vs[0].(map[string]*Server)[vs[1].(string)]
   921  	}).(ServerOutput)
   922  }
   923  
   924  func init() {
   925  	pulumi.RegisterInputType(reflect.TypeOf((*ServerInput)(nil)).Elem(), &Server{})
   926  	pulumi.RegisterInputType(reflect.TypeOf((*ServerArrayInput)(nil)).Elem(), ServerArray{})
   927  	pulumi.RegisterInputType(reflect.TypeOf((*ServerMapInput)(nil)).Elem(), ServerMap{})
   928  	pulumi.RegisterOutputType(ServerOutput{})
   929  	pulumi.RegisterOutputType(ServerArrayOutput{})
   930  	pulumi.RegisterOutputType(ServerMapOutput{})
   931  }