aws-sdk-transfer 1.38.0 → 1.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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