aws-sdk-transfer 1.38.0 → 1.42.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -285,6 +285,15 @@ module Aws::Transfer
285
285
  # ** Please note ** When response stubbing is enabled, no HTTP
286
286
  # requests are made, and retries are disabled.
287
287
  #
288
+ # @option options [Boolean] :use_dualstack_endpoint
289
+ # When set to `true`, dualstack enabled endpoints (with `.aws` TLD)
290
+ # will be used if available.
291
+ #
292
+ # @option options [Boolean] :use_fips_endpoint
293
+ # When set to `true`, fips compatible endpoints will be used if available.
294
+ # When a `fips` region is used, the region is normalized and this config
295
+ # is set to `true`.
296
+ #
288
297
  # @option options [Boolean] :validate_params (true)
289
298
  # When `true`, request parameters are validated before
290
299
  # sending the request.
@@ -356,9 +365,8 @@ module Aws::Transfer
356
365
  # directory to be when they log into the server. If you set it to
357
366
  # `PATH`, the user will see the absolute Amazon S3 bucket or EFS paths
358
367
  # as is in their file transfer protocol clients. If you set it
359
- # `LOGICAL`, you will need to provide mappings in the
360
- # `HomeDirectoryMappings` for how you want to make Amazon S3 or EFS
361
- # paths visible to your users.
368
+ # `LOGICAL`, you need to provide mappings in the `HomeDirectoryMappings`
369
+ # for how you want to make Amazon S3 or EFS paths visible to your users.
362
370
  #
363
371
  # @option params [Array<Types::HomeDirectoryMapEntry>] :home_directory_mappings
364
372
  # Logical directory mappings that specify what Amazon S3 or Amazon EFS
@@ -373,13 +381,13 @@ module Aws::Transfer
373
381
  #
374
382
  # The following is an `Entry` and `Target` pair example.
375
383
  #
376
- # `[ \{ "Entry": "your-personal-report.pdf", "Target":
377
- # "/bucket3/customized-reports/$\{transfer:UserName\}.pdf" \} ]`
384
+ # `[ \{ "Entry": "/directory1", "Target":
385
+ # "/bucket_name/home/mydirectory" \} ]`
378
386
  #
379
- # In most cases, you can use this value instead of the scope-down policy
380
- # to lock down your user to the designated home directory
381
- # ("`chroot`"). To do this, you can set `Entry` to `/` and set
382
- # `Target` to the `HomeDirectory` parameter value.
387
+ # In most cases, you can use this value instead of the session policy to
388
+ # lock down your user to the designated home directory ("`chroot`").
389
+ # To do this, you can set `Entry` to `/` and set `Target` to the
390
+ # `HomeDirectory` parameter value.
383
391
  #
384
392
  # The following is an `Entry` and `Target` pair example for `chroot`.
385
393
  #
@@ -397,22 +405,21 @@ module Aws::Transfer
397
405
  # </note>
398
406
  #
399
407
  # @option params [String] :policy
400
- # A scope-down policy for your user so that you can use the same IAM
401
- # role across multiple users. This policy scopes down user access to
402
- # portions of their Amazon S3 bucket. Variables that you can use inside
403
- # this policy include `$\{Transfer:UserName\}`,
408
+ # A session policy for your user so that you can use the same IAM role
409
+ # across multiple users. This policy scopes down user access to portions
410
+ # of their Amazon S3 bucket. Variables that you can use inside this
411
+ # policy include `$\{Transfer:UserName\}`,
404
412
  # `$\{Transfer:HomeDirectory\}`, and `$\{Transfer:HomeBucket\}`.
405
413
  #
406
- # <note markdown="1"> This only applies when domain of `ServerId` is S3. Amazon EFS does not
407
- # use scope-down policies.
414
+ # <note markdown="1"> This only applies when the domain of `ServerId` is S3. EFS does not
415
+ # use session policies.
408
416
  #
409
- # For scope-down policies, Amazon Web Services Transfer Family stores
410
- # the policy as a JSON blob, instead of the Amazon Resource Name (ARN)
411
- # of the policy. You save the policy as a JSON blob and pass it in the
417
+ # For session policies, Amazon Web Services Transfer Family stores the
418
+ # policy as a JSON blob, instead of the Amazon Resource Name (ARN) of
419
+ # the policy. You save the policy as a JSON blob and pass it in the
412
420
  # `Policy` argument.
413
421
  #
414
- # For an example of a scope-down policy, see [Example scope-down
415
- # policy][1].
422
+ # For an example of a session policy, see [Example session policy][1].
416
423
  #
417
424
  # For more information, see [AssumeRole][2] in the *Amazon Web Services
418
425
  # Security Token Service API Reference*.
@@ -421,7 +428,7 @@ module Aws::Transfer
421
428
  #
422
429
  #
423
430
  #
424
- # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/scope-down-policy.html
431
+ # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/session-policy.html
425
432
  # [2]: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html
426
433
  #
427
434
  # @option params [Types::PosixProfile] :posix_profile
@@ -677,6 +684,10 @@ module Aws::Transfer
677
684
  # @option params [Array<Types::Tag>] :tags
678
685
  # Key-value pairs that can be used to group and search for servers.
679
686
  #
687
+ # @option params [Types::WorkflowDetails] :workflow_details
688
+ # Specifies the workflow ID for the workflow to assign and the execution
689
+ # role used for executing the workflow.
690
+ #
680
691
  # @return [Types::CreateServerResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
681
692
  #
682
693
  # * {Types::CreateServerResponse#server_id #server_id} => String
@@ -710,6 +721,14 @@ module Aws::Transfer
710
721
  # value: "TagValue", # required
711
722
  # },
712
723
  # ],
724
+ # workflow_details: {
725
+ # on_upload: [ # required
726
+ # {
727
+ # workflow_id: "WorkflowId", # required
728
+ # execution_role: "Role", # required
729
+ # },
730
+ # ],
731
+ # },
713
732
  # })
714
733
  #
715
734
  # @example Response structure
