aws-sdk-transfer 1.37.0 → 1.41.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -356,9 +356,8 @@ module Aws::Transfer
356
356
  # directory to be when they log into the server. If you set it to
357
357
  # `PATH`, the user will see the absolute Amazon S3 bucket or EFS paths
358
358
  # 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.
359
+ # `LOGICAL`, you need to provide mappings in the `HomeDirectoryMappings`
360
+ # for how you want to make Amazon S3 or EFS paths visible to your users.
362
361
  #
363
362
  # @option params [Array<Types::HomeDirectoryMapEntry>] :home_directory_mappings
364
363
  # Logical directory mappings that specify what Amazon S3 or Amazon EFS
@@ -373,13 +372,13 @@ module Aws::Transfer
373
372
  #
374
373
  # The following is an `Entry` and `Target` pair example.
375
374
  #
376
- # `[ \{ "Entry": "your-personal-report.pdf", "Target":
377
- # "/bucket3/customized-reports/$\{transfer:UserName\}.pdf" \} ]`
375
+ # `[ \{ "Entry": "/directory1", "Target":
376
+ # "/bucket_name/home/mydirectory" \} ]`
378
377
  #
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.
378
+ # In most cases, you can use this value instead of the session policy to
379
+ # lock down your user to the designated home directory ("`chroot`").
380
+ # To do this, you can set `Entry` to `/` and set `Target` to the
381
+ # `HomeDirectory` parameter value.
383
382
  #
384
383
  # The following is an `Entry` and `Target` pair example for `chroot`.
385
384
  #
@@ -397,22 +396,21 @@ module Aws::Transfer
397
396
  # </note>
398
397
  #
399
398
  # @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\}`,
399
+ # A session policy for your user so that you can use the same IAM role
400
+ # across multiple users. This policy scopes down user access to portions
401
+ # of their Amazon S3 bucket. Variables that you can use inside this
402
+ # policy include `$\{Transfer:UserName\}`,
404
403
  # `$\{Transfer:HomeDirectory\}`, and `$\{Transfer:HomeBucket\}`.
405
404
  #
406
- # <note markdown="1"> This only applies when domain of `ServerId` is S3. Amazon EFS does not
407
- # use scope-down policies.
405
+ # <note markdown="1"> This only applies when the domain of `ServerId` is S3. EFS does not
406
+ # use session policies.
408
407
  #
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
408
+ # For session policies, Amazon Web Services Transfer Family stores the
409
+ # policy as a JSON blob, instead of the Amazon Resource Name (ARN) of
410
+ # the policy. You save the policy as a JSON blob and pass it in the
412
411
  # `Policy` argument.
413
412
  #
414
- # For an example of a scope-down policy, see [Example scope-down
415
- # policy][1].
413
+ # For an example of a session policy, see [Example session policy][1].
416
414
  #
417
415
  # For more information, see [AssumeRole][2] in the *Amazon Web Services
418
416
  # Security Token Service API Reference*.
@@ -421,7 +419,7 @@ module Aws::Transfer
421
419
  #
422
420
  #
423
421
  #
424
- # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/scope-down-policy.html
422
+ # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/session-policy.html
425
423
  # [2]: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html
426
424
  #
427
425
  # @option params [Types::PosixProfile] :posix_profile
@@ -677,6 +675,10 @@ module Aws::Transfer
677
675
  # @option params [Array<Types::Tag>] :tags
678
676
  # Key-value pairs that can be used to group and search for servers.
679
677
  #
678
+ # @option params [Types::WorkflowDetails] :workflow_details
679
+ # Specifies the workflow ID for the workflow to assign and the execution
680
+ # role used for executing the workflow.
681
+ #
680
682
  # @return [Types::CreateServerResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
681
683
  #
682
684
  # * {Types::CreateServerResponse#server_id #server_id} => String
@@ -710,6 +712,14 @@ module Aws::Transfer
710
712
  # value: "TagValue", # required
711
713
  # },
712
714
  # ],
715
+ # workflow_details: {
716
+ # on_upload: [ # required
717
+ # {
718
+ # workflow_id: "WorkflowId", # required
719
+ # execution_role: "Role", # required
720
+ # },
721
+ # ],
722
+ # },
713
723
  # })
714
724
  #
715
725
  # @example Response structure
@@ -731,8 +741,8 @@ module Aws::Transfer
731
741
  # Using parameters for `CreateUser`, you can specify the user name, set
732
742
  # the home directory, store the user's public key, and assign the
733
743
  # 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.
744
+ # You can also optionally add a session policy, and assign metadata with
745
+ # tags that can be used to group and search for users.
736
746
  #
737
747
  # @option params [String] :home_directory
738
748
  # The landing directory (folder) for a user when they log in to the
@@ -745,9 +755,8 @@ module Aws::Transfer
745
755
  # directory to be when they log into the server. If you set it to
746
756
  # `PATH`, the user will see the absolute Amazon S3 bucket or EFS paths
747
757
  # 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.
758
+ # `LOGICAL`, you need to provide mappings in the `HomeDirectoryMappings`
759
+ # for how you want to make Amazon S3 or EFS paths visible to your users.
751
760
  #
752
761
  # @option params [Array<Types::HomeDirectoryMapEntry>] :home_directory_mappings
753
762
  # Logical directory mappings that specify what Amazon S3 or Amazon EFS
@@ -762,13 +771,13 @@ module Aws::Transfer
762
771
  #
