aws-sdk-core 2.3.23 → 2.4.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.
- checksums.yaml +5 -5
- data/apis/devicefarm/2015-06-23/api-2.json +213 -2
- data/apis/ssm/2014-11-06/api-2.json +58 -4
- data/lib/aws-sdk-core.rb +8 -0
- data/lib/aws-sdk-core/client.rb +0 -10
- data/lib/aws-sdk-core/credential_provider_chain.rb +22 -0
- data/lib/aws-sdk-core/errors.rb +4 -0
- data/lib/aws-sdk-core/ini_parser.rb +40 -0
- data/lib/aws-sdk-core/plugins/regional_endpoint.rb +14 -4
- data/lib/aws-sdk-core/shared_config.rb +238 -0
- data/lib/aws-sdk-core/shared_credentials.rb +14 -53
- data/lib/aws-sdk-core/version.rb +1 -1
- metadata +8 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 20ae4bc1a30dde8b3aa45baeb0dd26239e7a3500
|
|
4
|
+
data.tar.gz: 8040c96ea9f350aa9f9daaa70e58fef875c1e085
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 172105f116f7c4757c1e6bd614af4e5f72e38ebe1c1462913ba79bdb0cead817ed208d6a9c6380490d4458d380ed997382864a450a2e12d08e4852ba5bb66526
|
|
7
|
+
data.tar.gz: 711905cc9c23291ad37891321e16071ef794edeb1918579988acd8a585ed95784edc5df016378da3c60a8fe62df350274c3bc50a70b081cff47a2ce641181dfb
|
|
@@ -40,6 +40,21 @@
|
|
|
40
40
|
{"shape":"ServiceAccountException"}
|
|
41
41
|
]
|
|
42
42
|
},
|
|
43
|
+
"CreateRemoteAccessSession":{
|
|
44
|
+
"name":"CreateRemoteAccessSession",
|
|
45
|
+
"http":{
|
|
46
|
+
"method":"POST",
|
|
47
|
+
"requestUri":"/"
|
|
48
|
+
},
|
|
49
|
+
"input":{"shape":"CreateRemoteAccessSessionRequest"},
|
|
50
|
+
"output":{"shape":"CreateRemoteAccessSessionResult"},
|
|
51
|
+
"errors":[
|
|
52
|
+
{"shape":"ArgumentException"},
|
|
53
|
+
{"shape":"NotFoundException"},
|
|
54
|
+
{"shape":"LimitExceededException"},
|
|
55
|
+
{"shape":"ServiceAccountException"}
|
|
56
|
+
]
|
|
57
|
+
},
|
|
43
58
|
"CreateUpload":{
|
|
44
59
|
"name":"CreateUpload",
|
|
45
60
|
"http":{
|
|
@@ -85,6 +100,21 @@
|
|
|
85
100
|
{"shape":"ServiceAccountException"}
|
|
86
101
|
]
|
|
87
102
|
},
|
|
103
|
+
"DeleteRemoteAccessSession":{
|
|
104
|
+
"name":"DeleteRemoteAccessSession",
|
|
105
|
+
"http":{
|
|
106
|
+
"method":"POST",
|
|
107
|
+
"requestUri":"/"
|
|
108
|
+
},
|
|
109
|
+
"input":{"shape":"DeleteRemoteAccessSessionRequest"},
|
|
110
|
+
"output":{"shape":"DeleteRemoteAccessSessionResult"},
|
|
111
|
+
"errors":[
|
|
112
|
+
{"shape":"ArgumentException"},
|
|
113
|
+
{"shape":"NotFoundException"},
|
|
114
|
+
{"shape":"LimitExceededException"},
|
|
115
|
+
{"shape":"ServiceAccountException"}
|
|
116
|
+
]
|
|
117
|
+
},
|
|
88
118
|
"DeleteRun":{
|
|
89
119
|
"name":"DeleteRun",
|
|
90
120
|
"http":{
|
|
@@ -221,6 +251,21 @@
|
|
|
221
251
|
{"shape":"ServiceAccountException"}
|
|
222
252
|
]
|
|
223
253
|
},
|
|
254
|
+
"GetRemoteAccessSession":{
|
|
255
|
+
"name":"GetRemoteAccessSession",
|
|
256
|
+
"http":{
|
|
257
|
+
"method":"POST",
|
|
258
|
+
"requestUri":"/"
|
|
259
|
+
},
|
|
260
|
+
"input":{"shape":"GetRemoteAccessSessionRequest"},
|
|
261
|
+
"output":{"shape":"GetRemoteAccessSessionResult"},
|
|
262
|
+
"errors":[
|
|
263
|
+
{"shape":"ArgumentException"},
|
|
264
|
+
{"shape":"NotFoundException"},
|
|
265
|
+
{"shape":"LimitExceededException"},
|
|
266
|
+
{"shape":"ServiceAccountException"}
|
|
267
|
+
]
|
|
268
|
+
},
|
|
224
269
|
"GetRun":{
|
|
225
270
|
"name":"GetRun",
|
|
226
271
|
"http":{
|
|
@@ -281,6 +326,21 @@
|
|
|
281
326
|
{"shape":"ServiceAccountException"}
|
|
282
327
|
]
|
|
283
328
|
},
|
|
329
|
+
"InstallToRemoteAccessSession":{
|
|
330
|
+
"name":"InstallToRemoteAccessSession",
|
|
331
|
+
"http":{
|
|
332
|
+
"method":"POST",
|
|
333
|
+
"requestUri":"/"
|
|
334
|
+
},
|
|
335
|
+
"input":{"shape":"InstallToRemoteAccessSessionRequest"},
|
|
336
|
+
"output":{"shape":"InstallToRemoteAccessSessionResult"},
|
|
337
|
+
"errors":[
|
|
338
|
+
{"shape":"ArgumentException"},
|
|
339
|
+
{"shape":"NotFoundException"},
|
|
340
|
+
{"shape":"LimitExceededException"},
|
|
341
|
+
{"shape":"ServiceAccountException"}
|
|
342
|
+
]
|
|
343
|
+
},
|
|
284
344
|
"ListArtifacts":{
|
|
285
345
|
"name":"ListArtifacts",
|
|
286
346
|
"http":{
|
|
@@ -388,6 +448,21 @@
|
|
|
388
448
|
{"shape":"ServiceAccountException"}
|
|
389
449
|
]
|
|
390
450
|
},
|
|
451
|
+
"ListRemoteAccessSessions":{
|
|
452
|
+
"name":"ListRemoteAccessSessions",
|
|
453
|
+
"http":{
|
|
454
|
+
"method":"POST",
|
|
455
|
+
"requestUri":"/"
|
|
456
|
+
},
|
|
457
|
+
"input":{"shape":"ListRemoteAccessSessionsRequest"},
|
|
458
|
+
"output":{"shape":"ListRemoteAccessSessionsResult"},
|
|
459
|
+
"errors":[
|
|
460
|
+
{"shape":"ArgumentException"},
|
|
461
|
+
{"shape":"NotFoundException"},
|
|
462
|
+
{"shape":"LimitExceededException"},
|
|
463
|
+
{"shape":"ServiceAccountException"}
|
|
464
|
+
]
|
|
465
|
+
},
|
|
391
466
|
"ListRuns":{
|
|
392
467
|
"name":"ListRuns",
|
|
393
468
|
"http":{
|
|
@@ -526,6 +601,21 @@
|
|
|
526
601
|
{"shape":"ServiceAccountException"}
|
|
527
602
|
]
|
|
528
603
|
},
|
|
604
|
+
"StopRemoteAccessSession":{
|
|
605
|
+
"name":"StopRemoteAccessSession",
|
|
606
|
+
"http":{
|
|
607
|
+
"method":"POST",
|
|
608
|
+
"requestUri":"/"
|
|
609
|
+
},
|
|
610
|
+
"input":{"shape":"StopRemoteAccessSessionRequest"},
|
|
611
|
+
"output":{"shape":"StopRemoteAccessSessionResult"},
|
|
612
|
+
"errors":[
|
|
613
|
+
{"shape":"ArgumentException"},
|
|
614
|
+
{"shape":"NotFoundException"},
|
|
615
|
+
{"shape":"LimitExceededException"},
|
|
616
|
+
{"shape":"ServiceAccountException"}
|
|
617
|
+
]
|
|
618
|
+
},
|
|
529
619
|
"StopRun":{
|
|
530
620
|
"name":"StopRun",
|
|
531
621
|
"http":{
|
|
@@ -626,6 +716,7 @@
|
|
|
626
716
|
"SCREENSHOT",
|
|
627
717
|
"DEVICE_LOG",
|
|
628
718
|
"MESSAGE_LOG",
|
|
719
|
+
"VIDEO_LOG",
|
|
629
720
|
"RESULT_LOG",
|
|
630
721
|
"SERVICE_LOG",
|
|
631
722
|
"WEBKIT_LOG",
|
|
@@ -718,6 +809,31 @@
|
|
|
718
809
|
"project":{"shape":"Project"}
|
|
719
810
|
}
|
|
720
811
|
},
|
|
812
|
+
"CreateRemoteAccessSessionConfiguration":{
|
|
813
|
+
"type":"structure",
|
|
814
|
+
"members":{
|
|
815
|
+
"billingMethod":{"shape":"BillingMethod"}
|
|
816
|
+
}
|
|
817
|
+
},
|
|
818
|
+
"CreateRemoteAccessSessionRequest":{
|
|
819
|
+
"type":"structure",
|
|
820
|
+
"required":[
|
|
821
|
+
"projectArn",
|
|
822
|
+
"deviceArn"
|
|
823
|
+
],
|
|
824
|
+
"members":{
|
|
825
|
+
"projectArn":{"shape":"AmazonResourceName"},
|
|
826
|
+
"deviceArn":{"shape":"AmazonResourceName"},
|
|
827
|
+
"name":{"shape":"Name"},
|
|
828
|
+
"configuration":{"shape":"CreateRemoteAccessSessionConfiguration"}
|
|
829
|
+
}
|
|
830
|
+
},
|
|
831
|
+
"CreateRemoteAccessSessionResult":{
|
|
832
|
+
"type":"structure",
|
|
833
|
+
"members":{
|
|
834
|
+
"remoteAccessSession":{"shape":"RemoteAccessSession"}
|
|
835
|
+
}
|
|
836
|
+
},
|
|
721
837
|
"CreateUploadRequest":{
|
|
722
838
|
"type":"structure",
|
|
723
839
|
"required":[
|
|
@@ -767,6 +883,18 @@
|
|
|
767
883
|
"members":{
|
|
768
884
|
}
|
|
769
885
|
},
|
|
886
|
+
"DeleteRemoteAccessSessionRequest":{
|
|
887
|
+
"type":"structure",
|
|
888
|
+
"required":["arn"],
|
|
889
|
+
"members":{
|
|
890
|
+
"arn":{"shape":"AmazonResourceName"}
|
|
891
|
+
}
|
|
892
|
+
},
|
|
893
|
+
"DeleteRemoteAccessSessionResult":{
|
|
894
|
+
"type":"structure",
|
|
895
|
+
"members":{
|
|
896
|
+
}
|
|
897
|
+
},
|
|
770
898
|
"DeleteRunRequest":{
|
|
771
899
|
"type":"structure",
|
|
772
900
|
"required":["arn"],
|
|
@@ -807,7 +935,10 @@
|
|
|
807
935
|
"memory":{"shape":"Long"},
|
|
808
936
|
"image":{"shape":"String"},
|
|
809
937
|
"carrier":{"shape":"String"},
|
|
810
|
-
"radio":{"shape":"String"}
|
|
938
|
+
"radio":{"shape":"String"},
|
|
939
|
+
"remoteAccessEnabled":{"shape":"Boolean"},
|
|
940
|
+
"fleetType":{"shape":"String"},
|
|
941
|
+
"fleetName":{"shape":"String"}
|
|
811
942
|
}
|
|
812
943
|
},
|
|
813
944
|
"DeviceAttribute":{
|
|
@@ -816,7 +947,8 @@
|
|
|
816
947
|
"ARN",
|
|
817
948
|
"PLATFORM",
|
|
818
949
|
"FORM_FACTOR",
|
|
819
|
-
"MANUFACTURER"
|
|
950
|
+
"MANUFACTURER",
|
|
951
|
+
"REMOTE_ACCESS_ENABLED"
|
|
820
952
|
]
|
|
821
953
|
},
|
|
822
954
|
"DeviceFormFactor":{
|
|
@@ -1003,6 +1135,19 @@
|
|
|
1003
1135
|
"project":{"shape":"Project"}
|
|
1004
1136
|
}
|
|
1005
1137
|
},
|
|
1138
|
+
"GetRemoteAccessSessionRequest":{
|
|
1139
|
+
"type":"structure",
|
|
1140
|
+
"required":["arn"],
|
|
1141
|
+
"members":{
|
|
1142
|
+
"arn":{"shape":"AmazonResourceName"}
|
|
1143
|
+
}
|
|
1144
|
+
},
|
|
1145
|
+
"GetRemoteAccessSessionResult":{
|
|
1146
|
+
"type":"structure",
|
|
1147
|
+
"members":{
|
|
1148
|
+
"remoteAccessSession":{"shape":"RemoteAccessSession"}
|
|
1149
|
+
}
|
|
1150
|
+
},
|
|
1006
1151
|
"GetRunRequest":{
|
|
1007
1152
|
"type":"structure",
|
|
1008
1153
|
"required":["arn"],
|
|
@@ -1073,6 +1218,23 @@
|
|
|
1073
1218
|
"type":"list",
|
|
1074
1219
|
"member":{"shape":"IncompatibilityMessage"}
|
|
1075
1220
|
},
|
|
1221
|
+
"InstallToRemoteAccessSessionRequest":{
|
|
1222
|
+
"type":"structure",
|
|
1223
|
+
"required":[
|
|
1224
|
+
"remoteAccessSessionArn",
|
|
1225
|
+
"appArn"
|
|
1226
|
+
],
|
|
1227
|
+
"members":{
|
|
1228
|
+
"remoteAccessSessionArn":{"shape":"AmazonResourceName"},
|
|
1229
|
+
"appArn":{"shape":"AmazonResourceName"}
|
|
1230
|
+
}
|
|
1231
|
+
},
|
|
1232
|
+
"InstallToRemoteAccessSessionResult":{
|
|
1233
|
+
"type":"structure",
|
|
1234
|
+
"members":{
|
|
1235
|
+
"appUpload":{"shape":"Upload"}
|
|
1236
|
+
}
|
|
1237
|
+
},
|
|
1076
1238
|
"Integer":{"type":"integer"},
|
|
1077
1239
|
"Job":{
|
|
1078
1240
|
"type":"structure",
|
|
@@ -1206,6 +1368,21 @@
|
|
|
1206
1368
|
"nextToken":{"shape":"PaginationToken"}
|
|
1207
1369
|
}
|
|
1208
1370
|
},
|
|
1371
|
+
"ListRemoteAccessSessionsRequest":{
|
|
1372
|
+
"type":"structure",
|
|
1373
|
+
"required":["arn"],
|
|
1374
|
+
"members":{
|
|
1375
|
+
"arn":{"shape":"AmazonResourceName"},
|
|
1376
|
+
"nextToken":{"shape":"PaginationToken"}
|
|
1377
|
+
}
|
|
1378
|
+
},
|
|
1379
|
+
"ListRemoteAccessSessionsResult":{
|
|
1380
|
+
"type":"structure",
|
|
1381
|
+
"members":{
|
|
1382
|
+
"remoteAccessSessions":{"shape":"RemoteAccessSessions"},
|
|
1383
|
+
"nextToken":{"shape":"PaginationToken"}
|
|
1384
|
+
}
|
|
1385
|
+
},
|
|
1209
1386
|
"ListRunsRequest":{
|
|
1210
1387
|
"type":"structure",
|
|
1211
1388
|
"required":["arn"],
|
|
@@ -1483,6 +1660,27 @@
|
|
|
1483
1660
|
"type":"list",
|
|
1484
1661
|
"member":{"shape":"RecurringCharge"}
|
|
1485
1662
|
},
|
|
1663
|
+
"RemoteAccessSession":{
|
|
1664
|
+
"type":"structure",
|
|
1665
|
+
"members":{
|
|
1666
|
+
"arn":{"shape":"AmazonResourceName"},
|
|
1667
|
+
"name":{"shape":"Name"},
|
|
1668
|
+
"created":{"shape":"DateTime"},
|
|
1669
|
+
"status":{"shape":"ExecutionStatus"},
|
|
1670
|
+
"result":{"shape":"ExecutionResult"},
|
|
1671
|
+
"message":{"shape":"Message"},
|
|
1672
|
+
"started":{"shape":"DateTime"},
|
|
1673
|
+
"stopped":{"shape":"DateTime"},
|
|
1674
|
+
"device":{"shape":"Device"},
|
|
1675
|
+
"billingMethod":{"shape":"BillingMethod"},
|
|
1676
|
+
"deviceMinutes":{"shape":"DeviceMinutes"},
|
|
1677
|
+
"endpoint":{"shape":"String"}
|
|
1678
|
+
}
|
|
1679
|
+
},
|
|
1680
|
+
"RemoteAccessSessions":{
|
|
1681
|
+
"type":"list",
|
|
1682
|
+
"member":{"shape":"RemoteAccessSession"}
|
|
1683
|
+
},
|
|
1486
1684
|
"RenewOfferingRequest":{
|
|
1487
1685
|
"type":"structure",
|
|
1488
1686
|
"members":{
|
|
@@ -1634,6 +1832,19 @@
|
|
|
1634
1832
|
},
|
|
1635
1833
|
"exception":true
|
|
1636
1834
|
},
|
|
1835
|
+
"StopRemoteAccessSessionRequest":{
|
|
1836
|
+
"type":"structure",
|
|
1837
|
+
"required":["arn"],
|
|
1838
|
+
"members":{
|
|
1839
|
+
"arn":{"shape":"AmazonResourceName"}
|
|
1840
|
+
}
|
|
1841
|
+
},
|
|
1842
|
+
"StopRemoteAccessSessionResult":{
|
|
1843
|
+
"type":"structure",
|
|
1844
|
+
"members":{
|
|
1845
|
+
"remoteAccessSession":{"shape":"RemoteAccessSession"}
|
|
1846
|
+
}
|
|
1847
|
+
},
|
|
1637
1848
|
"StopRunRequest":{
|
|
1638
1849
|
"type":"structure",
|
|
1639
1850
|
"required":["arn"],
|
|
@@ -366,7 +366,9 @@
|
|
|
366
366
|
{"shape":"InvalidOutputFolder"},
|
|
367
367
|
{"shape":"InvalidParameters"},
|
|
368
368
|
{"shape":"UnsupportedPlatformType"},
|
|
369
|
-
{"shape":"MaxDocumentSizeExceeded"}
|
|
369
|
+
{"shape":"MaxDocumentSizeExceeded"},
|
|
370
|
+
{"shape":"InvalidRole"},
|
|
371
|
+
{"shape":"InvalidNotificationConfig"}
|
|
370
372
|
]
|
|
371
373
|
},
|
|
372
374
|
"UpdateAssociationStatus":{
|
|
@@ -597,7 +599,9 @@
|
|
|
597
599
|
"RequestedDateTime":{"shape":"DateTime"},
|
|
598
600
|
"Status":{"shape":"CommandStatus"},
|
|
599
601
|
"OutputS3BucketName":{"shape":"S3BucketName"},
|
|
600
|
-
"OutputS3KeyPrefix":{"shape":"S3KeyPrefix"}
|
|
602
|
+
"OutputS3KeyPrefix":{"shape":"S3KeyPrefix"},
|
|
603
|
+
"ServiceRole":{"shape":"ServiceRole"},
|
|
604
|
+
"NotificationConfig":{"shape":"NotificationConfig"}
|
|
601
605
|
}
|
|
602
606
|
},
|
|
603
607
|
"CommandFilter":{
|
|
@@ -644,7 +648,9 @@
|
|
|
644
648
|
"RequestedDateTime":{"shape":"DateTime"},
|
|
645
649
|
"Status":{"shape":"CommandInvocationStatus"},
|
|
646
650
|
"TraceOutput":{"shape":"InvocationTraceOutput"},
|
|
647
|
-
"CommandPlugins":{"shape":"CommandPluginList"}
|
|
651
|
+
"CommandPlugins":{"shape":"CommandPluginList"},
|
|
652
|
+
"ServiceRole":{"shape":"ServiceRole"},
|
|
653
|
+
"NotificationConfig":{"shape":"NotificationConfig"}
|
|
648
654
|
}
|
|
649
655
|
},
|
|
650
656
|
"CommandInvocationList":{
|
|
@@ -1346,6 +1352,13 @@
|
|
|
1346
1352
|
},
|
|
1347
1353
|
"exception":true
|
|
1348
1354
|
},
|
|
1355
|
+
"InvalidNotificationConfig":{
|
|
1356
|
+
"type":"structure",
|
|
1357
|
+
"members":{
|
|
1358
|
+
"Message":{"shape":"String"}
|
|
1359
|
+
},
|
|
1360
|
+
"exception":true
|
|
1361
|
+
},
|
|
1349
1362
|
"InvalidOutputFolder":{
|
|
1350
1363
|
"type":"structure",
|
|
1351
1364
|
"members":{
|
|
@@ -1378,6 +1391,13 @@
|
|
|
1378
1391
|
},
|
|
1379
1392
|
"exception":true
|
|
1380
1393
|
},
|
|
1394
|
+
"InvalidRole":{
|
|
1395
|
+
"type":"structure",
|
|
1396
|
+
"members":{
|
|
1397
|
+
"Message":{"shape":"String"}
|
|
1398
|
+
},
|
|
1399
|
+
"exception":true
|
|
1400
|
+
},
|
|
1381
1401
|
"InvocationTraceOutput":{
|
|
1382
1402
|
"type":"string",
|
|
1383
1403
|
"max":2500
|
|
@@ -1521,6 +1541,37 @@
|
|
|
1521
1541
|
}
|
|
1522
1542
|
},
|
|
1523
1543
|
"NextToken":{"type":"string"},
|
|
1544
|
+
"NotificationArn":{"type":"string"},
|
|
1545
|
+
"NotificationConfig":{
|
|
1546
|
+
"type":"structure",
|
|
1547
|
+
"members":{
|
|
1548
|
+
"NotificationArn":{"shape":"NotificationArn"},
|
|
1549
|
+
"NotificationEvents":{"shape":"NotificationEventList"},
|
|
1550
|
+
"NotificationType":{"shape":"NotificationType"}
|
|
1551
|
+
}
|
|
1552
|
+
},
|
|
1553
|
+
"NotificationEvent":{
|
|
1554
|
+
"type":"string",
|
|
1555
|
+
"enum":[
|
|
1556
|
+
"All",
|
|
1557
|
+
"InProgress",
|
|
1558
|
+
"Success",
|
|
1559
|
+
"TimedOut",
|
|
1560
|
+
"Cancelled",
|
|
1561
|
+
"Failed"
|
|
1562
|
+
]
|
|
1563
|
+
},
|
|
1564
|
+
"NotificationEventList":{
|
|
1565
|
+
"type":"list",
|
|
1566
|
+
"member":{"shape":"NotificationEvent"}
|
|
1567
|
+
},
|
|
1568
|
+
"NotificationType":{
|
|
1569
|
+
"type":"string",
|
|
1570
|
+
"enum":[
|
|
1571
|
+
"Command",
|
|
1572
|
+
"Invocation"
|
|
1573
|
+
]
|
|
1574
|
+
},
|
|
1524
1575
|
"ParameterName":{"type":"string"},
|
|
1525
1576
|
"ParameterValue":{"type":"string"},
|
|
1526
1577
|
"ParameterValueList":{
|
|
@@ -1626,7 +1677,9 @@
|
|
|
1626
1677
|
"Comment":{"shape":"Comment"},
|
|
1627
1678
|
"Parameters":{"shape":"Parameters"},
|
|
1628
1679
|
"OutputS3BucketName":{"shape":"S3BucketName"},
|
|
1629
|
-
"OutputS3KeyPrefix":{"shape":"S3KeyPrefix"}
|
|
1680
|
+
"OutputS3KeyPrefix":{"shape":"S3KeyPrefix"},
|
|
1681
|
+
"ServiceRoleArn":{"shape":"ServiceRole"},
|
|
1682
|
+
"NotificationConfig":{"shape":"NotificationConfig"}
|
|
1630
1683
|
}
|
|
1631
1684
|
},
|
|
1632
1685
|
"SendCommandResult":{
|
|
@@ -1635,6 +1688,7 @@
|
|
|
1635
1688
|
"Command":{"shape":"Command"}
|
|
1636
1689
|
}
|
|
1637
1690
|
},
|
|
1691
|
+
"ServiceRole":{"type":"string"},
|
|
1638
1692
|
"StatusAdditionalInfo":{
|
|
1639
1693
|
"type":"string",
|
|
1640
1694
|
"max":1024
|
data/lib/aws-sdk-core.rb
CHANGED
|
@@ -114,6 +114,7 @@ module Aws
|
|
|
114
114
|
autoload :EmptyStructure, 'aws-sdk-core/empty_structure'
|
|
115
115
|
autoload :EndpointProvider, 'aws-sdk-core/endpoint_provider'
|
|
116
116
|
autoload :Errors, 'aws-sdk-core/errors'
|
|
117
|
+
autoload :IniParser, 'aws-sdk-core/ini_parser'
|
|
117
118
|
autoload :InstanceProfileCredentials, 'aws-sdk-core/instance_profile_credentials'
|
|
118
119
|
autoload :Json, 'aws-sdk-core/json'
|
|
119
120
|
autoload :PageableResponse, 'aws-sdk-core/pageable_response'
|
|
@@ -123,6 +124,7 @@ module Aws
|
|
|
123
124
|
autoload :Partitions, 'aws-sdk-core/partitions'
|
|
124
125
|
autoload :RefreshingCredentials, 'aws-sdk-core/refreshing_credentials'
|
|
125
126
|
autoload :Service, 'aws-sdk-core/service'
|
|
127
|
+
autoload :SharedConfig, 'aws-sdk-core/shared_config'
|
|
126
128
|
autoload :SharedCredentials, 'aws-sdk-core/shared_credentials'
|
|
127
129
|
autoload :Structure, 'aws-sdk-core/structure'
|
|
128
130
|
autoload :TreeHash, 'aws-sdk-core/tree_hash'
|
|
@@ -274,6 +276,12 @@ module Aws
|
|
|
274
276
|
|
|
275
277
|
class << self
|
|
276
278
|
|
|
279
|
+
# @api private
|
|
280
|
+
def shared_config
|
|
281
|
+
enabled = ENV["AWS_SDK_LOAD_CONFIG"] ? true : false
|
|
282
|
+
@shared_config ||= SharedConfig.new(config_enabled: true)
|
|
283
|
+
end
|
|
284
|
+
|
|
277
285
|
# @return [Hash] Returns a hash of default configuration options shared
|
|
278
286
|
# by all constructed clients.
|
|
279
287
|
attr_reader :config
|
data/lib/aws-sdk-core/client.rb
CHANGED
|
@@ -49,19 +49,9 @@ module Aws
|
|
|
49
49
|
|
|
50
50
|
Api::Customizations.apply_plugins(client_class)
|
|
51
51
|
|
|
52
|
-
soft_deprecation
|
|
53
52
|
client_class
|
|
54
53
|
end
|
|
55
54
|
|
|
56
|
-
private
|
|
57
|
-
|
|
58
|
-
def soft_deprecation
|
|
59
|
-
unless @warned
|
|
60
|
-
@warned = true
|
|
61
|
-
warn('NEWER VERSION AVAILABLE: Please upgrade to AWS SDK For Ruby V3')
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
55
|
end
|
|
66
56
|
end
|
|
67
57
|
end
|
|
@@ -21,6 +21,7 @@ module Aws
|
|
|
21
21
|
[
|
|
22
22
|
[:static_credentials, {}],
|
|
23
23
|
[:env_credentials, {}],
|
|
24
|
+
[:assume_role_credentials, {}],
|
|
24
25
|
[:shared_credentials, {}],
|
|
25
26
|
[:instance_profile_credentials, {
|
|
26
27
|
retries: 0,
|
|
@@ -67,6 +68,20 @@ module Aws
|
|
|
67
68
|
nil
|
|
68
69
|
end
|
|
69
70
|
|
|
71
|
+
def assume_role_credentials(options)
|
|
72
|
+
if Aws.shared_config.config_enabled?
|
|
73
|
+
profile, region = nil, nil
|
|
74
|
+
if options[:config]
|
|
75
|
+
profile = options[:config].profile
|
|
76
|
+
region = options[:config].region
|
|
77
|
+
assume_role_with_profile(options[:config].profile, options[:config].region)
|
|
78
|
+
end
|
|
79
|
+
assume_role_with_profile(profile, region)
|
|
80
|
+
else
|
|
81
|
+
nil
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
70
85
|
def instance_profile_credentials(options)
|
|
71
86
|
if ENV["AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"]
|
|
72
87
|
ECSCredentials.new(options)
|
|
@@ -75,5 +90,12 @@ module Aws
|
|
|
75
90
|
end
|
|
76
91
|
end
|
|
77
92
|
|
|
93
|
+
def assume_role_with_profile(prof, region)
|
|
94
|
+
Aws.shared_config.assume_role_credentials_from_config(
|
|
95
|
+
profile: prof,
|
|
96
|
+
region: region
|
|
97
|
+
)
|
|
98
|
+
end
|
|
99
|
+
|
|
78
100
|
end
|
|
79
101
|
end
|
data/lib/aws-sdk-core/errors.rb
CHANGED
|
@@ -42,6 +42,10 @@ module Aws
|
|
|
42
42
|
# credentials profile does not exist.
|
|
43
43
|
class NoSuchProfileError < RuntimeError; end
|
|
44
44
|
|
|
45
|
+
# Raised when a {Service} is constructed, where Assume Role credentials are
|
|
46
|
+
# expected, and there is no source profile specified.
|
|
47
|
+
class NoSourceProfileError < RuntimeError; end
|
|
48
|
+
|
|
45
49
|
# Raised when a {Service} is constructed and credentials are not
|
|
46
50
|
# set, or the set credentials are empty.
|
|
47
51
|
class MissingCredentialsError < RuntimeError; end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Aws
|
|
2
|
+
class IniParser
|
|
3
|
+
class << self
|
|
4
|
+
|
|
5
|
+
def ini_parse(raw)
|
|
6
|
+
current_profile = nil
|
|
7
|
+
current_prefix = nil
|
|
8
|
+
raw.lines.inject({}) do |acc, line|
|
|
9
|
+
line = line.split(/^|\s;/).first # remove comments
|
|
10
|
+
profile = line.match(/^\[([^\[\]]+)\]\s*(#.+)?$/) unless line.nil?
|
|
11
|
+
if profile
|
|
12
|
+
current_profile = profile[1]
|
|
13
|
+
named_profile = current_profile.match(/^profile\s+(.+?)$/)
|
|
14
|
+
current_profile = named_profile[1] if named_profile
|
|
15
|
+
elsif current_profile
|
|
16
|
+
unless line.nil?
|
|
17
|
+
item = line.match(/^(.+?)\s*=\s*(.+?)\s*$/)
|
|
18
|
+
prefix = line.match(/^(.+?)\s*=\s*$/)
|
|
19
|
+
end
|
|
20
|
+
if item && item[1].match(/^\s+/)
|
|
21
|
+
# Need to add lines to a nested configuration.
|
|
22
|
+
inner_item = line.match(/^\s*(.+?)\s*=\s*(.+?)\s*$/)
|
|
23
|
+
acc[current_profile] ||= {}
|
|
24
|
+
acc[current_profile][current_prefix] ||= {}
|
|
25
|
+
acc[current_profile][current_prefix][inner_item[1]] = inner_item[2]
|
|
26
|
+
elsif item
|
|
27
|
+
current_prefix = nil
|
|
28
|
+
acc[current_profile] ||= {}
|
|
29
|
+
acc[current_profile][item[1]] = item[2]
|
|
30
|
+
elsif prefix
|
|
31
|
+
current_prefix = prefix[1]
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
acc
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -14,10 +14,11 @@ module Aws
|
|
|
14
14
|
# raised when region is not configured
|
|
15
15
|
MISSING_REGION = 'missing required configuration option :region'
|
|
16
16
|
|
|
17
|
-
option(:
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
option(:profile)
|
|
18
|
+
|
|
19
|
+
option(:region) do |cfg|
|
|
20
|
+
resolve_region(cfg)
|
|
21
|
+
end
|
|
21
22
|
|
|
22
23
|
option(:endpoint) do |cfg|
|
|
23
24
|
if endpoint_prefix = cfg.api.metadata['endpointPrefix']
|
|
@@ -33,6 +34,15 @@ module Aws
|
|
|
33
34
|
end
|
|
34
35
|
end
|
|
35
36
|
|
|
37
|
+
private
|
|
38
|
+
def self.resolve_region(cfg)
|
|
39
|
+
keys = %w(AWS_REGION AMAZON_REGION AWS_DEFAULT_REGION)
|
|
40
|
+
env_region = ENV.values_at(*keys).compact.first
|
|
41
|
+
env_region = nil if env_region == ''
|
|
42
|
+
cfg_region = Aws.shared_config.region(profile: cfg.profile)
|
|
43
|
+
env_region || cfg_region
|
|
44
|
+
end
|
|
45
|
+
|
|
36
46
|
end
|
|
37
47
|
end
|
|
38
48
|
end
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
module Aws
|
|
2
|
+
|
|
3
|
+
# @api private
|
|
4
|
+
class SharedConfig
|
|
5
|
+
|
|
6
|
+
# @return [String]
|
|
7
|
+
attr_reader :credentials_path
|
|
8
|
+
|
|
9
|
+
# @return [String]
|
|
10
|
+
attr_reader :config_path
|
|
11
|
+
|
|
12
|
+
# @return [String]
|
|
13
|
+
attr_reader :profile_name
|
|
14
|
+
|
|
15
|
+
# Constructs a new SharedConfig provider object. This will load the shared
|
|
16
|
+
# credentials file, and optionally the shared configuration file, as ini
|
|
17
|
+
# files which support profiles.
|
|
18
|
+
#
|
|
19
|
+
# By default, only the shared credential file (the default path for which is
|
|
20
|
+
# `~/.aws/credentials`) is loaded. However, if you set the
|
|
21
|
+
# `ENV['AWS_SDK_LOAD_CONFIG']` environment variable, the shared config file
|
|
22
|
+
# will also be loaded (the default path for which is `~/.aws/config`).
|
|
23
|
+
#
|
|
24
|
+
# The default profile name is 'default'. You can specify the profile name
|
|
25
|
+
# with the `ENV['AWS_PROFILE']` environment variable or with the
|
|
26
|
+
# `:profile_name` option.
|
|
27
|
+
#
|
|
28
|
+
# @param [Hash] options
|
|
29
|
+
# @option options [String] :credentials_path Path to the shared credentials
|
|
30
|
+
# file. Defaults to "#{Dir.home}/.aws/credentials".
|
|
31
|
+
# @option options [String] :config_path Path to the shared config file.
|
|
32
|
+
# Defaults to "#{Dir.home}/.aws/config".
|
|
33
|
+
# @option options [String] :profile_name The credential/config profile name
|
|
34
|
+
# to use. If not specified, will check `ENV['AWS_PROFILE']` before using
|
|
35
|
+
# the fixed default value of 'default'.
|
|
36
|
+
# @option options [Boolean] :config_enabled If true, loads the shared config
|
|
37
|
+
# file and enables new config values outside of the old shared credential
|
|
38
|
+
# spec. Generally sourced from `ENV['AWS_SDK_LOAD_CONFIG']`.
|
|
39
|
+
def initialize(options = {})
|
|
40
|
+
@profile_name = determine_profile(options)
|
|
41
|
+
@config_enabled = options[:config_enabled]
|
|
42
|
+
@credentials_path = options[:credentials_path] ||
|
|
43
|
+
determine_credentials_path
|
|
44
|
+
@parsed_credenetials = {}
|
|
45
|
+
load_credentials_file if loadable?(@credentials_path)
|
|
46
|
+
if @config_enabled
|
|
47
|
+
@config_path = options[:config_path] || determine_config_path
|
|
48
|
+
load_config_file if loadable?(@config_path)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# @api private
|
|
53
|
+
def fresh(options = {})
|
|
54
|
+
@profile_name = nil
|
|
55
|
+
@credentials_path = nil
|
|
56
|
+
@config_path = nil
|
|
57
|
+
@parsed_credentials = {}
|
|
58
|
+
@parsed_config = nil
|
|
59
|
+
@config_enabled = options[:config_enabled] ? true : false
|
|
60
|
+
@profile_name = determine_profile(options)
|
|
61
|
+
@credentials_path = options[:credentials_path] ||
|
|
62
|
+
determine_credentials_path
|
|
63
|
+
load_credentials_file if loadable?(@credentials_path)
|
|
64
|
+
if @config_enabled
|
|
65
|
+
@config_path = options[:config_path] || determine_config_path
|
|
66
|
+
load_config_file if loadable?(@config_path)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# @return [Boolean] Returns `true` if a credential file
|
|
71
|
+
# exists and has appropriate read permissions at {#path}.
|
|
72
|
+
# @note This method does not indicate if the file found at {#path}
|
|
73
|
+
# will be parsable, only if it can be read.
|
|
74
|
+
def loadable?(path)
|
|
75
|
+
!path.nil? && File.exist?(path) && File.readable?(path)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# @return [Boolean] returns `true` if use of the shared config file is
|
|
79
|
+
# enabled. Generally true if and only if the `AWS_SDK_LOAD_CONFIG` env
|
|
80
|
+
# variable is set.
|
|
81
|
+
def config_enabled?
|
|
82
|
+
@config_enabled ? true : false
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Sources static credentials from shared credential/config files.
|
|
86
|
+
#
|
|
87
|
+
# @param [Hash] options
|
|
88
|
+
# @option options [String] :profile the name of the configuration file from
|
|
89
|
+
# which credentials are being sourced.
|
|
90
|
+
# @return [Aws::Credentials] credentials sourced from configuration values,
|
|
91
|
+
# or `nil` if no valid credentials were found.
|
|
92
|
+
def credentials(opts = {})
|
|
93
|
+
p = opts[:profile] || @profile_name
|
|
94
|
+
validate_profile_exists(p) if @parsed_credentials || @parsed_config
|
|
95
|
+
if credentials = credentials_from_shared(p, opts)
|
|
96
|
+
credentials
|
|
97
|
+
elsif credentials = credentials_from_config(p, opts)
|
|
98
|
+
credentials
|
|
99
|
+
else
|
|
100
|
+
nil
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# Attempts to assume a role from shared config or shared credentials file.
|
|
105
|
+
# Will always attempt first to assume a role from the shared credentials
|
|
106
|
+
# file, if present.
|
|
107
|
+
def assume_role_credentials_from_config(opts = {})
|
|
108
|
+
p = opts.delete(:profile) || @profile_name
|
|
109
|
+
credentials = assume_role_from_profile(@parsed_credentials, p, opts)
|
|
110
|
+
if @parsed_config
|
|
111
|
+
credentials ||= assume_role_from_profile(@parsed_config, p, opts)
|
|
112
|
+
end
|
|
113
|
+
credentials
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def region(opts = {})
|
|
117
|
+
p = opts[:profile] || @profile_name
|
|
118
|
+
if @config_enabled
|
|
119
|
+
if @parsed_credentials
|
|
120
|
+
region = @parsed_credentials.fetch(p, {})["region"]
|
|
121
|
+
end
|
|
122
|
+
if @parsed_config
|
|
123
|
+
region ||= @parsed_config.fetch(p, {})["region"]
|
|
124
|
+
end
|
|
125
|
+
region
|
|
126
|
+
else
|
|
127
|
+
nil
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
private
|
|
132
|
+
def assume_role_from_profile(cfg, profile, opts)
|
|
133
|
+
if cfg && prof_cfg = cfg[profile]
|
|
134
|
+
opts[:source_profile] ||= prof_cfg["source_profile"]
|
|
135
|
+
if opts[:source_profile]
|
|
136
|
+
opts[:credentials] = credentials(profile: opts[:source_profile])
|
|
137
|
+
if opts[:credentials]
|
|
138
|
+
opts[:role_session_name] ||= prof_cfg["role_session_name"]
|
|
139
|
+
opts[:role_session_name] ||= "default_session"
|
|
140
|
+
opts[:role_arn] ||= prof_cfg["role_arn"]
|
|
141
|
+
opts[:external_id] ||= prof_cfg["external_id"]
|
|
142
|
+
opts[:serial_number] ||= prof_cfg["mfa_serial"]
|
|
143
|
+
opts[:profile] = opts.delete(:source_profile)
|
|
144
|
+
AssumeRoleCredentials.new(opts)
|
|
145
|
+
else
|
|
146
|
+
raise Errors::NoSourceProfileError.new(
|
|
147
|
+
"Profile #{profile} has a role_arn, and source_profile, but the"\
|
|
148
|
+
" source_profile does not have credentials."
|
|
149
|
+
)
|
|
150
|
+
end
|
|
151
|
+
elsif prof_cfg["role_arn"]
|
|
152
|
+
raise Errors::NoSourceProfileError.new(
|
|
153
|
+
"Profile #{profile} has a role_arn, but no source_profile."
|
|
154
|
+
)
|
|
155
|
+
else
|
|
156
|
+
nil
|
|
157
|
+
end
|
|
158
|
+
else
|
|
159
|
+
nil
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def credentials_from_shared(profile, opts)
|
|
164
|
+
if @parsed_credentials && prof_config = @parsed_credentials[profile]
|
|
165
|
+
credentials_from_profile(prof_config)
|
|
166
|
+
else
|
|
167
|
+
nil
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def credentials_from_config(profile, opts)
|
|
172
|
+
if @parsed_config && prof_config = @parsed_config[profile]
|
|
173
|
+
credentials_from_profile(prof_config)
|
|
174
|
+
else
|
|
175
|
+
nil
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def credentials_from_profile(prof_config)
|
|
180
|
+
creds = Credentials.new(
|
|
181
|
+
prof_config['aws_access_key_id'],
|
|
182
|
+
prof_config['aws_secret_access_key'],
|
|
183
|
+
prof_config['aws_session_token']
|
|
184
|
+
)
|
|
185
|
+
if credentials_complete(creds)
|
|
186
|
+
creds
|
|
187
|
+
else
|
|
188
|
+
nil
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
def credentials_complete(creds)
|
|
193
|
+
creds.set?
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
def load_credentials_file
|
|
197
|
+
@parsed_credentials = IniParser.ini_parse(
|
|
198
|
+
File.read(@credentials_path)
|
|
199
|
+
)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def load_config_file
|
|
203
|
+
@parsed_config = IniParser.ini_parse(File.read(@config_path))
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
def determine_credentials_path
|
|
207
|
+
default = default_shared_config_path('credentials')
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def determine_config_path
|
|
211
|
+
default = default_shared_config_path('config')
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
def default_shared_config_path(file)
|
|
215
|
+
File.join(Dir.home, '.aws', file)
|
|
216
|
+
rescue ArgumentError
|
|
217
|
+
# Dir.home raises ArgumentError when ENV['home'] is not set
|
|
218
|
+
nil
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def validate_profile_exists(profile)
|
|
222
|
+
unless (@parsed_credentials && @parsed_credentials[profile]) ||
|
|
223
|
+
(@parsed_config && @parsed_config[profile])
|
|
224
|
+
msg = "Profile `#{profile}' not found in #{@credentials_path}"
|
|
225
|
+
msg << " or #{@config_path}" if @config_path
|
|
226
|
+
raise Errors::NoSuchProfileError.new(msg)
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
def determine_profile(options)
|
|
231
|
+
ret = options[:profile_name]
|
|
232
|
+
ret ||= ENV["AWS_PROFILE"]
|
|
233
|
+
ret ||= "default"
|
|
234
|
+
ret
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
end
|
|
238
|
+
end
|
|
@@ -22,11 +22,21 @@ module Aws
|
|
|
22
22
|
# `ENV['AWS_PROFILE']`.
|
|
23
23
|
#
|
|
24
24
|
def initialize(options = {})
|
|
25
|
-
|
|
25
|
+
shared_config = Aws.shared_config
|
|
26
|
+
@path = options[:path]
|
|
27
|
+
@path ||= shared_config.credentials_path
|
|
26
28
|
@profile_name = options[:profile_name]
|
|
27
29
|
@profile_name ||= ENV['AWS_PROFILE']
|
|
28
|
-
@profile_name ||=
|
|
29
|
-
|
|
30
|
+
@profile_name ||= shared_config.profile_name
|
|
31
|
+
if @path && @path == shared_config.credentials_path
|
|
32
|
+
@credentials = shared_config.credentials(profile: @profile_name)
|
|
33
|
+
else
|
|
34
|
+
config = SharedConfig.new(
|
|
35
|
+
credentials_path: @path,
|
|
36
|
+
profile_name: @profile_name
|
|
37
|
+
)
|
|
38
|
+
@credentials = config.credentials(profile: @profile_name)
|
|
39
|
+
end
|
|
30
40
|
end
|
|
31
41
|
|
|
32
42
|
# @return [String]
|
|
@@ -48,6 +58,7 @@ module Aws
|
|
|
48
58
|
"#<#{parts.join(' ')}>"
|
|
49
59
|
end
|
|
50
60
|
|
|
61
|
+
# @deprecated This method is no longer used.
|
|
51
62
|
# @return [Boolean] Returns `true` if a credential file
|
|
52
63
|
# exists and has appropriate read permissions at {#path}.
|
|
53
64
|
# @note This method does not indicate if the file found at {#path}
|
|
@@ -56,55 +67,5 @@ module Aws
|
|
|
56
67
|
!path.nil? && File.exist?(path) && File.readable?(path)
|
|
57
68
|
end
|
|
58
69
|
|
|
59
|
-
private
|
|
60
|
-
|
|
61
|
-
def default_path
|
|
62
|
-
File.join(Dir.home, '.aws', 'credentials')
|
|
63
|
-
rescue ArgumentError
|
|
64
|
-
# Dir.home raises ArgumentError when ENV['home'] is not set
|
|
65
|
-
nil
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def load_from_path
|
|
69
|
-
profile = load_profile
|
|
70
|
-
@credentials = Credentials.new(
|
|
71
|
-
profile['aws_access_key_id'],
|
|
72
|
-
profile['aws_secret_access_key'],
|
|
73
|
-
profile['aws_session_token']
|
|
74
|
-
)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def load_profile
|
|
78
|
-
if profile = profiles[profile_name]
|
|
79
|
-
profile
|
|
80
|
-
else
|
|
81
|
-
msg = "Profile `#{profile_name}' not found in #{path}"
|
|
82
|
-
raise Errors::NoSuchProfileError, msg
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def profiles
|
|
87
|
-
ini_parse(File.read(path))
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def ini_parse(file)
|
|
91
|
-
current_section = {}
|
|
92
|
-
map = {}
|
|
93
|
-
file.lines.each do |line|
|
|
94
|
-
line = line.split(/^|\s;/).first # remove comments
|
|
95
|
-
section = line.match(/^\s*\[([^\[\]]+)\]\s*(#.+)?$/) unless line.nil?
|
|
96
|
-
if section
|
|
97
|
-
current_section = section[1]
|
|
98
|
-
elsif current_section
|
|
99
|
-
item = line.match(/^\s*(.+?)\s*=\s*(.+?)\s*$/) unless line.nil?
|
|
100
|
-
if item
|
|
101
|
-
map[current_section] = map[current_section] || {}
|
|
102
|
-
map[current_section][item[1]] = item[2]
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
map
|
|
107
|
-
end
|
|
108
|
-
|
|
109
70
|
end
|
|
110
71
|
end
|
data/lib/aws-sdk-core/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aws-sdk-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Amazon Web Services
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2016-07-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: jmespath
|
|
@@ -317,6 +317,7 @@ files:
|
|
|
317
317
|
- lib/aws-sdk-core/glacier.rb
|
|
318
318
|
- lib/aws-sdk-core/iam.rb
|
|
319
319
|
- lib/aws-sdk-core/importexport.rb
|
|
320
|
+
- lib/aws-sdk-core/ini_parser.rb
|
|
320
321
|
- lib/aws-sdk-core/inspector.rb
|
|
321
322
|
- lib/aws-sdk-core/instance_profile_credentials.rb
|
|
322
323
|
- lib/aws-sdk-core/iot.rb
|
|
@@ -416,6 +417,7 @@ files:
|
|
|
416
417
|
- lib/aws-sdk-core/service.rb
|
|
417
418
|
- lib/aws-sdk-core/servicecatalog.rb
|
|
418
419
|
- lib/aws-sdk-core/ses.rb
|
|
420
|
+
- lib/aws-sdk-core/shared_config.rb
|
|
419
421
|
- lib/aws-sdk-core/shared_credentials.rb
|
|
420
422
|
- lib/aws-sdk-core/signers/base.rb
|
|
421
423
|
- lib/aws-sdk-core/signers/s3.rb
|
|
@@ -507,8 +509,7 @@ homepage: http://github.com/aws/aws-sdk-ruby
|
|
|
507
509
|
licenses:
|
|
508
510
|
- Apache 2.0
|
|
509
511
|
metadata: {}
|
|
510
|
-
post_install_message:
|
|
511
|
-
V3'
|
|
512
|
+
post_install_message:
|
|
512
513
|
rdoc_options: []
|
|
513
514
|
require_paths:
|
|
514
515
|
- lib
|
|
@@ -523,8 +524,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
523
524
|
- !ruby/object:Gem::Version
|
|
524
525
|
version: '0'
|
|
525
526
|
requirements: []
|
|
526
|
-
|
|
527
|
+
rubyforge_project:
|
|
528
|
+
rubygems_version: 2.5.1
|
|
527
529
|
signing_key:
|
|
528
530
|
specification_version: 4
|
|
529
531
|
summary: AWS SDK for Ruby - Core
|
|
530
532
|
test_files: []
|
|
533
|
+
has_rdoc:
|