@@ -731,8 +750,8 @@ module Aws::Transfer
731
750
  # Using parameters for `CreateUser`, you can specify the user name, set
732
751
  # the home directory, store the user's public key, and assign the
733
752
  # user's Amazon Web Services Identity and Access Management (IAM) role.
734
- # You can also optionally add a scope-down policy, and assign metadata
735
- # with tags that can be used to group and search for users.
753
+ # You can also optionally add a session policy, and assign metadata with
754
+ # tags that can be used to group and search for users.
736
755
  #
737
756
  # @option params [String] :home_directory
738
757
  # The landing directory (folder) for a user when they log in to the
@@ -745,9 +764,8 @@ module Aws::Transfer
745
764
  # directory to be when they log into the server. If you set it to
746
765
  # `PATH`, the user will see the absolute Amazon S3 bucket or EFS paths
747
766
  # as is in their file transfer protocol clients. If you set it
748
- # `LOGICAL`, you will need to provide mappings in the
749
- # `HomeDirectoryMappings` for how you want to make Amazon S3 or EFS
750
- # paths visible to your users.
767
+ # `LOGICAL`, you need to provide mappings in the `HomeDirectoryMappings`
768
+ # for how you want to make Amazon S3 or EFS paths visible to your users.
751
769
  #
752
770
  # @option params [Array<Types::HomeDirectoryMapEntry>] :home_directory_mappings
753
771
  # Logical directory mappings that specify what Amazon S3 or Amazon EFS
@@ -762,13 +780,13 @@ module Aws::Transfer
762
780
  #
763
781
  # The following is an `Entry` and `Target` pair example.
764
782
  #
765
- # `[ \{ "Entry": "your-personal-report.pdf", "Target":
766
- # "/bucket3/customized-reports/$\{transfer:UserName\}.pdf" \} ]`
783
+ # `[ \{ "Entry": "/directory1", "Target":
784
+ # "/bucket_name/home/mydirectory" \} ]`
767
785
  #
768
- # In most cases, you can use this value instead of the scope-down policy
769
- # to lock your user down to the designated home directory
770
- # ("`chroot`"). To do this, you can set `Entry` to `/` and set
771
- # `Target` to the HomeDirectory parameter value.
786
+ # In most cases, you can use this value instead of the session policy to
787
+ # lock your user down to the designated home directory ("`chroot`").
788
+ # To do this, you can set `Entry` to `/` and set `Target` to the
789
+ # HomeDirectory parameter value.
772
790
  #
773
791
  # The following is an `Entry` and `Target` pair example for `chroot`.
774
792
  #
@@ -786,22 +804,21 @@ module Aws::Transfer
786
804
  # </note>
787
805
  #
788
806
  # @option params [String] :policy
789
- # A scope-down policy for your user so that you can use the same IAM
790
- # role across multiple users. This policy scopes down user access to
791
- # portions of their Amazon S3 bucket. Variables that you can use inside
792
- # this policy include `$\{Transfer:UserName\}`,
807
+ # A session policy for your user so that you can use the same IAM role
808
+ # across multiple users. This policy scopes down user access to portions
809
+ # of their Amazon S3 bucket. Variables that you can use inside this
810
+ # policy include `$\{Transfer:UserName\}`,
793
811
  # `$\{Transfer:HomeDirectory\}`, and `$\{Transfer:HomeBucket\}`.
794
812
  #
795
- # <note markdown="1"> This only applies when domain of ServerId is S3. EFS does not use
796
- # scope down policy.
813
+ # <note markdown="1"> This only applies when the domain of `ServerId` is S3. EFS does not
814
+ # use session policies.
797
815
  #
798
- # For scope-down policies, Amazon Web Services Transfer Family stores
799
- # the policy as a JSON blob, instead of the Amazon Resource Name (ARN)
800
- # of the policy. You save the policy as a JSON blob and pass it in the
816
+ # For session policies, Amazon Web Services Transfer Family stores the
817
+ # policy as a JSON blob, instead of the Amazon Resource Name (ARN) of
818
+ # the policy. You save the policy as a JSON blob and pass it in the
801
819
  # `Policy` argument.
802
820
  #
803
- # For an example of a scope-down policy, see [Example scope-down
804
- # policy][1].
821
+ # For an example of a session policy, see [Example session policy][1].
805
822
  #
806
823
  # For more information, see [AssumeRole][2] in the *Amazon Web Services
807
824
  # Security Token Service API Reference*.
@@ -810,7 +827,7 @@ module Aws::Transfer
810
827
  #
811
828
  #
812
829
  #
813
- # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/scope-down-policy.html
830
+ # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/session-policy.html
814
831
  # [2]: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html
815
832
  #
816
833
  # @option params [Types::PosixProfile] :posix_profile
@@ -843,12 +860,11 @@ module Aws::Transfer
843
860
  # are metadata attached to users for any purpose.
844
861
  #
845
862
  # @option params [required, String] :user_name
846
- # A unique string that identifies a user and is associated with a as
847
- # specified by the `ServerId`. This user name must be a minimum of 3 and
848
- # a maximum of 100 characters long. The following are valid characters:
849
- # a-z, A-Z, 0-9, underscore '\_', hyphen '-', period '.', and at
850
- # sign '@'. The user name can't start with a hyphen, period, or at
851
- # sign.
863
+ # A unique string that identifies a user and is associated with a
864
+ # `ServerId`. This user name must be a minimum of 3 and a maximum of 100
865
+ # characters long. The following are valid characters: a-z, A-Z, 0-9,
866
+ # underscore '\_', hyphen '-', period '.', and at sign '@'. The
867
+ # user name can't start with a hyphen, period, or at sign.
852
868
  #
853
869
  # @return [Types::CreateUserResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
854
870
  #
@@ -898,6 +914,153 @@ module Aws::Transfer
898
914
  req.send_request(options)
899
915
  end
900
916
 