763
772
  # The following is an `Entry` and `Target` pair example.
764
773
  #
765
- # `[ \{ "Entry": "your-personal-report.pdf", "Target":
766
- # "/bucket3/customized-reports/$\{transfer:UserName\}.pdf" \} ]`
774
+ # `[ \{ "Entry": "/directory1", "Target":
775
+ # "/bucket_name/home/mydirectory" \} ]`
767
776
  #
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.
777
+ # In most cases, you can use this value instead of the session policy to
778
+ # lock your user down to the designated home directory ("`chroot`").
779
+ # To do this, you can set `Entry` to `/` and set `Target` to the
780
+ # HomeDirectory parameter value.
772
781
  #
773
782
  # The following is an `Entry` and `Target` pair example for `chroot`.
774
783
  #
@@ -786,22 +795,21 @@ module Aws::Transfer
786
795
  # </note>
787
796
  #
788
797
  # @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\}`,
798
+ # A session policy for your user so that you can use the same IAM role
799
+ # across multiple users. This policy scopes down user access to portions
800
+ # of their Amazon S3 bucket. Variables that you can use inside this
801
+ # policy include `$\{Transfer:UserName\}`,
793
802
  # `$\{Transfer:HomeDirectory\}`, and `$\{Transfer:HomeBucket\}`.
794
803
  #
795
- # <note markdown="1"> This only applies when domain of ServerId is S3. EFS does not use
796
- # scope down policy.
804
+ # <note markdown="1"> This only applies when the domain of `ServerId` is S3. EFS does not
805
+ # use session policies.
797
806
  #
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
807
+ # For session policies, Amazon Web Services Transfer Family stores the
808
+ # policy as a JSON blob, instead of the Amazon Resource Name (ARN) of
809
+ # the policy. You save the policy as a JSON blob and pass it in the
801
810
  # `Policy` argument.
802
811
  #
803
- # For an example of a scope-down policy, see [Example scope-down
804
- # policy][1].
812
+ # For an example of a session policy, see [Example session policy][1].
805
813
  #
806
814
  # For more information, see [AssumeRole][2] in the *Amazon Web Services
807
815
  # Security Token Service API Reference*.
@@ -810,7 +818,7 @@ module Aws::Transfer
810
818
  #
811
819
  #
812
820
  #
813
- # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/scope-down-policy.html
821
+ # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/session-policy.html
814
822
  # [2]: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html
815
823
  #
816
824
  # @option params [Types::PosixProfile] :posix_profile
@@ -843,12 +851,11 @@ module Aws::Transfer
843
851
  # are metadata attached to users for any purpose.
844
852
  #
845
853
  # @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.
854
+ # A unique string that identifies a user and is associated with a
855
+ # `ServerId`. This user name must be a minimum of 3 and a maximum of 100
856
+ # characters long. The following are valid characters: a-z, A-Z, 0-9,
857
+ # underscore '\_', hyphen '-', period '.', and at sign '@'. The
858
+ # user name can't start with a hyphen, period, or at sign.
852
859
  #
853
860
  # @return [Types::CreateUserResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
854
861
  #
@@ -898,6 +905,153 @@ module Aws::Transfer
898
905
  req.send_request(options)
899
906
  end
900
907
 
