comparison env/lib/python3.9/site-packages/boto/elastictranscoder/layer1.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 # Copyright (c) 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved
2 #
3 # Permission is hereby granted, free of charge, to any person obtaining a
4 # copy of this software and associated documentation files (the
5 # "Software"), to deal in the Software without restriction, including
6 # without limitation the rights to use, copy, modify, merge, publish, dis-
7 # tribute, sublicense, and/or sell copies of the Software, and to permit
8 # persons to whom the Software is furnished to do so, subject to the fol-
9 # lowing conditions:
10 #
11 # The above copyright notice and this permission notice shall be included
12 # in all copies or substantial portions of the Software.
13 #
14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
16 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
17 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
18 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20 # IN THE SOFTWARE.
21 #
22 from boto.compat import json
23 from boto.exception import JSONResponseError
24 from boto.connection import AWSAuthConnection
25 from boto.regioninfo import RegionInfo
26 from boto.elastictranscoder import exceptions
27
28
29 class ElasticTranscoderConnection(AWSAuthConnection):
30 """
31 AWS Elastic Transcoder Service
32 The AWS Elastic Transcoder Service.
33 """
34 APIVersion = "2012-09-25"
35 DefaultRegionName = "us-east-1"
36 DefaultRegionEndpoint = "elastictranscoder.us-east-1.amazonaws.com"
37 ResponseError = JSONResponseError
38
39 _faults = {
40 "IncompatibleVersionException": exceptions.IncompatibleVersionException,
41 "LimitExceededException": exceptions.LimitExceededException,
42 "ResourceInUseException": exceptions.ResourceInUseException,
43 "AccessDeniedException": exceptions.AccessDeniedException,
44 "ResourceNotFoundException": exceptions.ResourceNotFoundException,
45 "InternalServiceException": exceptions.InternalServiceException,
46 "ValidationException": exceptions.ValidationException,
47 }
48
49
50 def __init__(self, **kwargs):
51 region = kwargs.get('region')
52 if not region:
53 region = RegionInfo(self, self.DefaultRegionName,
54 self.DefaultRegionEndpoint)
55 else:
56 del kwargs['region']
57 kwargs['host'] = region.endpoint
58 super(ElasticTranscoderConnection, self).__init__(**kwargs)
59 self.region = region
60
61 def _required_auth_capability(self):
62 return ['hmac-v4']
63
64 def cancel_job(self, id=None):
65 """
66 The CancelJob operation cancels an unfinished job.
67 You can only cancel a job that has a status of `Submitted`. To
68 prevent a pipeline from starting to process a job while you're
69 getting the job identifier, use UpdatePipelineStatus to
70 temporarily pause the pipeline.
71
72 :type id: string
73 :param id: The identifier of the job that you want to cancel.
74 To get a list of the jobs (including their `jobId`) that have a status
75 of `Submitted`, use the ListJobsByStatus API action.
76
77 """
78 uri = '/2012-09-25/jobs/{0}'.format(id)
79 return self.make_request('DELETE', uri, expected_status=202)
80
81 def create_job(self, pipeline_id=None, input_name=None, output=None,
82 outputs=None, output_key_prefix=None, playlists=None):
83 """
84 When you create a job, Elastic Transcoder returns JSON data
85 that includes the values that you specified plus information
86 about the job that is created.
87
88 If you have specified more than one output for your jobs (for
89 example, one output for the Kindle Fire and another output for
90 the Apple iPhone 4s), you currently must use the Elastic
91 Transcoder API to list the jobs (as opposed to the AWS
92 Console).
93
94 :type pipeline_id: string
95 :param pipeline_id: The `Id` of the pipeline that you want Elastic
96 Transcoder to use for transcoding. The pipeline determines several
97 settings, including the Amazon S3 bucket from which Elastic
98 Transcoder gets the files to transcode and the bucket into which
99 Elastic Transcoder puts the transcoded files.
100
101 :type input_name: dict
102 :param input_name: A section of the request body that provides
103 information about the file that is being transcoded.
104
105 :type output: dict
106 :param output: The `CreateJobOutput` structure.
107
108 :type outputs: list
109 :param outputs: A section of the request body that provides information
110 about the transcoded (target) files. We recommend that you use the
111 `Outputs` syntax instead of the `Output` syntax.
112
113 :type output_key_prefix: string
114 :param output_key_prefix: The value, if any, that you want Elastic
115 Transcoder to prepend to the names of all files that this job
116 creates, including output files, thumbnails, and playlists.
117
118 :type playlists: list
119 :param playlists: If you specify a preset in `PresetId` for which the
120 value of `Container` is ts (MPEG-TS), Playlists contains
121 information about the master playlists that you want Elastic
122 Transcoder to create.
123 We recommend that you create only one master playlist. The maximum
124 number of master playlists in a job is 30.
125
126 """
127 uri = '/2012-09-25/jobs'
128 params = {}
129 if pipeline_id is not None:
130 params['PipelineId'] = pipeline_id
131 if input_name is not None:
132 params['Input'] = input_name
133 if output is not None:
134 params['Output'] = output
135 if outputs is not None:
136 params['Outputs'] = outputs
137 if output_key_prefix is not None:
138 params['OutputKeyPrefix'] = output_key_prefix
139 if playlists is not None:
140 params['Playlists'] = playlists
141 return self.make_request('POST', uri, expected_status=201,
142 data=json.dumps(params))
143
144 def create_pipeline(self, name=None, input_bucket=None,
145 output_bucket=None, role=None, notifications=None,
146 content_config=None, thumbnail_config=None):
147 """
148 The CreatePipeline operation creates a pipeline with settings
149 that you specify.
150
151 :type name: string
152 :param name: The name of the pipeline. We recommend that the name be
153 unique within the AWS account, but uniqueness is not enforced.
154 Constraints: Maximum 40 characters.
155
156 :type input_bucket: string
157 :param input_bucket: The Amazon S3 bucket in which you saved the media
158 files that you want to transcode.
159
160 :type output_bucket: string
161 :param output_bucket: The Amazon S3 bucket in which you want Elastic
162 Transcoder to save the transcoded files. (Use this, or use
163 ContentConfig:Bucket plus ThumbnailConfig:Bucket.)
164 Specify this value when all of the following are true:
165
166 + You want to save transcoded files, thumbnails (if any), and playlists
167 (if any) together in one bucket.
168 + You do not want to specify the users or groups who have access to the
169 transcoded files, thumbnails, and playlists.
170 + You do not want to specify the permissions that Elastic Transcoder
171 grants to the files. When Elastic Transcoder saves files in
172 `OutputBucket`, it grants full control over the files only to the
173 AWS account that owns the role that is specified by `Role`.
174 + You want to associate the transcoded files and thumbnails with the
175 Amazon S3 Standard storage class.
176
177
178
179 If you want to save transcoded files and playlists in one bucket and
180 thumbnails in another bucket, specify which users can access the
181 transcoded files or the permissions the users have, or change the
182 Amazon S3 storage class, omit `OutputBucket` and specify values for
183 `ContentConfig` and `ThumbnailConfig` instead.
184
185 :type role: string
186 :param role: The IAM Amazon Resource Name (ARN) for the role that you
187 want Elastic Transcoder to use to create the pipeline.
188
189 :type notifications: dict
190 :param notifications:
191 The Amazon Simple Notification Service (Amazon SNS) topic that you want
192 to notify to report job status.
193 To receive notifications, you must also subscribe to the new topic in
194 the Amazon SNS console.
195
196 + **Progressing**: The topic ARN for the Amazon Simple Notification
197 Service (Amazon SNS) topic that you want to notify when Elastic
198 Transcoder has started to process a job in this pipeline. This is
199 the ARN that Amazon SNS returned when you created the topic. For
200 more information, see Create a Topic in the Amazon Simple
201 Notification Service Developer Guide.
202 + **Completed**: The topic ARN for the Amazon SNS topic that you want
203 to notify when Elastic Transcoder has finished processing a job in
204 this pipeline. This is the ARN that Amazon SNS returned when you
205 created the topic.
206 + **Warning**: The topic ARN for the Amazon SNS topic that you want to
207 notify when Elastic Transcoder encounters a warning condition while
208 processing a job in this pipeline. This is the ARN that Amazon SNS
209 returned when you created the topic.
210 + **Error**: The topic ARN for the Amazon SNS topic that you want to
211 notify when Elastic Transcoder encounters an error condition while
212 processing a job in this pipeline. This is the ARN that Amazon SNS
213 returned when you created the topic.
214
215 :type content_config: dict
216 :param content_config:
217 The optional `ContentConfig` object specifies information about the
218 Amazon S3 bucket in which you want Elastic Transcoder to save
219 transcoded files and playlists: which bucket to use, which users
220 you want to have access to the files, the type of access you want
221 users to have, and the storage class that you want to assign to the
222 files.
223
224 If you specify values for `ContentConfig`, you must also specify values
225 for `ThumbnailConfig`.
226
227 If you specify values for `ContentConfig` and `ThumbnailConfig`, omit
228 the `OutputBucket` object.
229
230
231 + **Bucket**: The Amazon S3 bucket in which you want Elastic Transcoder
232 to save transcoded files and playlists.
233 + **Permissions** (Optional): The Permissions object specifies which
234 users you want to have access to transcoded files and the type of
235 access you want them to have. You can grant permissions to a
236 maximum of 30 users and/or predefined Amazon S3 groups.
237 + **Grantee Type**: Specify the type of value that appears in the
238 `Grantee` object:
239
240 + **Canonical**: The value in the `Grantee` object is either the
241 canonical user ID for an AWS account or an origin access identity
242 for an Amazon CloudFront distribution. For more information about
243 canonical user IDs, see Access Control List (ACL) Overview in the
244 Amazon Simple Storage Service Developer Guide. For more information
245 about using CloudFront origin access identities to require that
246 users use CloudFront URLs instead of Amazon S3 URLs, see Using an
247 Origin Access Identity to Restrict Access to Your Amazon S3
248 Content. A canonical user ID is not the same as an AWS account
249 number.
250 + **Email**: The value in the `Grantee` object is the registered email
251 address of an AWS account.
252 + **Group**: The value in the `Grantee` object is one of the following
253 predefined Amazon S3 groups: `AllUsers`, `AuthenticatedUsers`, or
254 `LogDelivery`.
255
256 + **Grantee**: The AWS user or group that you want to have access to
257 transcoded files and playlists. To identify the user or group, you
258 can specify the canonical user ID for an AWS account, an origin
259 access identity for a CloudFront distribution, the registered email
260 address of an AWS account, or a predefined Amazon S3 group
261 + **Access**: The permission that you want to give to the AWS user that
262 you specified in `Grantee`. Permissions are granted on the files
263 that Elastic Transcoder adds to the bucket, including playlists and
264 video files. Valid values include:
265
266 + `READ`: The grantee can read the objects and metadata for objects
267 that Elastic Transcoder adds to the Amazon S3 bucket.
268 + `READ_ACP`: The grantee can read the object ACL for objects that
269 Elastic Transcoder adds to the Amazon S3 bucket.
270 + `WRITE_ACP`: The grantee can write the ACL for the objects that
271 Elastic Transcoder adds to the Amazon S3 bucket.
272 + `FULL_CONTROL`: The grantee has `READ`, `READ_ACP`, and `WRITE_ACP`
273 permissions for the objects that Elastic Transcoder adds to the
274 Amazon S3 bucket.
275
276 + **StorageClass**: The Amazon S3 storage class, `Standard` or
277 `ReducedRedundancy`, that you want Elastic Transcoder to assign to
278 the video files and playlists that it stores in your Amazon S3
279 bucket.
280
281 :type thumbnail_config: dict
282 :param thumbnail_config:
283 The `ThumbnailConfig` object specifies several values, including the
284 Amazon S3 bucket in which you want Elastic Transcoder to save
285 thumbnail files, which users you want to have access to the files,
286 the type of access you want users to have, and the storage class
287 that you want to assign to the files.
288
289 If you specify values for `ContentConfig`, you must also specify values
290 for `ThumbnailConfig` even if you don't want to create thumbnails.
291
292 If you specify values for `ContentConfig` and `ThumbnailConfig`, omit
293 the `OutputBucket` object.
294
295
296 + **Bucket**: The Amazon S3 bucket in which you want Elastic Transcoder
297 to save thumbnail files.
298 + **Permissions** (Optional): The `Permissions` object specifies which
299 users and/or predefined Amazon S3 groups you want to have access to
300 thumbnail files, and the type of access you want them to have. You
301 can grant permissions to a maximum of 30 users and/or predefined
302 Amazon S3 groups.
303 + **GranteeType**: Specify the type of value that appears in the
304 Grantee object:
305
306 + **Canonical**: The value in the `Grantee` object is either the
307 canonical user ID for an AWS account or an origin access identity
308 for an Amazon CloudFront distribution. A canonical user ID is not
309 the same as an AWS account number.
310 + **Email**: The value in the `Grantee` object is the registered email
311 address of an AWS account.
312 + **Group**: The value in the `Grantee` object is one of the following
313 predefined Amazon S3 groups: `AllUsers`, `AuthenticatedUsers`, or
314 `LogDelivery`.
315
316 + **Grantee**: The AWS user or group that you want to have access to
317 thumbnail files. To identify the user or group, you can specify the
318 canonical user ID for an AWS account, an origin access identity for
319 a CloudFront distribution, the registered email address of an AWS
320 account, or a predefined Amazon S3 group.
321 + **Access**: The permission that you want to give to the AWS user that
322 you specified in `Grantee`. Permissions are granted on the
323 thumbnail files that Elastic Transcoder adds to the bucket. Valid
324 values include:
325
326 + `READ`: The grantee can read the thumbnails and metadata for objects
327 that Elastic Transcoder adds to the Amazon S3 bucket.
328 + `READ_ACP`: The grantee can read the object ACL for thumbnails that
329 Elastic Transcoder adds to the Amazon S3 bucket.
330 + `WRITE_ACP`: The grantee can write the ACL for the thumbnails that
331 Elastic Transcoder adds to the Amazon S3 bucket.
332 + `FULL_CONTROL`: The grantee has `READ`, `READ_ACP`, and `WRITE_ACP`
333 permissions for the thumbnails that Elastic Transcoder adds to the
334 Amazon S3 bucket.
335
336 + **StorageClass**: The Amazon S3 storage class, `Standard` or
337 `ReducedRedundancy`, that you want Elastic Transcoder to assign to
338 the thumbnails that it stores in your Amazon S3 bucket.
339
340 """
341 uri = '/2012-09-25/pipelines'
342 params = {}
343 if name is not None:
344 params['Name'] = name
345 if input_bucket is not None:
346 params['InputBucket'] = input_bucket
347 if output_bucket is not None:
348 params['OutputBucket'] = output_bucket
349 if role is not None:
350 params['Role'] = role
351 if notifications is not None:
352 params['Notifications'] = notifications
353 if content_config is not None:
354 params['ContentConfig'] = content_config
355 if thumbnail_config is not None:
356 params['ThumbnailConfig'] = thumbnail_config
357 return self.make_request('POST', uri, expected_status=201,
358 data=json.dumps(params))
359
360 def create_preset(self, name=None, description=None, container=None,
361 video=None, audio=None, thumbnails=None):
362 """
363 The CreatePreset operation creates a preset with settings that
364 you specify.
365 Elastic Transcoder checks the CreatePreset settings to ensure
366 that they meet Elastic Transcoder requirements and to
367 determine whether they comply with H.264 standards. If your
368 settings are not valid for Elastic Transcoder, Elastic
369 Transcoder returns an HTTP 400 response (
370 `ValidationException`) and does not create the preset. If the
371 settings are valid for Elastic Transcoder but aren't strictly
372 compliant with the H.264 standard, Elastic Transcoder creates
373 the preset and returns a warning message in the response. This
374 helps you determine whether your settings comply with the
375 H.264 standard while giving you greater flexibility with
376 respect to the video that Elastic Transcoder produces.
377 Elastic Transcoder uses the H.264 video-compression format.
378 For more information, see the International Telecommunication
379 Union publication Recommendation ITU-T H.264: Advanced video
380 coding for generic audiovisual services .
381
382 :type name: string
383 :param name: The name of the preset. We recommend that the name be
384 unique within the AWS account, but uniqueness is not enforced.
385
386 :type description: string
387 :param description: A description of the preset.
388
389 :type container: string
390 :param container: The container type for the output file. Valid values
391 include `mp3`, `mp4`, `ogg`, `ts`, and `webm`.
392
393 :type video: dict
394 :param video: A section of the request body that specifies the video
395 parameters.
396
397 :type audio: dict
398 :param audio: A section of the request body that specifies the audio
399 parameters.
400
401 :type thumbnails: dict
402 :param thumbnails: A section of the request body that specifies the
403 thumbnail parameters, if any.
404
405 """
406 uri = '/2012-09-25/presets'
407 params = {}
408 if name is not None:
409 params['Name'] = name
410 if description is not None:
411 params['Description'] = description
412 if container is not None:
413 params['Container'] = container
414 if video is not None:
415 params['Video'] = video
416 if audio is not None:
417 params['Audio'] = audio
418 if thumbnails is not None:
419 params['Thumbnails'] = thumbnails
420 return self.make_request('POST', uri, expected_status=201,
421 data=json.dumps(params))
422
423 def delete_pipeline(self, id=None):
424 """
425 The DeletePipeline operation removes a pipeline.
426
427 You can only delete a pipeline that has never been used or
428 that is not currently in use (doesn't contain any active
429 jobs). If the pipeline is currently in use, `DeletePipeline`
430 returns an error.
431
432 :type id: string
433 :param id: The identifier of the pipeline that you want to delete.
434
435 """
436 uri = '/2012-09-25/pipelines/{0}'.format(id)
437 return self.make_request('DELETE', uri, expected_status=202)
438
439 def delete_preset(self, id=None):
440 """
441 The DeletePreset operation removes a preset that you've added
442 in an AWS region.
443
444 You can't delete the default presets that are included with
445 Elastic Transcoder.
446
447 :type id: string
448 :param id: The identifier of the preset for which you want to get
449 detailed information.
450
451 """
452 uri = '/2012-09-25/presets/{0}'.format(id)
453 return self.make_request('DELETE', uri, expected_status=202)
454
455 def list_jobs_by_pipeline(self, pipeline_id=None, ascending=None,
456 page_token=None):
457 """
458 The ListJobsByPipeline operation gets a list of the jobs
459 currently in a pipeline.
460
461 Elastic Transcoder returns all of the jobs currently in the
462 specified pipeline. The response body contains one element for
463 each job that satisfies the search criteria.
464
465 :type pipeline_id: string
466 :param pipeline_id: The ID of the pipeline for which you want to get
467 job information.
468
469 :type ascending: string
470 :param ascending: To list jobs in chronological order by the date and
471 time that they were submitted, enter `True`. To list jobs in
472 reverse chronological order, enter `False`.
473
474 :type page_token: string
475 :param page_token: When Elastic Transcoder returns more than one page
476 of results, use `pageToken` in subsequent `GET` requests to get
477 each successive page of results.
478
479 """
480 uri = '/2012-09-25/jobsByPipeline/{0}'.format(pipeline_id)
481 params = {}
482 if pipeline_id is not None:
483 params['PipelineId'] = pipeline_id
484 if ascending is not None:
485 params['Ascending'] = ascending
486 if page_token is not None:
487 params['PageToken'] = page_token
488 return self.make_request('GET', uri, expected_status=200,
489 params=params)
490
491 def list_jobs_by_status(self, status=None, ascending=None,
492 page_token=None):
493 """
494 The ListJobsByStatus operation gets a list of jobs that have a
495 specified status. The response body contains one element for
496 each job that satisfies the search criteria.
497
498 :type status: string
499 :param status: To get information about all of the jobs associated with
500 the current AWS account that have a given status, specify the
501 following status: `Submitted`, `Progressing`, `Complete`,
502 `Canceled`, or `Error`.
503
504 :type ascending: string
505 :param ascending: To list jobs in chronological order by the date and
506 time that they were submitted, enter `True`. To list jobs in
507 reverse chronological order, enter `False`.
508
509 :type page_token: string
510 :param page_token: When Elastic Transcoder returns more than one page
511 of results, use `pageToken` in subsequent `GET` requests to get
512 each successive page of results.
513
514 """
515 uri = '/2012-09-25/jobsByStatus/{0}'.format(status)
516 params = {}
517 if status is not None:
518 params['Status'] = status
519 if ascending is not None:
520 params['Ascending'] = ascending
521 if page_token is not None:
522 params['PageToken'] = page_token
523 return self.make_request('GET', uri, expected_status=200,
524 params=params)
525
526 def list_pipelines(self, ascending=None, page_token=None):
527 """
528 The ListPipelines operation gets a list of the pipelines
529 associated with the current AWS account.
530
531 :type ascending: string
532 :param ascending: To list pipelines in chronological order by the date
533 and time that they were created, enter `True`. To list pipelines in
534 reverse chronological order, enter `False`.
535
536 :type page_token: string
537 :param page_token: When Elastic Transcoder returns more than one page
538 of results, use `pageToken` in subsequent `GET` requests to get
539 each successive page of results.
540
541 """
542 uri = '/2012-09-25/pipelines'.format()
543 params = {}
544 if ascending is not None:
545 params['Ascending'] = ascending
546 if page_token is not None:
547 params['PageToken'] = page_token
548 return self.make_request('GET', uri, expected_status=200,
549 params=params)
550
551 def list_presets(self, ascending=None, page_token=None):
552 """
553 The ListPresets operation gets a list of the default presets
554 included with Elastic Transcoder and the presets that you've
555 added in an AWS region.
556
557 :type ascending: string
558 :param ascending: To list presets in chronological order by the date
559 and time that they were created, enter `True`. To list presets in
560 reverse chronological order, enter `False`.
561
562 :type page_token: string
563 :param page_token: When Elastic Transcoder returns more than one page
564 of results, use `pageToken` in subsequent `GET` requests to get
565 each successive page of results.
566
567 """
568 uri = '/2012-09-25/presets'.format()
569 params = {}
570 if ascending is not None:
571 params['Ascending'] = ascending
572 if page_token is not None:
573 params['PageToken'] = page_token
574 return self.make_request('GET', uri, expected_status=200,
575 params=params)
576
577 def read_job(self, id=None):
578 """
579 The ReadJob operation returns detailed information about a
580 job.
581
582 :type id: string
583 :param id: The identifier of the job for which you want to get detailed
584 information.
585
586 """
587 uri = '/2012-09-25/jobs/{0}'.format(id)
588 return self.make_request('GET', uri, expected_status=200)
589
590 def read_pipeline(self, id=None):
591 """
592 The ReadPipeline operation gets detailed information about a
593 pipeline.
594
595 :type id: string
596 :param id: The identifier of the pipeline to read.
597
598 """
599 uri = '/2012-09-25/pipelines/{0}'.format(id)
600 return self.make_request('GET', uri, expected_status=200)
601
602 def read_preset(self, id=None):
603 """
604 The ReadPreset operation gets detailed information about a
605 preset.
606
607 :type id: string
608 :param id: The identifier of the preset for which you want to get
609 detailed information.
610
611 """
612 uri = '/2012-09-25/presets/{0}'.format(id)
613 return self.make_request('GET', uri, expected_status=200)
614
615 def test_role(self, role=None, input_bucket=None, output_bucket=None,
616 topics=None):
617 """
618 The TestRole operation tests the IAM role used to create the
619 pipeline.
620
621 The `TestRole` action lets you determine whether the IAM role
622 you are using has sufficient permissions to let Elastic
623 Transcoder perform tasks associated with the transcoding
624 process. The action attempts to assume the specified IAM role,
625 checks read access to the input and output buckets, and tries
626 to send a test notification to Amazon SNS topics that you
627 specify.
628
629 :type role: string
630 :param role: The IAM Amazon Resource Name (ARN) for the role that you
631 want Elastic Transcoder to test.
632
633 :type input_bucket: string
634 :param input_bucket: The Amazon S3 bucket that contains media files to
635 be transcoded. The action attempts to read from this bucket.
636
637 :type output_bucket: string
638 :param output_bucket: The Amazon S3 bucket that Elastic Transcoder will
639 write transcoded media files to. The action attempts to read from
640 this bucket.
641
642 :type topics: list
643 :param topics: The ARNs of one or more Amazon Simple Notification
644 Service (Amazon SNS) topics that you want the action to send a test
645 notification to.
646
647 """
648 uri = '/2012-09-25/roleTests'
649 params = {}
650 if role is not None:
651 params['Role'] = role
652 if input_bucket is not None:
653 params['InputBucket'] = input_bucket
654 if output_bucket is not None:
655 params['OutputBucket'] = output_bucket
656 if topics is not None:
657 params['Topics'] = topics
658 return self.make_request('POST', uri, expected_status=200,
659 data=json.dumps(params))
660
661 def update_pipeline(self, id, name=None, input_bucket=None, role=None,
662 notifications=None, content_config=None,
663 thumbnail_config=None):
664 """
665 Use the `UpdatePipeline` operation to update settings for a
666 pipeline. When you change pipeline settings, your changes take
667 effect immediately. Jobs that you have already submitted and
668 that Elastic Transcoder has not started to process are
669 affected in addition to jobs that you submit after you change
670 settings.
671
672 :type id: string
673 :param id: The ID of the pipeline that you want to update.
674
675 :type name: string
676 :param name: The name of the pipeline. We recommend that the name be
677 unique within the AWS account, but uniqueness is not enforced.
678 Constraints: Maximum 40 characters
679
680 :type input_bucket: string
681 :param input_bucket: The Amazon S3 bucket in which you saved the media
682 files that you want to transcode and the graphics that you want to
683 use as watermarks.
684
685 :type role: string
686 :param role: The IAM Amazon Resource Name (ARN) for the role that you
687 want Elastic Transcoder to use to transcode jobs for this pipeline.
688
689 :type notifications: dict
690 :param notifications:
691 The Amazon Simple Notification Service (Amazon SNS) topic or topics to
692 notify in order to report job status.
693 To receive notifications, you must also subscribe to the new topic in
694 the Amazon SNS console.
695
696 :type content_config: dict
697 :param content_config:
698 The optional `ContentConfig` object specifies information about the
699 Amazon S3 bucket in which you want Elastic Transcoder to save
700 transcoded files and playlists: which bucket to use, which users
701 you want to have access to the files, the type of access you want
702 users to have, and the storage class that you want to assign to the
703 files.
704
705 If you specify values for `ContentConfig`, you must also specify values
706 for `ThumbnailConfig`.
707
708 If you specify values for `ContentConfig` and `ThumbnailConfig`, omit
709 the `OutputBucket` object.
710
711
712 + **Bucket**: The Amazon S3 bucket in which you want Elastic Transcoder
713 to save transcoded files and playlists.
714 + **Permissions** (Optional): The Permissions object specifies which
715 users you want to have access to transcoded files and the type of
716 access you want them to have. You can grant permissions to a
717 maximum of 30 users and/or predefined Amazon S3 groups.
718 + **Grantee Type**: Specify the type of value that appears in the
719 `Grantee` object:
720
721 + **Canonical**: The value in the `Grantee` object is either the
722 canonical user ID for an AWS account or an origin access identity
723 for an Amazon CloudFront distribution. For more information about
724 canonical user IDs, see Access Control List (ACL) Overview in the
725 Amazon Simple Storage Service Developer Guide. For more information
726 about using CloudFront origin access identities to require that
727 users use CloudFront URLs instead of Amazon S3 URLs, see Using an
728 Origin Access Identity to Restrict Access to Your Amazon S3
729 Content. A canonical user ID is not the same as an AWS account
730 number.
731 + **Email**: The value in the `Grantee` object is the registered email
732 address of an AWS account.
733 + **Group**: The value in the `Grantee` object is one of the following
734 predefined Amazon S3 groups: `AllUsers`, `AuthenticatedUsers`, or
735 `LogDelivery`.
736
737 + **Grantee**: The AWS user or group that you want to have access to
738 transcoded files and playlists. To identify the user or group, you
739 can specify the canonical user ID for an AWS account, an origin
740 access identity for a CloudFront distribution, the registered email
741 address of an AWS account, or a predefined Amazon S3 group
742 + **Access**: The permission that you want to give to the AWS user that
743 you specified in `Grantee`. Permissions are granted on the files
744 that Elastic Transcoder adds to the bucket, including playlists and
745 video files. Valid values include:
746
747 + `READ`: The grantee can read the objects and metadata for objects
748 that Elastic Transcoder adds to the Amazon S3 bucket.
749 + `READ_ACP`: The grantee can read the object ACL for objects that
750 Elastic Transcoder adds to the Amazon S3 bucket.
751 + `WRITE_ACP`: The grantee can write the ACL for the objects that
752 Elastic Transcoder adds to the Amazon S3 bucket.
753 + `FULL_CONTROL`: The grantee has `READ`, `READ_ACP`, and `WRITE_ACP`
754 permissions for the objects that Elastic Transcoder adds to the
755 Amazon S3 bucket.
756
757 + **StorageClass**: The Amazon S3 storage class, `Standard` or
758 `ReducedRedundancy`, that you want Elastic Transcoder to assign to
759 the video files and playlists that it stores in your Amazon S3
760 bucket.
761
762 :type thumbnail_config: dict
763 :param thumbnail_config:
764 The `ThumbnailConfig` object specifies several values, including the
765 Amazon S3 bucket in which you want Elastic Transcoder to save
766 thumbnail files, which users you want to have access to the files,
767 the type of access you want users to have, and the storage class
768 that you want to assign to the files.
769
770 If you specify values for `ContentConfig`, you must also specify values
771 for `ThumbnailConfig` even if you don't want to create thumbnails.
772
773 If you specify values for `ContentConfig` and `ThumbnailConfig`, omit
774 the `OutputBucket` object.
775
776
777 + **Bucket**: The Amazon S3 bucket in which you want Elastic Transcoder
778 to save thumbnail files.
779 + **Permissions** (Optional): The `Permissions` object specifies which
780 users and/or predefined Amazon S3 groups you want to have access to
781 thumbnail files, and the type of access you want them to have. You
782 can grant permissions to a maximum of 30 users and/or predefined
783 Amazon S3 groups.
784 + **GranteeType**: Specify the type of value that appears in the
785 Grantee object:
786
787 + **Canonical**: The value in the `Grantee` object is either the
788 canonical user ID for an AWS account or an origin access identity
789 for an Amazon CloudFront distribution. A canonical user ID is not
790 the same as an AWS account number.
791 + **Email**: The value in the `Grantee` object is the registered email
792 address of an AWS account.
793 + **Group**: The value in the `Grantee` object is one of the following
794 predefined Amazon S3 groups: `AllUsers`, `AuthenticatedUsers`, or
795 `LogDelivery`.
796
797 + **Grantee**: The AWS user or group that you want to have access to
798 thumbnail files. To identify the user or group, you can specify the
799 canonical user ID for an AWS account, an origin access identity for
800 a CloudFront distribution, the registered email address of an AWS
801 account, or a predefined Amazon S3 group.
802 + **Access**: The permission that you want to give to the AWS user that
803 you specified in `Grantee`. Permissions are granted on the
804 thumbnail files that Elastic Transcoder adds to the bucket. Valid
805 values include:
806
807 + `READ`: The grantee can read the thumbnails and metadata for objects
808 that Elastic Transcoder adds to the Amazon S3 bucket.
809 + `READ_ACP`: The grantee can read the object ACL for thumbnails that
810 Elastic Transcoder adds to the Amazon S3 bucket.
811 + `WRITE_ACP`: The grantee can write the ACL for the thumbnails that
812 Elastic Transcoder adds to the Amazon S3 bucket.
813 + `FULL_CONTROL`: The grantee has `READ`, `READ_ACP`, and `WRITE_ACP`
814 permissions for the thumbnails that Elastic Transcoder adds to the
815 Amazon S3 bucket.
816
817 + **StorageClass**: The Amazon S3 storage class, `Standard` or
818 `ReducedRedundancy`, that you want Elastic Transcoder to assign to
819 the thumbnails that it stores in your Amazon S3 bucket.
820
821 """
822 uri = '/2012-09-25/pipelines/{0}'.format(id)
823 params = {}
824 if name is not None:
825 params['Name'] = name
826 if input_bucket is not None:
827 params['InputBucket'] = input_bucket
828 if role is not None:
829 params['Role'] = role
830 if notifications is not None:
831 params['Notifications'] = notifications
832 if content_config is not None:
833 params['ContentConfig'] = content_config
834 if thumbnail_config is not None:
835 params['ThumbnailConfig'] = thumbnail_config
836 return self.make_request('PUT', uri, expected_status=200,
837 data=json.dumps(params))
838
839 def update_pipeline_notifications(self, id=None, notifications=None):
840 """
841 With the UpdatePipelineNotifications operation, you can update
842 Amazon Simple Notification Service (Amazon SNS) notifications
843 for a pipeline.
844
845 When you update notifications for a pipeline, Elastic
846 Transcoder returns the values that you specified in the
847 request.
848
849 :type id: string
850 :param id: The identifier of the pipeline for which you want to change
851 notification settings.
852
853 :type notifications: dict
854 :param notifications:
855 The topic ARN for the Amazon Simple Notification Service (Amazon SNS)
856 topic that you want to notify to report job status.
857 To receive notifications, you must also subscribe to the new topic in
858 the Amazon SNS console.
859
860 + **Progressing**: The topic ARN for the Amazon Simple Notification
861 Service (Amazon SNS) topic that you want to notify when Elastic
862 Transcoder has started to process jobs that are added to this
863 pipeline. This is the ARN that Amazon SNS returned when you created
864 the topic.
865 + **Completed**: The topic ARN for the Amazon SNS topic that you want
866 to notify when Elastic Transcoder has finished processing a job.
867 This is the ARN that Amazon SNS returned when you created the
868 topic.
869 + **Warning**: The topic ARN for the Amazon SNS topic that you want to
870 notify when Elastic Transcoder encounters a warning condition. This
871 is the ARN that Amazon SNS returned when you created the topic.
872 + **Error**: The topic ARN for the Amazon SNS topic that you want to
873 notify when Elastic Transcoder encounters an error condition. This
874 is the ARN that Amazon SNS returned when you created the topic.
875
876 """
877 uri = '/2012-09-25/pipelines/{0}/notifications'.format(id)
878 params = {}
879 if id is not None:
880 params['Id'] = id
881 if notifications is not None:
882 params['Notifications'] = notifications
883 return self.make_request('POST', uri, expected_status=200,
884 data=json.dumps(params))
885
886 def update_pipeline_status(self, id=None, status=None):
887 """
888 The UpdatePipelineStatus operation pauses or reactivates a
889 pipeline, so that the pipeline stops or restarts the
890 processing of jobs.
891
892 Changing the pipeline status is useful if you want to cancel
893 one or more jobs. You can't cancel jobs after Elastic
894 Transcoder has started processing them; if you pause the
895 pipeline to which you submitted the jobs, you have more time
896 to get the job IDs for the jobs that you want to cancel, and
897 to send a CancelJob request.
898
899 :type id: string
900 :param id: The identifier of the pipeline to update.
901
902 :type status: string
903 :param status:
904 The desired status of the pipeline:
905
906
907 + `Active`: The pipeline is processing jobs.
908 + `Paused`: The pipeline is not currently processing jobs.
909
910 """
911 uri = '/2012-09-25/pipelines/{0}/status'.format(id)
912 params = {}
913 if id is not None:
914 params['Id'] = id
915 if status is not None:
916 params['Status'] = status
917 return self.make_request('POST', uri, expected_status=200,
918 data=json.dumps(params))
919
920 def make_request(self, verb, resource, headers=None, data='',
921 expected_status=None, params=None):
922 if headers is None:
923 headers = {}
924 response = super(ElasticTranscoderConnection, self).make_request(
925 verb, resource, headers=headers, data=data, params=params)
926 body = json.loads(response.read().decode('utf-8'))
927 if response.status == expected_status:
928 return body
929 else:
930 error_type = response.getheader('x-amzn-ErrorType').split(':')[0]
931 error_class = self._faults.get(error_type, self.ResponseError)
932 raise error_class(response.status, response.reason, body)