917
+ # Allows you to create a workflow with specified steps and step details
918
+ # the workflow invokes after file transfer completes. After creating a
919
+ # workflow, you can associate the workflow created with any transfer
920
+ # servers by specifying the `workflow-details` field in `CreateServer`
921
+ # and `UpdateServer` operations.
922
+ #
923
+ # @option params [String] :description
924
+ # A textual description for the workflow.
925
+ #
926
+ # @option params [required, Array<Types::WorkflowStep>] :steps
927
+ # Specifies the details for the steps that are in the specified
928
+ # workflow.
929
+ #
930
+ # The `TYPE` specifies which of the following actions is being taken for
931
+ # this step.
932
+ #
933
+ # * *Copy*\: copy the file to another location
934
+ #
935
+ # * *Custom*\: custom step with a lambda target
936
+ #
937
+ # * *Delete*\: delete the file
938
+ #
939
+ # * *Tag*\: add a tag to the file
940
+ #
941
+ # <note markdown="1"> Currently, copying and tagging are supported only on S3.
942
+ #
943
+ # </note>
944
+ #
945
+ # For file location, you specify either the S3 bucket and key, or the
946
+ # EFS filesystem ID and path.
947
+ #
948
+ # @option params [Array<Types::WorkflowStep>] :on_exception_steps
949
+ # Specifies the steps (actions) to take if errors are encountered during
950
+ # execution of the workflow.
951
+ #
952
+ # <note markdown="1"> For custom steps, the lambda function needs to send `FAILURE` to the
953
+ # call back API to kick off the exception steps. Additionally, if the
954
+ # lambda does not send `SUCCESS` before it times out, the exception
955
+ # steps are executed.
956
+ #
957
+ # </note>
958
+ #
959
+ # @option params [Array<Types::Tag>] :tags
960
+ # Key-value pairs that can be used to group and search for workflows.
961
+ # Tags are metadata attached to workflows for any purpose.
962
+ #
963
+ # @return [Types::CreateWorkflowResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
964
+ #
965
+ # * {Types::CreateWorkflowResponse#workflow_id #workflow_id} => String
966
+ #
967
+ # @example Request syntax with placeholder values
968
+ #
969
+ # resp = client.create_workflow({
970
+ # description: "WorkflowDescription",
971
+ # steps: [ # required
972
+ # {
973
+ # type: "COPY", # accepts COPY, CUSTOM, TAG, DELETE
974
+ # copy_step_details: {
975
+ # name: "WorkflowStepName",
976
+ # destination_file_location: {
977
+ # s3_file_location: {
978
+ # bucket: "S3Bucket",
979
+ # key: "S3Key",
980
+ # },
981
+ # efs_file_location: {
982
+ # file_system_id: "EfsFileSystemId",
983
+ # path: "EfsPath",
984
+ # },
985
+ # },
986
+ # overwrite_existing: "TRUE", # accepts TRUE, FALSE
987
+ # },
988
+ # custom_step_details: {
989
+ # name: "WorkflowStepName",
990
+ # target: "CustomStepTarget",
991
+ # timeout_seconds: 1,
992
+ # },
993
+ # delete_step_details: {
994
+ # name: "WorkflowStepName",
995
+ # },
996
+ # tag_step_details: {
997
+ # name: "WorkflowStepName",
998
+ # tags: [
999
+ # {
1000
+ # key: "S3TagKey", # required
1001
+ # value: "S3TagValue", # required
1002
+ # },
1003
+ # ],
1004
+ # },
1005
+ # },
1006
+ # ],
1007
+ # on_exception_steps: [
1008
+ # {
1009
+ # type: "COPY", # accepts COPY, CUSTOM, TAG, DELETE
1010
+ # copy_step_details: {
1011
+ # name: "WorkflowStepName",
1012
+ # destination_file_location: {
1013
+ # s3_file_location: {
1014
+ # bucket: "S3Bucket",
1015
+ # key: "S3Key",
1016
+ # },
1017
+ # efs_file_location: {
1018
+ # file_system_id: "EfsFileSystemId",
1019
+ # path: "EfsPath",
1020
+ # },
1021
+ # },
1022
+ # overwrite_existing: "TRUE", # accepts TRUE, FALSE
1023
+ # },
1024
+ # custom_step_details: {
1025
+ # name: "WorkflowStepName",
1026
+ # target: "CustomStepTarget",
1027
+ # timeout_seconds: 1,
1028
+ # },
1029
+ # delete_step_details: {
1030
+ # name: "WorkflowStepName",
1031
+ # },
1032
+ # tag_step_details: {
1033
+ # name: "WorkflowStepName",
1034
+ # tags: [
1035
+ # {
1036
+ # key: "S3TagKey", # required
1037
+ # value: "S3TagValue", # required
1038
+ # },
1039
+ # ],
1040
+ # },
1041
+ # },
1042
+ # ],
1043
+ # tags: [
1044
+ # {
1045
+ # key: "TagKey", # required
1046
+ # value: "TagValue", # required
1047
+ # },
1048
+ # ],
1049
+ # })
1050
+ #
1051
+ # @example Response structure
1052
+ #
1053
+ # resp.workflow_id #=> String
1054
+ #
1055
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/CreateWorkflow AWS API Documentation
1056
+ #
1057
+ # @overload create_workflow(params = {})
1058
+ # @param [Hash] params ({})
1059
+ def create_workflow(params = {}, options = {})
1060
+ req = build_request(:create_workflow, params)
1061
+ req.send_request(options)
1062
+ end
1063
+
901
1064
  # Allows you to delete the access specified in the `ServerID` and
902
1065
  # `ExternalID` parameters.
903
1066
  #
@@ -968,8 +1131,6 @@ module Aws::Transfer
968
1131
 
969
1132
  # Deletes a user's Secure Shell (SSH) public key.
970
1133
  #
971
- # No response is returned from this operation.
972
- #
973
1134
  # @option params [required, String] :server_id
974
1135
  # A system-assigned unique identifier for a file transfer
975
1136
  # protocol-enabled server instance that has the user assigned to it.