908
+ # Allows you to create a workflow with specified steps and step details
909
+ # the workflow invokes after file transfer completes. After creating a
910
+ # workflow, you can associate the workflow created with any transfer
911
+ # servers by specifying the `workflow-details` field in `CreateServer`
912
+ # and `UpdateServer` operations.
913
+ #
914
+ # @option params [String] :description
915
+ # A textual description for the workflow.
916
+ #
917
+ # @option params [required, Array<Types::WorkflowStep>] :steps
918
+ # Specifies the details for the steps that are in the specified
919
+ # workflow.
920
+ #
921
+ # The `TYPE` specifies which of the following actions is being taken for
922
+ # this step.
923
+ #
924
+ # * *Copy*\: copy the file to another location
925
+ #
926
+ # * *Custom*\: custom step with a lambda target
927
+ #
928
+ # * *Delete*\: delete the file
929
+ #
930
+ # * *Tag*\: add a tag to the file
931
+ #
932
+ # <note markdown="1"> Currently, copying and tagging are supported only on S3.
933
+ #
934
+ # </note>
935
+ #
936
+ # For file location, you specify either the S3 bucket and key, or the
937
+ # EFS filesystem ID and path.
938
+ #
939
+ # @option params [Array<Types::WorkflowStep>] :on_exception_steps
940
+ # Specifies the steps (actions) to take if errors are encountered during
941
+ # execution of the workflow.
942
+ #
943
+ # <note markdown="1"> For custom steps, the lambda function needs to send `FAILURE` to the
944
+ # call back API to kick off the exception steps. Additionally, if the
945
+ # lambda does not send `SUCCESS` before it times out, the exception
946
+ # steps are executed.
947
+ #
948
+ # </note>
949
+ #
950
+ # @option params [Array<Types::Tag>] :tags
951
+ # Key-value pairs that can be used to group and search for workflows.
952
+ # Tags are metadata attached to workflows for any purpose.
953
+ #
954
+ # @return [Types::CreateWorkflowResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
955
+ #
956
+ # * {Types::CreateWorkflowResponse#workflow_id #workflow_id} => String
957
+ #
958
+ # @example Request syntax with placeholder values
959
+ #
960
+ # resp = client.create_workflow({
961
+ # description: "WorkflowDescription",
962
+ # steps: [ # required
963
+ # {
964
+ # type: "COPY", # accepts COPY, CUSTOM, TAG, DELETE
965
+ # copy_step_details: {
966
+ # name: "WorkflowStepName",
967
+ # destination_file_location: {
968
+ # s3_file_location: {
969
+ # bucket: "S3Bucket",
970
+ # key: "S3Key",
971
+ # },
972
+ # efs_file_location: {
973
+ # file_system_id: "EfsFileSystemId",
974
+ # path: "EfsPath",
975
+ # },
976
+ # },
977
+ # overwrite_existing: "TRUE", # accepts TRUE, FALSE
978
+ # },
979
+ # custom_step_details: {
980
+ # name: "WorkflowStepName",
981
+ # target: "CustomStepTarget",
982
+ # timeout_seconds: 1,
983
+ # },
984
+ # delete_step_details: {
985
+ # name: "WorkflowStepName",
986
+ # },
987
+ # tag_step_details: {
988
+ # name: "WorkflowStepName",
989
+ # tags: [
990
+ # {
991
+ # key: "S3TagKey", # required
992
+ # value: "S3TagValue", # required
993
+ # },
994
+ # ],
995
+ # },
996
+ # },
997
+ # ],
998
+ # on_exception_steps: [
999
+ # {
1000
+ # type: "COPY", # accepts COPY, CUSTOM, TAG, DELETE
1001
+ # copy_step_details: {
1002
+ # name: "WorkflowStepName",
1003
+ # destination_file_location: {
1004
+ # s3_file_location: {
1005
+ # bucket: "S3Bucket",
1006
+ # key: "S3Key",
1007
+ # },
1008
+ # efs_file_location: {
1009
+ # file_system_id: "EfsFileSystemId",
1010
+ # path: "EfsPath",
1011
+ # },
1012
+ # },
1013
+ # overwrite_existing: "TRUE", # accepts TRUE, FALSE
1014
+ # },
1015
+ # custom_step_details: {
1016
+ # name: "WorkflowStepName",
1017
+ # target: "CustomStepTarget",
1018
+ # timeout_seconds: 1,
1019
+ # },
1020
+ # delete_step_details: {
1021
+ # name: "WorkflowStepName",
1022
+ # },
1023
+ # tag_step_details: {
1024
+ # name: "WorkflowStepName",
1025
+ # tags: [
1026
+ # {
1027
+ # key: "S3TagKey", # required
1028
+ # value: "S3TagValue", # required
1029
+ # },
1030
+ # ],
1031
+ # },
1032
+ # },
1033
+ # ],
1034
+ # tags: [
1035
+ # {
1036
+ # key: "TagKey", # required
1037
+ # value: "TagValue", # required
1038
+ # },
1039
+ # ],
1040
+ # })
1041
+ #
1042
+ # @example Response structure
1043
+ #
1044
+ # resp.workflow_id #=> String
1045
+ #
1046
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/CreateWorkflow AWS API Documentation
1047
+ #
1048
+ # @overload create_workflow(params = {})
1049
+ # @param [Hash] params ({})
1050
+ def create_workflow(params = {}, options = {})
1051
+ req = build_request(:create_workflow, params)
1052
+ req.send_request(options)
1053
+ end
1054
+
901
1055
  # Allows you to delete the access specified in the `ServerID` and
902
1056
  # `ExternalID` parameters.
903
1057
  #
@@ -968,8 +1122,6 @@ module Aws::Transfer
968
1122
 
969
1123
  # Deletes a user's Secure Shell (SSH) public key.
970
1124
  #
971
- # No response is returned from this operation.
972
- #
973
1125
  # @option params [required, String] :server_id
974
1126
  # A system-assigned unique identifier for a file transfer
975
1127
  # protocol-enabled server instance that has the user assigned to it.
@@ -1035,6 +1187,28 @@ module Aws::Transfer
1035
1187
  req.send_request(options)
1036
1188
  end
1037
1189
 
1190
+ # Deletes the specified workflow.
1191
+ #
1192
+ # @option params [required, String] :workflow_id
1193
+ # A unique identifier for the workflow.
1194
+ #
1195
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1196
+ #
1197
+ # @example Request syntax with placeholder values
1198
+ #
1199
+ # resp = client.delete_workflow({
1200
+ # workflow_id: "WorkflowId", # required
1201
+ # })
1202
+ #
1203
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DeleteWorkflow AWS API Documentation
1204
+ #
1205
+ # @overload delete_workflow(params = {})
1206
+ # @param [Hash] params ({})
1207
+ def delete_workflow(params = {}, options = {})
1208
+ req = build_request(:delete_workflow, params)
1209
+ req.send_request(options)
1210
+ end
1211
+
1038
1212
  # Describes the access that is assigned to the specific file transfer
1039
1213
  # protocol-enabled server, as identified by its `ServerId` property and
1040
1214
  # its `ExternalID`.
@@ -1102,6 +1276,68 @@ module Aws::Transfer
1102
1276
  req.send_request(options)
1103
1277
  end
1104
1278
 
1279
+ # You can use `DescribeExecution` to check the details of the execution
1280
+ # of the specified workflow.
1281
+ #
1282
+ # @option params [required, String] :execution_id
1283
+ # A unique identifier for the execution of a workflow.
1284
+ #
1285
+ # @option params [required, String] :workflow_id
1286
+ # A unique identifier for the workflow.
1287
+ #
1288
+ # @return [Types::DescribeExecutionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1289
+ #
1290
+ # * {Types::DescribeExecutionResponse#workflow_id #workflow_id} => String
1291
+ # * {Types::DescribeExecutionResponse#execution #execution} => Types::DescribedExecution
1292
+ #
1293
+ # @example Request syntax with placeholder values
1294
+ #
1295
+ # resp = client.describe_execution({
1296
+ # execution_id: "ExecutionId", # required
1297
+ # workflow_id: "WorkflowId", # required
1298
+ # })
1299
+ #
1300
+ # @example Response structure
1301
+ #
1302
+ # resp.workflow_id #=> String
1303
+ # resp.execution.execution_id #=> String
1304
+ # resp.execution.initial_file_location.s3_file_location.bucket #=> String
1305
+ # resp.execution.initial_file_location.s3_file_location.key #=> String
1306
+ # resp.execution.initial_file_location.s3_file_location.version_id #=> String
1307
+ # resp.execution.initial_file_location.s3_file_location.etag #=> String
1308
+ # resp.execution.initial_file_location.efs_file_location.file_system_id #=> String
1309
+ # resp.execution.initial_file_location.efs_file_location.path #=> String
1310
+ # resp.execution.service_metadata.user_details.user_name #=> String
1311
+ # resp.execution.service_metadata.user_details.server_id #=> String
1312
+ # resp.execution.service_metadata.user_details.session_id #=> String
1313
+ # resp.execution.execution_role #=> String
1314
+ # resp.execution.logging_configuration.logging_role #=> String
1315
+ # resp.execution.logging_configuration.log_group_name #=> String
1316
+ # resp.execution.posix_profile.uid #=> Integer
1317
+ # resp.execution.posix_profile.gid #=> Integer
1318
+ # resp.execution.posix_profile.secondary_gids #=> Array
1319
+ # resp.execution.posix_profile.secondary_gids[0] #=> Integer
1320
+ # resp.execution.status #=> String, one of "IN_PROGRESS", "COMPLETED", "EXCEPTION", "HANDLING_EXCEPTION"
1321
+ # resp.execution.results.steps #=> Array
1322
+ # resp.execution.results.steps[0].step_type #=> String, one of "COPY", "CUSTOM", "TAG", "DELETE"
1323
+ # resp.execution.results.steps[0].outputs #=> String
1324
+ # resp.execution.results.steps[0].error.type #=> String, one of "PERMISSION_DENIED"
1325
+ # resp.execution.results.steps[0].error.message #=> String
1326
+ # resp.execution.results.on_exception_steps #=> Array
1327
+ # resp.execution.results.on_exception_steps[0].step_type #=> String, one of "COPY", "CUSTOM", "TAG", "DELETE"
1328
+ # resp.execution.results.on_exception_steps[0].outputs #=> String
1329
+ # resp.execution.results.on_exception_steps[0].error.type #=> String, one of "PERMISSION_DENIED"
1330
+ # resp.execution.results.on_exception_steps[0].error.message #=> String
1331
+ #
1332
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeExecution AWS API Documentation
1333
+ #
1334
+ # @overload describe_execution(params = {})
1335
+ # @param [Hash] params ({})
1336
+ def describe_execution(params = {}, options = {})
1337
+ req = build_request(:describe_execution, params)
1338
+ req.send_request(options)
1339
+ end
1340
+
1105
1341
  # Describes the security policy that is attached to your file transfer
1106
1342
  # protocol-enabled server. The response contains a description of the
1107
1343
  # security policy's properties. For more information about security
@@ -1197,6 +1433,9 @@ module Aws::Transfer
1197
1433
  # resp.server.tags[0].key #=> String
1198
1434
  # resp.server.tags[0].value #=> String
1199
1435
  # resp.server.user_count #=> Integer
1436
+ # resp.server.workflow_details.on_upload #=> Array
1437
+ # resp.server.workflow_details.on_upload[0].workflow_id #=> String
1438
+ # resp.server.workflow_details.on_upload[0].execution_role #=> String
1200
1439
  #
1201
1440
  # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeServer AWS API Documentation
1202
1441
  #
@@ -1267,6 +1506,71 @@ module Aws::Transfer
1267
1506
  req.send_request(options)
1268
1507
  end
1269
1508
 