@@ -1035,6 +1196,28 @@ module Aws::Transfer
1035
1196
  req.send_request(options)
1036
1197
  end
1037
1198
 
1199
+ # Deletes the specified workflow.
1200
+ #
1201
+ # @option params [required, String] :workflow_id
1202
+ # A unique identifier for the workflow.
1203
+ #
1204
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1205
+ #
1206
+ # @example Request syntax with placeholder values
1207
+ #
1208
+ # resp = client.delete_workflow({
1209
+ # workflow_id: "WorkflowId", # required
1210
+ # })
1211
+ #
1212
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DeleteWorkflow AWS API Documentation
1213
+ #
1214
+ # @overload delete_workflow(params = {})
1215
+ # @param [Hash] params ({})
1216
+ def delete_workflow(params = {}, options = {})
1217
+ req = build_request(:delete_workflow, params)
1218
+ req.send_request(options)
1219
+ end
1220
+
1038
1221
  # Describes the access that is assigned to the specific file transfer
1039
1222
  # protocol-enabled server, as identified by its `ServerId` property and
1040
1223
  # its `ExternalID`.
@@ -1102,6 +1285,68 @@ module Aws::Transfer
1102
1285
  req.send_request(options)
1103
1286
  end
1104
1287
 
1288
+ # You can use `DescribeExecution` to check the details of the execution
1289
+ # of the specified workflow.
1290
+ #
1291
+ # @option params [required, String] :execution_id
1292
+ # A unique identifier for the execution of a workflow.
1293
+ #
1294
+ # @option params [required, String] :workflow_id
1295
+ # A unique identifier for the workflow.
1296
+ #
1297
+ # @return [Types::DescribeExecutionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1298
+ #
1299
+ # * {Types::DescribeExecutionResponse#workflow_id #workflow_id} => String
1300
+ # * {Types::DescribeExecutionResponse#execution #execution} => Types::DescribedExecution
1301
+ #
1302
+ # @example Request syntax with placeholder values
1303
+ #
1304
+ # resp = client.describe_execution({
1305
+ # execution_id: "ExecutionId", # required
1306
+ # workflow_id: "WorkflowId", # required
1307
+ # })
1308
+ #
1309
+ # @example Response structure
1310
+ #
1311
+ # resp.workflow_id #=> String
1312
+ # resp.execution.execution_id #=> String
1313
+ # resp.execution.initial_file_location.s3_file_location.bucket #=> String
1314
+ # resp.execution.initial_file_location.s3_file_location.key #=> String
1315
+ # resp.execution.initial_file_location.s3_file_location.version_id #=> String
1316
+ # resp.execution.initial_file_location.s3_file_location.etag #=> String
1317
+ # resp.execution.initial_file_location.efs_file_location.file_system_id #=> String
1318
+ # resp.execution.initial_file_location.efs_file_location.path #=> String
1319
+ # resp.execution.service_metadata.user_details.user_name #=> String
1320
+ # resp.execution.service_metadata.user_details.server_id #=> String
1321
+ # resp.execution.service_metadata.user_details.session_id #=> String
1322
+ # resp.execution.execution_role #=> String
1323
+ # resp.execution.logging_configuration.logging_role #=> String
1324
+ # resp.execution.logging_configuration.log_group_name #=> String
1325
+ # resp.execution.posix_profile.uid #=> Integer
1326
+ # resp.execution.posix_profile.gid #=> Integer
1327
+ # resp.execution.posix_profile.secondary_gids #=> Array
1328
+ # resp.execution.posix_profile.secondary_gids[0] #=> Integer
1329
+ # resp.execution.status #=> String, one of "IN_PROGRESS", "COMPLETED", "EXCEPTION", "HANDLING_EXCEPTION"
1330
+ # resp.execution.results.steps #=> Array
1331
+ # resp.execution.results.steps[0].step_type #=> String, one of "COPY", "CUSTOM", "TAG", "DELETE"
1332
+ # resp.execution.results.steps[0].outputs #=> String
1333
+ # resp.execution.results.steps[0].error.type #=> String, one of "PERMISSION_DENIED"
1334
+ # resp.execution.results.steps[0].error.message #=> String
1335
+ # resp.execution.results.on_exception_steps #=> Array
1336
+ # resp.execution.results.on_exception_steps[0].step_type #=> String, one of "COPY", "CUSTOM", "TAG", "DELETE"
1337
+ # resp.execution.results.on_exception_steps[0].outputs #=> String
1338
+ # resp.execution.results.on_exception_steps[0].error.type #=> String, one of "PERMISSION_DENIED"
1339
+ # resp.execution.results.on_exception_steps[0].error.message #=> String
1340
+ #
1341
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeExecution AWS API Documentation
1342
+ #
1343
+ # @overload describe_execution(params = {})
1344
+ # @param [Hash] params ({})
1345
+ def describe_execution(params = {}, options = {})
1346
+ req = build_request(:describe_execution, params)
1347
+ req.send_request(options)
1348
+ end
1349
+
1105
1350
  # Describes the security policy that is attached to your file transfer
1106
1351
  # protocol-enabled server. The response contains a description of the
1107
1352
  # security policy's properties. For more information about security
@@ -1197,6 +1442,9 @@ module Aws::Transfer
1197
1442
  # resp.server.tags[0].key #=> String
1198
1443
  # resp.server.tags[0].value #=> String
1199
1444
  # resp.server.user_count #=> Integer
1445
+ # resp.server.workflow_details.on_upload #=> Array
1446
+ # resp.server.workflow_details.on_upload[0].workflow_id #=> String
1447
+ # resp.server.workflow_details.on_upload[0].execution_role #=> String
1200
1448
  #
1201
1449
  # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeServer AWS API Documentation
1202
1450
  #
@@ -1267,6 +1515,71 @@ module Aws::Transfer
1267
1515
  req.send_request(options)
1268
1516
  end
1269
1517
 