1509
+ # Describes the specified workflow.
1510
+ #
1511
+ # @option params [required, String] :workflow_id
1512
+ # A unique identifier for the workflow.
1513
+ #
1514
+ # @return [Types::DescribeWorkflowResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1515
+ #
1516
+ # * {Types::DescribeWorkflowResponse#workflow #workflow} => Types::DescribedWorkflow
1517
+ #
1518
+ # @example Request syntax with placeholder values
1519
+ #
1520
+ # resp = client.describe_workflow({
1521
+ # workflow_id: "WorkflowId", # required
1522
+ # })
1523
+ #
1524
+ # @example Response structure
1525
+ #
1526
+ # resp.workflow.arn #=> String
1527
+ # resp.workflow.description #=> String
1528
+ # resp.workflow.steps #=> Array
1529
+ # resp.workflow.steps[0].type #=> String, one of "COPY", "CUSTOM", "TAG", "DELETE"
1530
+ # resp.workflow.steps[0].copy_step_details.name #=> String
1531
+ # resp.workflow.steps[0].copy_step_details.destination_file_location.s3_file_location.bucket #=> String
1532
+ # resp.workflow.steps[0].copy_step_details.destination_file_location.s3_file_location.key #=> String
1533
+ # resp.workflow.steps[0].copy_step_details.destination_file_location.efs_file_location.file_system_id #=> String
1534
+ # resp.workflow.steps[0].copy_step_details.destination_file_location.efs_file_location.path #=> String
1535
+ # resp.workflow.steps[0].copy_step_details.overwrite_existing #=> String, one of "TRUE", "FALSE"
1536
+ # resp.workflow.steps[0].custom_step_details.name #=> String
1537
+ # resp.workflow.steps[0].custom_step_details.target #=> String
1538
+ # resp.workflow.steps[0].custom_step_details.timeout_seconds #=> Integer
1539
+ # resp.workflow.steps[0].delete_step_details.name #=> String
1540
+ # resp.workflow.steps[0].tag_step_details.name #=> String
1541
+ # resp.workflow.steps[0].tag_step_details.tags #=> Array
1542
+ # resp.workflow.steps[0].tag_step_details.tags[0].key #=> String
1543
+ # resp.workflow.steps[0].tag_step_details.tags[0].value #=> String
1544
+ # resp.workflow.on_exception_steps #=> Array
1545
+ # resp.workflow.on_exception_steps[0].type #=> String, one of "COPY", "CUSTOM", "TAG", "DELETE"
1546
+ # resp.workflow.on_exception_steps[0].copy_step_details.name #=> String
1547
+ # resp.workflow.on_exception_steps[0].copy_step_details.destination_file_location.s3_file_location.bucket #=> String
1548
+ # resp.workflow.on_exception_steps[0].copy_step_details.destination_file_location.s3_file_location.key #=> String
1549
+ # resp.workflow.on_exception_steps[0].copy_step_details.destination_file_location.efs_file_location.file_system_id #=> String
1550
+ # resp.workflow.on_exception_steps[0].copy_step_details.destination_file_location.efs_file_location.path #=> String
1551
+ # resp.workflow.on_exception_steps[0].copy_step_details.overwrite_existing #=> String, one of "TRUE", "FALSE"
1552
+ # resp.workflow.on_exception_steps[0].custom_step_details.name #=> String
1553
+ # resp.workflow.on_exception_steps[0].custom_step_details.target #=> String
1554
+ # resp.workflow.on_exception_steps[0].custom_step_details.timeout_seconds #=> Integer
1555
+ # resp.workflow.on_exception_steps[0].delete_step_details.name #=> String
1556
+ # resp.workflow.on_exception_steps[0].tag_step_details.name #=> String
1557
+ # resp.workflow.on_exception_steps[0].tag_step_details.tags #=> Array
1558
+ # resp.workflow.on_exception_steps[0].tag_step_details.tags[0].key #=> String
1559
+ # resp.workflow.on_exception_steps[0].tag_step_details.tags[0].value #=> String
1560
+ # resp.workflow.workflow_id #=> String
1561
+ # resp.workflow.tags #=> Array
1562
+ # resp.workflow.tags[0].key #=> String
1563
+ # resp.workflow.tags[0].value #=> String
1564
+ #
1565
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/DescribeWorkflow AWS API Documentation
1566
+ #
1567
+ # @overload describe_workflow(params = {})
1568
+ # @param [Hash] params ({})
1569
+ def describe_workflow(params = {}, options = {})
1570
+ req = build_request(:describe_workflow, params)
1571
+ req.send_request(options)
1572
+ end
1573
+
1270
1574
  # Adds a Secure Shell (SSH) public key to a user account identified by a
1271
1575
  # `UserName` value assigned to the specific file transfer
1272
1576
  # protocol-enabled server, identified by `ServerId`.
@@ -1362,6 +1666,78 @@ module Aws::Transfer
1362
1666
  req.send_request(options)
1363
1667
  end
1364
1668
 
1669
+ # Lists all executions for the specified workflow.
1670
+ #
1671
+ # @option params [Integer] :max_results
1672
+ # Specifies the aximum number of executions to return.
1673
+ #
1674
+ # @option params [String] :next_token
1675
+ # `ListExecutions` returns the `NextToken` parameter in the output. You
1676
+ # can then pass the `NextToken` parameter in a subsequent command to
1677
+ # continue listing additional executions.
1678
+ #
1679
+ # This is useful for pagination, for instance. If you have 100
1680
+ # executions for a workflow, you might only want to list first 10. If
1681
+ # so, callthe API by specifing the `max-results`\:
1682
+ #
1683
+ # `aws transfer list-executions --max-results 10`
1684
+ #
1685
+ # This returns details for the first 10 executions, as well as the
1686
+ # pointer (`NextToken`) to the eleventh execution. You can now call the
1687
+ # API again, suppling the `NextToken` value you received:
1688
+ #
1689
+ # `aws transfer list-executions --max-results 10 --next-token
1690
+ # $somePointerReturnedFromPreviousListResult`
1691
+ #
1692
+ # This call returns the next 10 executions, the 11th through the 20th.
1693
+ # You can then repeat the call until the details for all 100 executions
1694
+ # have been returned.
1695
+ #
1696
+ # @option params [required, String] :workflow_id
1697
+ # A unique identifier for the workflow.
1698
+ #
1699
+ # @return [Types::ListExecutionsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1700
+ #
1701
+ # * {Types::ListExecutionsResponse#next_token #next_token} => String
1702
+ # * {Types::ListExecutionsResponse#workflow_id #workflow_id} => String
1703
+ # * {Types::ListExecutionsResponse#executions #executions} => Array&lt;Types::ListedExecution&gt;
1704
+ #
1705
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1706
+ #
1707
+ # @example Request syntax with placeholder values
1708
+ #
1709
+ # resp = client.list_executions({
1710
+ # max_results: 1,
1711
+ # next_token: "NextToken",
1712
+ # workflow_id: "WorkflowId", # required
1713
+ # })
1714
+ #
1715
+ # @example Response structure
1716
+ #
1717
+ # resp.next_token #=> String
1718
+ # resp.workflow_id #=> String
1719
+ # resp.executions #=> Array
1720
+ # resp.executions[0].execution_id #=> String
1721
+ # resp.executions[0].initial_file_location.s3_file_location.bucket #=> String
1722
+ # resp.executions[0].initial_file_location.s3_file_location.key #=> String
1723
+ # resp.executions[0].initial_file_location.s3_file_location.version_id #=> String
1724
+ # resp.executions[0].initial_file_location.s3_file_location.etag #=> String
1725
+ # resp.executions[0].initial_file_location.efs_file_location.file_system_id #=> String
1726
+ # resp.executions[0].initial_file_location.efs_file_location.path #=> String
1727
+ # resp.executions[0].service_metadata.user_details.user_name #=> String
1728
+ # resp.executions[0].service_metadata.user_details.server_id #=> String
1729
+ # resp.executions[0].service_metadata.user_details.session_id #=> String
1730
+ # resp.executions[0].status #=> String, one of "IN_PROGRESS", "COMPLETED", "EXCEPTION", "HANDLING_EXCEPTION"
1731
+ #
1732
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListExecutions AWS API Documentation
1733
+ #
1734
+ # @overload list_executions(params = {})
1735
+ # @param [Hash] params ({})
1736
+ def list_executions(params = {}, options = {})
1737
+ req = build_request(:list_executions, params)
1738
+ req.send_request(options)
1739
+ end
1740
+
1365
1741
  # Lists the security policies that are attached to your file transfer
1366
1742
  # protocol-enabled servers.
1367
1743
  #
@@ -1558,6 +1934,86 @@ module Aws::Transfer
1558
1934
  req.send_request(options)
1559
1935
  end
1560
1936
 
1937
+ # Lists all of your workflows.
1938
+ #
1939
+ # @option params [Integer] :max_results
1940
+ # Specifies the maximum number of workflows to return.
1941
+ #
1942
+ # @option params [String] :next_token
1943
+ # `ListWorkflows` returns the `NextToken` parameter in the output. You
1944
+ # can then pass the `NextToken` parameter in a subsequent command to
1945
+ # continue listing additional workflows.
1946
+ #
1947
+ # @return [Types::ListWorkflowsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1948
+ #
1949
+ # * {Types::ListWorkflowsResponse#next_token #next_token} => String
1950
+ # * {Types::ListWorkflowsResponse#workflows #workflows} => Array&lt;Types::ListedWorkflow&gt;
1951
+ #
1952
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1953
+ #
1954
+ # @example Request syntax with placeholder values
1955
+ #
1956
+ # resp = client.list_workflows({
1957
+ # max_results: 1,
1958
+ # next_token: "NextToken",
1959
+ # })
1960
+ #
1961
+ # @example Response structure
1962
+ #
1963
+ # resp.next_token #=> String
1964
+ # resp.workflows #=> Array
1965
+ # resp.workflows[0].workflow_id #=> String
1966
+ # resp.workflows[0].description #=> String
1967
+ # resp.workflows[0].arn #=> String
1968
+ #
1969
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/ListWorkflows AWS API Documentation
1970
+ #
1971
+ # @overload list_workflows(params = {})
1972
+ # @param [Hash] params ({})
1973
+ def list_workflows(params = {}, options = {})
1974
+ req = build_request(:list_workflows, params)
1975
+ req.send_request(options)
1976
+ end
1977
+
1978
+ # Sends a callback for asynchronous custom steps.
1979
+ #
1980
+ # The `ExecutionId`, `WorkflowId`, and `Token` are passed to the target
1981
+ # resource during execution of a custom step of a workflow. You must
1982
+ # include those with their callback as well as providing a status.
1983
+ #
1984
+ # @option params [required, String] :workflow_id
1985
+ # A unique identifier for the workflow.
1986
+ #
1987
+ # @option params [required, String] :execution_id
1988
+ # A unique identifier for the execution of a workflow.
1989
+ #
1990
+ # @option params [required, String] :token
1991
+ # Used to distinguish between multiple callbacks for multiple Lambda
1992
+ # steps within the same execution.
1993
+ #
1994
+ # @option params [required, String] :status
1995
+ # Indicates whether the specified step succeeded or failed.
1996
+ #
1997
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1998
+ #
1999
+ # @example Request syntax with placeholder values
2000
+ #
2001
+ # resp = client.send_workflow_step_state({
2002
+ # workflow_id: "WorkflowId", # required
2003
+ # execution_id: "ExecutionId", # required
2004
+ # token: "CallbackToken", # required
2005
+ # status: "SUCCESS", # required, accepts SUCCESS, FAILURE
2006
+ # })
2007
+ #
2008
+ # @see http://docs.aws.amazon.com/goto/WebAPI/transfer-2018-11-05/SendWorkflowStepState AWS API Documentation
2009
+ #
2010
+ # @overload send_workflow_step_state(params = {})
2011
+ # @param [Hash] params ({})
2012
+ def send_workflow_step_state(params = {}, options = {})
2013
+ req = build_request(:send_workflow_step_state, params)
2014
+ req.send_request(options)
2015
+ end
2016
+
1561
2017
  # Changes the state of a file transfer protocol-enabled server from