1518
+ # Describes the specified workflow.
1519
+ #
1520
+ # @option params [required, String] :workflow_id
1521
+ # A unique identifier for the workflow.
1522
+ #
1523
+ # @return [Types::DescribeWorkflowResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1524
+ #
1525
+ # * {Types::DescribeWorkflowResponse#workflow #workflow} => Types::DescribedWorkflow
1526
+ #
1527
+ # @example Request syntax with placeholder values
1528
+ #
1529
+ # resp = client.describe_workflow({
1530
+ # workflow_id: "WorkflowId", # required
1531
+ # })
1532
+ #
1533
+ # @example Response structure
1534
+ #
1535
+ # resp.workflow.arn #=> String
1536
+ # resp.workflow.description #=> String
1537
+ # resp.workflow.steps #=> Array
1538
+ # resp.workflow.steps[0].type #=> String, one of "COPY", "CUSTOM", "TAG", "DELETE"
1539
+ # resp.workflow.steps[0].copy_step_details.name #=> String
1540
+ # resp.workflow.steps[0].copy_step_details.destination_file_location.s3_file_location.bucket #=> String
1541
+ # resp.workflow.steps[0].copy_step_details.destination_file_location.s3_file_location.key #=> String
1542
+ # resp.workflow.steps[0].copy_step_details.destination_file_location.efs_file_location.file_system_id #=> String
1543
+ # resp.workflow.steps[0].copy_step_details.destination_file_location.efs_file_location.path #=> String
1544
+ # resp.workflow.steps[0].copy_step_details.overwrite_existing #=> String, one of "TRUE", "FALSE"
1545
+ # resp.workflow.steps[0].custom_step_details.name #=> String
1546
+ # resp.workflow.steps[0].custom_step_details.target #=> String
1547
+ # resp.workflow.steps[0].custom_step_details.timeout_seconds #=> Integer
1548
+ # resp.workflow.steps[0].delete_step_details.name #=> String
1549
+ # resp.workflow.steps[0].tag_step_details.name #=> String
1550
+ # resp.workflow.steps[0].tag_step_details.tags #=> Array
1551
+ # resp.workflow.steps[0].tag_step_details.tags[0].key #=> String
1552
+ # resp.workflow.steps[0].tag_step_details.tags[0].value #=> String
1553
+ # resp.workflow.on_exception_steps #=> Array
1554
+ # resp.workflow.on_exception_steps[0].type #=> String, one of "COPY", "CUSTOM", "TAG", "DELETE"
1555
+ # resp.workflow.on_exception_steps[0].copy_step_details.name #=> String
1556
+ # resp.workflow.on_exception_steps[0].copy_step_details.destination_file_location.s3_file_location.bucket #=> String
1557
+ # resp.workflow.on_exception_steps[0].copy_step_details.destination_file_location.s3_file_location.key #=> String
1558
+ # resp.workflow.on_exception_steps[0].copy_step_details.destination_file_location.efs_file_location.file_system_id #=> String
1559
+ # resp.workflow.on_exception_steps[0].copy_step_details.destination_file_location.efs_file_location.path #=> String
1560
+ # resp.workflow.on_exception_steps[0].copy_step_details.overwrite_existing #=> String, one of "TRUE", "FALSE"
1561
+ # resp.workflow.on_exception_steps[0].custom_step_details.name #=> String
1562
+ # resp.workflow.on_exception_steps[0].custom_step_details.target #=> String
1563
+ # resp.workflow.on_exception_steps[0].custom_step_details.timeout_seconds #=> Integer
1564
+ # resp.workflow.on_exception_steps[0].delete_step_details.name #=> String
1565
+ # resp.workflow.on_exception_steps[0].tag_step_details.name #=> String
1566
+ # resp.workflow.on_exception_steps[0].tag_step_details.tags #=> Array
1567
+ # resp.workflow.on_exception_steps[0].tag_step_details.tags[0].key #=> String
1568
+ # resp.workflow.on_exception_steps[0].tag_step_details.tags[0].value #=> String
1569
+ # resp.workflow.workflow_id #=> String
1570
+ # resp.workflow.tags #=> Array
1571
+ # resp.workflow.tags[0].key #=> String
1572
+ # resp.workflow.tags[0].value #=> String
1573
+ #
1574
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeWorkflow AWS API Documentation
1575
+ #
1576
+ # @overload describe_workflow(params = {})
1577
+ # @param [Hash] params ({})
1578
+ def describe_workflow(params = {}, options = {})
1579
+ req = build_request(:describe_workflow, params)
1580
+ req.send_request(options)
1581
+ end
1582
+
1270
1583
  # Adds a Secure Shell (SSH) public key to a user account identified by a
1271
1584
  # `UserName` value assigned to the specific file transfer
1272
1585
  # protocol-enabled server, identified by `ServerId`.
@@ -1362,6 +1675,78 @@ module Aws::Transfer
1362
1675
  req.send_request(options)
1363
1676
  end
1364
1677
 
1678
+ # Lists all executions for the specified workflow.
1679
+ #
1680
+ # @option params [Integer] :max_results
1681
+ # Specifies the aximum number of executions to return.
1682
+ #
1683
+ # @option params [String] :next_token
1684
+ # `ListExecutions` returns the `NextToken` parameter in the output. You
1685
+ # can then pass the `NextToken` parameter in a subsequent command to
1686
+ # continue listing additional executions.
1687
+ #
1688
+ # This is useful for pagination, for instance. If you have 100
1689
+ # executions for a workflow, you might only want to list first 10. If
1690
+ # so, callthe API by specifing the `max-results`\:
1691
+ #
1692
+ # `aws transfer list-executions --max-results 10`
1693
+ #
1694
+ # This returns details for the first 10 executions, as well as the
1695
+ # pointer (`NextToken`) to the eleventh execution. You can now call the
1696
+ # API again, suppling the `NextToken` value you received:
1697
+ #
1698
+ # `aws transfer list-executions --max-results 10 --next-token
1699
+ # $somePointerReturnedFromPreviousListResult`
1700
+ #
1701
+ # This call returns the next 10 executions, the 11th through the 20th.
1702
+ # You can then repeat the call until the details for all 100 executions
1703
+ # have been returned.
1704
+ #
1705
+ # @option params [required, String] :workflow_id
1706
+ # A unique identifier for the workflow.
1707
+ #
1708
+ # @return [Types::ListExecutionsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1709
+ #
1710
+ # * {Types::ListExecutionsResponse#next_token #next_token} => String
1711
+ # * {Types::ListExecutionsResponse#workflow_id #workflow_id} => String
1712
+ # * {Types::ListExecutionsResponse#executions #executions} => Array&lt;Types::ListedExecution&gt;
1713
+ #
1714
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1715
+ #
1716
+ # @example Request syntax with placeholder values
1717
+ #
1718
+ # resp = client.list_executions({
1719
+ # max_results: 1,
1720
+ # next_token: "NextToken",
1721
+ # workflow_id: "WorkflowId", # required
1722
+ # })
1723
+ #
1724
+ # @example Response structure
1725
+ #
1726
+ # resp.next_token #=> String
1727
+ # resp.workflow_id #=> String
1728
+ # resp.executions #=> Array
1729
+ # resp.executions[0].execution_id #=> String
1730
+ # resp.executions[0].initial_file_location.s3_file_location.bucket #=> String
1731
+ # resp.executions[0].initial_file_location.s3_file_location.key #=> String
1732
+ # resp.executions[0].initial_file_location.s3_file_location.version_id #=> String
1733
+ # resp.executions[0].initial_file_location.s3_file_location.etag #=> String
1734
+ # resp.executions[0].initial_file_location.efs_file_location.file_system_id #=> String
1735
+ # resp.executions[0].initial_file_location.efs_file_location.path #=> String
1736
+ # resp.executions[0].service_metadata.user_details.user_name #=> String
1737
+ # resp.executions[0].service_metadata.user_details.server_id #=> String
1738
+ # resp.executions[0].service_metadata.user_details.session_id #=> String
1739
+ # resp.executions[0].status #=> String, one of "IN_PROGRESS", "COMPLETED", "EXCEPTION", "HANDLING_EXCEPTION"
1740
+ #
1741
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListExecutions AWS API Documentation
1742
+ #
1743
+ # @overload list_executions(params = {})
1744
+ # @param [Hash] params ({})
1745
+ def list_executions(params = {}, options = {})
1746
+ req = build_request(:list_executions, params)
1747
+ req.send_request(options)
1748
+ end
1749
+
1365
1750
  # Lists the security policies that are attached to your file transfer
1366
1751
  # protocol-enabled servers.
1367
1752
  #
@@ -1558,6 +1943,86 @@ module Aws::Transfer
1558
1943
  req.send_request(options)
1559
1944
  end
1560
1945
 
1946
+ # Lists all of your workflows.
1947
+ #
1948
+ # @option params [Integer] :max_results
1949
+ # Specifies the maximum number of workflows to return.
1950
+ #
1951
+ # @option params [String] :next_token
1952
+ # `ListWorkflows` returns the `NextToken` parameter in the output. You
1953
+ # can then pass the `NextToken` parameter in a subsequent command to
1954
+ # continue listing additional workflows.
1955
+ #
1956
+ # @return [Types::ListWorkflowsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1957
+ #
1958
+ # * {Types::ListWorkflowsResponse#next_token #next_token} => String
1959
+ # * {Types::ListWorkflowsResponse#workflows #workflows} => Array&lt;Types::ListedWorkflow&gt;
1960
+ #
1961
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1962
+ #
1963
+ # @example Request syntax with placeholder values
1964
+ #
1965
+ # resp = client.list_workflows({
1966
+ # max_results: 1,
1967
+ # next_token: "NextToken",
1968
+ # })
1969
+ #
1970
+ # @example Response structure
1971
+ #
1972
+ # resp.next_token #=> String
1973
+ # resp.workflows #=> Array
1974
+ # resp.workflows[0].workflow_id #=> String
1975
+ # resp.workflows[0].description #=> String
1976
+ # resp.workflows[0].arn #=> String
1977
+ #
1978
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListWorkflows AWS API Documentation
1979
+ #
1980
+ # @overload list_workflows(params = {})
1981
+ # @param [Hash] params ({})
1982
+ def list_workflows(params = {}, options = {})
1983
+ req = build_request(:list_workflows, params)
1984
+ req.send_request(options)
1985
+ end
1986
+
1987
+ # Sends a callback for asynchronous custom steps.
1988
+ #
1989
+ # The `ExecutionId`, `WorkflowId`, and `Token` are passed to the target
1990
+ # resource during execution of a custom step of a workflow. You must
1991
+ # include those with their callback as well as providing a status.
1992
+ #
1993
+ # @option params [required, String] :workflow_id
1994
+ # A unique identifier for the workflow.
1995
+ #
1996
+ # @option params [required, String] :execution_id
1997
+ # A unique identifier for the execution of a workflow.
1998
+ #
1999
+ # @option params [required, String] :token
2000
+ # Used to distinguish between multiple callbacks for multiple Lambda
2001
+ # steps within the same execution.
2002
+ #
2003
+ # @option params [required, String] :status
2004
+ # Indicates whether the specified step succeeded or failed.
2005
+ #
2006
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
2007
+ #
2008
+ # @example Request syntax with placeholder values
2009
+ #
2010
+ # resp = client.send_workflow_step_state({
2011
+ # workflow_id: "WorkflowId", # required
2012
+ # execution_id: "ExecutionId", # required
2013
+ # token: "CallbackToken", # required
2014
+ # status: "SUCCESS", # required, accepts SUCCESS, FAILURE
2015
+ # })
2016
+ #
2017
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/SendWorkflowStepState AWS API Documentation
2018
+ #
2019
+ # @overload send_workflow_step_state(params = {})
2020
+ # @param [Hash] params ({})
2021
+ def send_workflow_step_state(params = {}, options = {})
2022
+ req = build_request(:send_workflow_step_state, params)
2023
+ req.send_request(options)
2024
+ end
2025
+
1561
2026
  # Changes the state of a file transfer protocol-enabled server from