1562
2018
  # `OFFLINE` to `ONLINE`. It has no impact on a server that is already
1563
2019
  # `ONLINE`. An `ONLINE` server can accept and process file transfer
@@ -1672,6 +2128,31 @@ module Aws::Transfer
1672
2128
  # identity provider integration to ensure that your users can
1673
2129
  # successfully use the service.
1674
2130
  #
2131
+ # The `ServerId` and `UserName` parameters are required. The
2132
+ # `ServerProtocol`, `SourceIp`, and `UserPassword` are all optional.
2133
+ #
2134
+ # <note markdown="1"> You cannot use `TestIdentityProvider` if the `IdentityProviderType` of
2135
+ # your server is `SERVICE_MANAGED`.
2136
+ #
2137
+ # </note>
2138
+ #
2139
+ # * If you provide any incorrect values for any parameters, the
2140
+ # `Response` field is empty.
2141
+ #
2142
+ # * If you provide a server ID for a server that uses service-managed
2143
+ # users, you get an error:
2144
+ #
2145
+ # ` An error occurred (InvalidRequestException) when calling the
2146
+ # TestIdentityProvider operation: s-server-ID not configured for
2147
+ # external auth `
2148
+ #
2149
+ # * If you enter a Server ID for the `--server-id` parameter that does
2150
+ # not identify an actual Transfer server, you receive the following
2151
+ # error:
2152
+ #
2153
+ # `An error occurred (ResourceNotFoundException) when calling the
2154
+ # TestIdentityProvider operation: Unknown server`
2155
+ #
1675
2156
  # @option params [required, String] :server_id
1676
2157
  # A system-assigned identifier for a specific server. That server's
1677
2158
  # user authentication method is tested with a user name and password.
@@ -1777,9 +2258,8 @@ module Aws::Transfer
1777
2258
  # directory to be when they log into the server. If you set it to
1778
2259
  # `PATH`, the user will see the absolute Amazon S3 bucket or EFS paths
1779
2260
  # 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.
2261
+ # `LOGICAL`, you need to provide mappings in the `HomeDirectoryMappings`
2262
+ # for how you want to make Amazon S3 or EFS paths visible to your users.
1783
2263
  #
1784
2264
  # @option params [Array<Types::HomeDirectoryMapEntry>] :home_directory_mappings
1785
2265
  # Logical directory mappings that specify what Amazon S3 or Amazon EFS
@@ -1794,13 +2274,13 @@ module Aws::Transfer
1794
2274
  #
1795
2275
  # The following is an `Entry` and `Target` pair example.
1796
2276
  #
1797
- # `[ \{ "Entry": "your-personal-report.pdf", "Target":
1798
- # "/bucket3/customized-reports/$\{transfer:UserName\}.pdf" \} ]`
2277
+ # `[ \{ "Entry": "/directory1", "Target":
2278
+ # "/bucket_name/home/mydirectory" \} ]`
1799
2279
  #
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.
2280
+ # In most cases, you can use this value instead of the session policy to
2281
+ # lock down your user to the designated home directory ("`chroot`").
2282
+ # To do this, you can set `Entry` to `/` and set `Target` to the
2283
+ # `HomeDirectory` parameter value.
1804
2284
  #
1805
2285
  # The following is an `Entry` and `Target` pair example for `chroot`.
1806
2286
  #
@@ -1818,22 +2298,21 @@ module Aws::Transfer
1818
2298
  # </note>
1819
2299
  #
1820
2300
  # @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\}`,
2301
+ # A session policy for your user so that you can use the same IAM role
2302
+ # across multiple users. This policy scopes down user access to portions
2303
+ # of their Amazon S3 bucket. Variables that you can use inside this
2304
+ # policy include `$\{Transfer:UserName\}`,
1825
2305
  # `$\{Transfer:HomeDirectory\}`, and `$\{Transfer:HomeBucket\}`.
1826
2306
  #
1827
- # <note markdown="1"> This only applies when domain of `ServerId` is S3. Amazon EFS does not
1828
- # use scope down policy.
2307
+ # <note markdown="1"> This only applies when the domain of `ServerId` is S3. EFS does not
2308
+ # use session policies.
1829
2309
  #
1830
- # For scope-down policies, Amazon Web ServicesTransfer Family stores the
2310
+ # For session policies, Amazon Web Services Transfer Family stores the
1831
2311
  # policy as a JSON blob, instead of the Amazon Resource Name (ARN) of
1832
2312
  # the policy. You save the policy as a JSON blob and pass it in the
1833
2313
  # `Policy` argument.
1834
2314
  #
1835
- # For an example of a scope-down policy, see [Example scope-down
1836
- # policy][1].
2315
+ # For an example of a session policy, see [Example session policy][1].
1837
2316
  #
1838
2317
  # For more information, see [AssumeRole][2] in the *Amazon Web
1839
2318
  # ServicesSecurity Token Service API Reference*.
@@ -1842,7 +2321,7 @@ module Aws::Transfer
1842
2321
  #
1843
2322
  #
1844
2323
  #
1845
- # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/scope-down-policy.html
2324
+ # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/session-policy.html
1846
2325
  # [2]: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html
1847
2326
  #
1848
2327
  # @option params [Types::PosixProfile] :posix_profile
@@ -2077,6 +2556,10 @@ module Aws::Transfer
2077
2556
  # A system-assigned unique identifier for a server instance that the
2078
2557
  # user account is assigned to.
2079
2558
  #
2559
+ # @option params [Types::WorkflowDetails] :workflow_details
2560
+ # Specifies the workflow ID for the workflow to assign and the execution
2561
+ # role used for executing the workflow.
2562
+ #
2080
2563
  # @return [Types::UpdateServerResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2081
2564
  #
2082
2565
  # * {Types::UpdateServerResponse#server_id #server_id} => String
@@ -2106,6 +2589,14 @@ module Aws::Transfer
2106
2589
  # protocols: ["SFTP"], # accepts SFTP, FTP, FTPS
2107
2590
  # security_policy_name: "SecurityPolicyName",
2108
2591
  # server_id: "ServerId", # required
2592
+ # workflow_details: {
2593
+ # on_upload: [ # required
2594
+ # {
2595
+ # workflow_id: "WorkflowId", # required
2596
+ # execution_role: "Role", # required
2597
+ # },
2598
+ # ],
2599
+ # },
2109
2600
  # })
2110
2601
  #
2111
2602
  # @example Response structure
@@ -2139,9 +2630,8 @@ module Aws::Transfer
2139
2630
  # directory to be when they log into the server. If you set it to
2140
2631
  # `PATH`, the user will see the absolute Amazon S3 bucket or EFS paths
2141
2632
  # 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.
2633
+ # `LOGICAL`, you need to provide mappings in the `HomeDirectoryMappings`
2634
+ # for how you want to make Amazon S3 or EFS paths visible to your users.
2145
2635
  #
2146
2636
  # @option params [Array<Types::HomeDirectoryMapEntry>] :home_directory_mappings
2147
2637
  # Logical directory mappings that specify what Amazon S3 or Amazon EFS
@@ -2156,13 +2646,13 @@ module Aws::Transfer
2156
2646
  #
2157
2647
  # The following is an `Entry` and `Target` pair example.
2158
2648
  #
2159
- # `[ \{ "Entry": "your-personal-report.pdf", "Target":
2160
- # "/bucket3/customized-reports/$\{transfer:UserName\}.pdf" \} ]`
2649
+ # `[ \{ "Entry": "/directory1", "Target":
2650
+ # "/bucket_name/home/mydirectory" \} ]`
2161
2651
  #
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.
2652
+ # In most cases, you can use this value instead of the session policy to
2653
+ # lock down your user to the designated home directory ("`chroot`").
2654
+ # To do this, you can set `Entry` to '/' and set `Target` to the
2655
+ # HomeDirectory parameter value.
2166
2656
  #
2167
2657
  # The following is an `Entry` and `Target` pair example for `chroot`.
2168
2658
  #
@@ -2180,21 +2670,21 @@ module Aws::Transfer
2180
2670
  # </note>
2181
2671
  #
2182
2672
  # @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\}`,
2673
+ # A session policy for your user so that you can use the same IAM role
2674
+ # across multiple users. This policy scopes down user access to portions
2675
+ # of their Amazon S3 bucket. Variables that you can use inside this
2676
+ # policy include `$\{Transfer:UserName\}`,
2187
2677
  # `$\{Transfer:HomeDirectory\}`, and `$\{Transfer:HomeBucket\}`.
2188
2678
  #
2189
- # <note markdown="1"> This only applies when domain of `ServerId` is S3. Amazon EFS does not
2190
- # use scope-down policies.
2679
+ # <note markdown="1"> This only applies when the domain of `ServerId` is S3. EFS does not
2680
+ # use session policies.
2191
2681
  #
2192
- # For scope-down policies, Amazon Web ServicesTransfer Family stores the
2682
+ # For session policies, Amazon Web Services Transfer Family stores the
2193
2683
  # policy as a JSON blob, instead of the Amazon Resource Name (ARN) of
2194
2684
  # the policy. You save the policy as a JSON blob and pass it in the
2195
2685
  # `Policy` argument.
2196
2686
  #
2197
- # For an example of a scope-down policy, see [Creating a scope-down
2687
+ # For an example of a session policy, see [Creating a session
2198
2688
  # policy][1].
2199
2689
  #
2200
2690
  # For more information, see [AssumeRole][2] in the *Amazon Web Services
@@ -2204,7 +2694,7 @@ module Aws::Transfer
2204
2694
  #
2205
2695
  #
2206
2696
  #
2207
- # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/users.html#users-policies-scope-down
2697
+ # [1]: https://docs.aws.amazon.com/transfer/latest/userguide/session-policy
2208
2698
  # [2]: https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html
2209
2699
  #
2210
2700
  # @option params [Types::PosixProfile] :posix_profile
@@ -2290,7 +2780,7 @@ module Aws::Transfer
2290
2780
  params: params,
2291
2781
  config: config)
2292
2782
  context[:gem_name] = 'aws-sdk-transfer'
2293
- context[:gem_version] = '1.37.0'
2783
+ context[:gem_version] = '1.41.0'
2294
2784
  Seahorse::Client::Request.new(handlers, context)
2295
2785
  end
2296
2786