1562
2027
  # `OFFLINE` to `ONLINE`. It has no impact on a server that is already
1563
2028
  # `ONLINE`. An `ONLINE` server can accept and process file transfer
@@ -1672,6 +2137,31 @@ module Aws::Transfer
1672
2137
  # identity provider integration to ensure that your users can
1673
2138
  # successfully use the service.
1674
2139
  #
2140
+ # The `ServerId` and `UserName` parameters are required. The
2141
+ # `ServerProtocol`, `SourceIp`, and `UserPassword` are all optional.
2142
+ #
2143
+ # <note markdown="1"> You cannot use `TestIdentityProvider` if the `IdentityProviderType` of
2144
+ # your server is `SERVICE_MANAGED`.
2145
+ #
2146
+ # </note>
2147
+ #
2148
+ # * If you provide any incorrect values for any parameters, the
2149
+ # `Response` field is empty.
2150
+ #
2151
+ # * If you provide a server ID for a server that uses service-managed
2152
+ # users, you get an error:
2153
+ #
2154
+ # ` An error occurred (InvalidRequestException) when calling the
2155
+ # TestIdentityProvider operation: s-server-ID not configured for
2156
+ # external auth `
2157
+ #
2158
+ # * If you enter a Server ID for the `--server-id` parameter that does
2159
+ # not identify an actual Transfer server, you receive the following
2160
+ # error:
2161
+ #
2162
+ # `An error occurred (ResourceNotFoundException) when calling the
2163
+ # TestIdentityProvider operation: Unknown server`
2164
+ #
1675
2165
  # @option params [required, String] :server_id
1676
2166
  # A system-assigned identifier for a specific server. That server's
1677
2167
  # user authentication method is tested with a user name and password.
@@ -1777,9 +2267,8 @@ module Aws::Transfer
1777
2267
  # directory to be when they log into the server. If you set it to
1778
2268
  # `PATH`, the user will see the absolute Amazon S3 bucket or EFS paths
1779
2269
  # as is in their file transfer protocol clients. If you set it
1780
- # `LOGICAL`, you will need to provide mappings in the
1781
- # `HomeDirectoryMappings` for how you want to make Amazon S3 or EFS
1782
- # paths visible to your users.
2270
+ # `LOGICAL`, you need to provide mappings in the `HomeDirectoryMappings`
2271
+ # for how you want to make Amazon S3 or EFS paths visible to your users.
1783
2272
  #
1784
2273
  # @option params [Array<Types::HomeDirectoryMapEntry>] :home_directory_mappings
1785
2274
  # Logical directory mappings that specify what Amazon S3 or Amazon EFS
@@ -1794,13 +2283,13 @@ module Aws::Transfer
1794
2283
  #
1795
2284
  # The following is an `Entry` and `Target` pair example.
1796
2285
  #
1797
- # `[ \{ "Entry": "your-personal-report.pdf", "Target":
1798
- # "/bucket3/customized-reports/$\{transfer:UserName\}.pdf" \} ]`
2286
+ # `[ \{ "Entry": "/directory1", "Target":
2287
+ # "/bucket_name/home/mydirectory" \} ]`
1799
2288
  #
1800
- # In most cases, you can use this value instead of the scope-down policy
1801
- # to lock down your user to the designated home directory
1802
- # ("`chroot`"). To do this, you can set `Entry` to `/` and set
1803
- # `Target` to the `HomeDirectory` parameter value.
2289
+ # In most cases, you can use this value instead of the session policy to
2290
+ # lock down your user to the designated home directory ("`chroot`").
2291
+ # To do this, you can set `Entry` to `/` and set `Target` to the
2292
+ # `HomeDirectory` parameter value.
1804
2293
  #
1805
2294
  # The following is an `Entry` and `Target` pair example for `chroot`.
1806
2295
  #
@@ -1818,22 +2307,21 @@ module Aws::Transfer
1818
2307
  # </note>
1819
2308
  #
1820
2309
  # @option params [String] :policy
1821
- # A scope-down policy for your user so that you can use the same IAM
1822
- # role across multiple users. This policy scopes down user access to
1823
- # portions of their Amazon S3 bucket. Variables that you can use inside
1824
- # this policy include `$\{Transfer:UserName\}`,
2310
+ # A session policy for your user so that you can use the same IAM role
2311
+ # across multiple users. This policy scopes down user access to portions
2312
+ # of their Amazon S3 bucket. Variables that you can use inside this
2313
+ # policy include `$\{Transfer:UserName\}`,
1825
2314
  # `$\{Transfer:HomeDirectory\}`, and `$\{Transfer:HomeBucket\}`.
1826
2315
  #
1827
- # <note markdown="1"> This only applies when domain of `ServerId` is S3. Amazon EFS does not
1828
- # use scope down policy.
2316
+ # <note markdown="1"> This only applies when the domain of `ServerId` is S3. EFS does not
2317
+ # use session policies.
1829
2318
  #
1830
- # For scope-down policies, Amazon Web ServicesTransfer Family stores the
2319
+ # For session policies, Amazon Web Services Transfer Family stores the
1831
2320
  # policy as a JSON blob, instead of the Amazon Resource Name (ARN) of
1832
2321
  # the policy. You save the policy as a JSON blob and pass it in the
1833
2322
  # `Policy` argument.
1834
2323
  #
1835
- # For an example of a scope-down policy, see [Example scope-down
1836
- # policy][1].
2324
+ # For an example of a session policy, see [Example session policy][1].
1837
2325
  #
1838
2326
  # For more information, see [AssumeRole][2] in the *Amazon Web
1839
2327
  # ServicesSecurity Token Service API Reference*.
@@ -1842,7 +2330,7 @@ module Aws::Transfer
1842
2330
  #
1843
2331
  #
1844
2332
  #
1845
- # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/scope-down-policy.html
2333
+ # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/session-policy.html
1846
2334
  # [2]: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html
1847
2335
  #
1848
2336
  # @option params [Types::PosixProfile] :posix_profile
@@ -2077,6 +2565,10 @@ module Aws::Transfer
2077
2565
  # A system-assigned unique identifier for a server instance that the
2078
2566
  # user account is assigned to.
2079
2567
  #
2568
+ # @option params [Types::WorkflowDetails] :workflow_details
2569
+ # Specifies the workflow ID for the workflow to assign and the execution
2570
+ # role used for executing the workflow.
2571
+ #
2080
2572
  # @return [Types::UpdateServerResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2081
2573
  #
2082
2574
  # * {Types::UpdateServerResponse#server_id #server_id} => String
@@ -2106,6 +2598,14 @@ module Aws::Transfer
2106
2598
  # protocols: ["SFTP"], # accepts SFTP, FTP, FTPS
2107
2599
  # security_policy_name: "SecurityPolicyName",
2108
2600
  # server_id: "ServerId", # required
2601
+ # workflow_details: {
2602
+ # on_upload: [ # required
2603
+ # {
2604
+ # workflow_id: "WorkflowId", # required
2605
+ # execution_role: "Role", # required
2606
+ # },
2607
+ # ],
2608
+ # },
2109
2609
  # })
2110
2610
  #
2111
2611
  # @example Response structure
@@ -2139,9 +2639,8 @@ module Aws::Transfer
2139
2639
  # directory to be when they log into the server. If you set it to
2140
2640
  # `PATH`, the user will see the absolute Amazon S3 bucket or EFS paths
2141
2641
  # as is in their file transfer protocol clients. If you set it
2142
- # `LOGICAL`, you will need to provide mappings in the
2143
- # `HomeDirectoryMappings` for how you want to make Amazon S3 or EFS
2144
- # paths visible to your users.
2642
+ # `LOGICAL`, you need to provide mappings in the `HomeDirectoryMappings`
2643
+ # for how you want to make Amazon S3 or EFS paths visible to your users.
2145
2644
  #
2146
2645
  # @option params [Array<Types::HomeDirectoryMapEntry>] :home_directory_mappings
2147
2646
  # Logical directory mappings that specify what Amazon S3 or Amazon EFS
@@ -2156,13 +2655,13 @@ module Aws::Transfer
2156
2655
  #
2157
2656
  # The following is an `Entry` and `Target` pair example.
2158
2657
  #
2159
- # `[ \{ "Entry": "your-personal-report.pdf", "Target":
2160
- # "/bucket3/customized-reports/$\{transfer:UserName\}.pdf" \} ]`
2658
+ # `[ \{ "Entry": "/directory1", "Target":
2659
+ # "/bucket_name/home/mydirectory" \} ]`
2161
2660
  #
2162
- # In most cases, you can use this value instead of the scope-down policy
2163
- # to lock down your user to the designated home directory
2164
- # ("`chroot`"). To do this, you can set `Entry` to '/' and set
2165
- # `Target` to the HomeDirectory parameter value.
2661
+ # In most cases, you can use this value instead of the session policy to
2662
+ # lock down your user to the designated home directory ("`chroot`").
2663
+ # To do this, you can set `Entry` to '/' and set `Target` to the
2664
+ # HomeDirectory parameter value.
2166
2665
  #
2167
2666
  # The following is an `Entry` and `Target` pair example for `chroot`.
2168
2667
  #
@@ -2180,21 +2679,21 @@ module Aws::Transfer
2180
2679
  # </note>
2181
2680
  #
2182
2681
  # @option params [String] :policy
2183
- # A scope-down policy for your user so that you can use the same IAM
2184
- # role across multiple users. This policy scopes down user access to
2185
- # portions of their Amazon S3 bucket. Variables that you can use inside
2186
- # this policy include `$\{Transfer:UserName\}`,
2682
+ # A session policy for your user so that you can use the same IAM role
2683
+ # across multiple users. This policy scopes down user access to portions
2684
+ # of their Amazon S3 bucket. Variables that you can use inside this
2685
+ # policy include `$\{Transfer:UserName\}`,
2187
2686
  # `$\{Transfer:HomeDirectory\}`, and `$\{Transfer:HomeBucket\}`.
2188
2687
  #
2189
- # <note markdown="1"> This only applies when domain of `ServerId` is S3. Amazon EFS does not
2190
- # use scope-down policies.
2688
+ # <note markdown="1"> This only applies when the domain of `ServerId` is S3. EFS does not
2689
+ # use session policies.
2191
2690
  #
2192
- # For scope-down policies, Amazon Web ServicesTransfer Family stores the
2691
+ # For session policies, Amazon Web Services Transfer Family stores the
2193
2692
  # policy as a JSON blob, instead of the Amazon Resource Name (ARN) of
2194
2693
  # the policy. You save the policy as a JSON blob and pass it in the
2195
2694
  # `Policy` argument.
2196
2695
  #
2197
- # For an example of a scope-down policy, see [Creating a scope-down
2696
+ # For an example of a session policy, see [Creating a session
2198
2697
  # policy][1].
2199
2698
  #
2200
2699
  # For more information, see [AssumeRole][2] in the *Amazon Web Services
@@ -2204,7 +2703,7 @@ module Aws::Transfer
2204
2703
  #
2205
2704
  #
2206
2705
  #
2207
- # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/users.html#users-policies-scope-down
2706
+ # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/session-policy
2208
2707
  # [2]: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html
2209
2708
  #
2210
2709
  # @option params [Types::PosixProfile] :posix_profile
@@ -2290,7 +2789,7 @@ module Aws::Transfer
2290
2789
  params: params,
2291
2790
  config: config)
2292
2791
  context[:gem_name] = 'aws-sdk-transfer'
2293
- context[:gem_version] = '1.38.0'
2792
+ context[:gem_version] = '1.42.0'
2294
2793
  Seahorse::Client::Request.new(handlers, context)
2295
2794
  end
2296
2795