

サポート終了通知: 2025 年 11 月 13 日、 AWS は Amazon Elastic Transcoder のサポートを終了します。2025 年 11 月 13 日以降、Elastic Transcoder コンソールまたは Elastic Transcoder リソースにアクセスできなくなります。

への移行の詳細については AWS Elemental MediaConvert、この[ブログ記事](https://aws.amazon.com/blogs/media/how-to-migrate-workflows-from-amazon-elastic-transcoder-to-aws-elemental-mediaconvert/)を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS SDK サンプルコード
<a name="sample-code"></a>

このセクションでは、Java、Ruby、PHP、Python 用の AWS SDK を使用して以下のオペレーションを実行する方法を示すサンプルコードを取り上げています。
+ Amazon Elastic Transcoder で HLS プレイリストを作成する
+ Elastic Transcoder でジョブを作成する
+ Amazon Simple Queue Service (Amazon SQS) キュー をポーリングする
+ Amazon Simple Notification Service (Amazon SNS) からの通知を解析する
+ Amazon SNS からの通知を処理する

これらのオペレーションは、Elastic Transcoder のベストプラクティスを表しています。Amazon SQS キューのポーリングでは、ロングポーリングを使用でき、通常のポーリングよりも効率的なスケーリングが可能です。Amazon SNS 通知の設定では、Elastic Transcoder から Amazon SQS キューへのメッセージの配信が可能です。

サンプルコードは、HTTP ライブストリーミング (HLS、HTTP Live Streaming) 用のトランスコード方法を示しています。また、Amazon SNS 通知を Amazon SQS キューから削除してから処理する方法も示しています。

使用している言語に対応した SDK がある場合は、API ではなく、SDK の使用を推奨します。SDK を使用するほうが認証プロセスはよりシンプルです。また、SDK は開発環境と容易に統合されるため、関連するコマンドへのアクセスが簡単です。

**Topics**
+ [AWS SDK サンプルコードの背景情報](#sample-intro)
+ [環境をセットアップする](#env-setup)
+ [Java サンプル](#java-sample)
+ [Ruby サンプル](#ruby-sample)
+ [PHP サンプル](#php-sample)
+ [Python サンプル](#python-sample)

## AWS SDK サンプルコードの背景情報
<a name="sample-intro"></a>

### HTTP Live Streaming（HLS）
<a name="hls-intro"></a>

HTTP ライブストリーミング (HLS、HTTP Live Streaming) 対応プレイヤーにアダプティブビットレートコンテンツを配信するには、HLS 出力を使用します。HLS 対応デバイスの例としては、Android 4 以降のデバイス、iOSデバイス、QuickTime や VLC などのデスクトップメディアプレイヤー、jwplayer などのブラウザプレイヤーがあります。アダプティブビットレートを使用すると、クライアント接続の質に基づいて、配信されるコンテンツの質を自動的に調整できます。

### 通知
<a name="notification-intro"></a>

Elastic Transcoder の `ReadJob` API をポーリングしてジョブのステータスを追跡するには、送信済みジョブごとに継続的に `ReadJob` を呼び出す必要があります。この方法では、トランスコードジョブの増加に合わせた調整ができません。この問題は、ジョブステータス追跡のためのイベント駆動型メカニズムを持つ Amazon SNS に対し、Elastic Transcoder から通知を発行することで解決できます。

Elastic Transcoder の各通知は、`Message` フィールド内の JSON オブジェクトとして送信されます。通知自体は JSON 形式で送信されるため、メッセージ文字列内の Elastic Transcoder 通知をエスケープする必要があります。Elastic Transcoder 通知の形式と内容の詳細については、[「ジョブのステータスの通知」](https://docs.aws.amazon.com/elastictranscoder/latest/developerguide/notifications.html)セクションを参照してください。

ジョブステータス通知を処理するためにカスタムコードを記述する場合は、次のベストプラクティスに従ってください。
+ **ハンドラはべき等である必要があります。**通知が複数回配信される可能性があります。
+ **ハンドラは順不同通知に対応している必要があります。**通知が順不同に配信される可能性があります。
+ **ハンドラはすべてのジョブの通知を処理できる必要があります。**特定のジョブの通知が特定のワーカーに配信されることを保証する手段はありません。
+ **ハンドラは短いオペレーションである必要があります。**可視性タイムアウトの前に、すべてのメッセージが処理されて削除される必要があります。可視性タイムアウトが 15 秒で、Amazon SQS から最大 5 件のメッセージが返される場合、各メッセージが 3 秒以内に処理されてキューから削除される必要があります。処理にかかる時間がこれより長い場合、未処理のメッセージはタイムアウトして別のワーカーに配信されます。

Java、Python、および Ruby の場合、通知トピックにサブスクライブされている Amazon SQS キューのポーリングによって通知を消費することをお勧めします。Amazon SQS ではロングポーリングメカニズムを採用しているため、Amazon SQS キューのポーリングは、スケーラブルなジョブ通知消費手段となります。また、Amazon SQS により、ホストに障害が発生した場合や高い負荷がかかっているときの可用性とスケーリングが簡素化されており、通常は特別な ACL 設定は必要ありません。

Apache で実行されている PHP の場合、エンドポイントを Amazon SNS トピックに直接サブスクライブすることをお勧めします。Amazon SNS はユーザーに通知を直接プッシュできなければならないため、エンドポイントを公開する必要があります。

## 環境をセットアップする
<a name="env-setup"></a>

サンプルコードを実行するには、AWS 環境のセットアップが完了している必要があります。このセクションでは、セットアップ手順について説明し、Elastic Transcoder の最適な動作に必要な AWS リソースの作成方法を示します。

**Topics**
+ [Java 環境をセットアップする](#env-java)
+ [Ruby 環境をセットアップする](#env-ruby)
+ [PHP 環境をセットアップする](#env-php)
+ [Python 環境をセットアップする](#env-python)

### Java 環境をセットアップする
<a name="env-java"></a>

このセクションでは、Java 環境をセットアップする手順について説明します。

**Topics**
+ [AWS SDK for Java をセットアップする](#java-sdk)
+ [Amazon S3 入出力バケットを作成する](#java-s3)
+ [ジョブステータス通知を受信するための Amazon SNS トピックを作成する](#java-sns)
+ [ジョブステータス通知のためにポーリング用の Amazon SQS キューを作成する](#java-sqs)
+ [Amazon SNS トピックへ Amazon SQS キューをサブスクライブする](#java-sqs-subscribe)
+ [Elastic Transcoder パイプラインを作成する](#java-pipeline)
+ [スケーラブルな方法でコンテンツを配信するための Amazon CloudFront ディストリビューションを作成する](#java-cloudfront)
+ [Amazon S3 バケットポリシーを変更する](#java-s3-policy)

サンプルコードには、以下の 2 つの主要な前提があります。
+ サンプルは Java バージョン 1.6 以上で動作するように記述する。
+ サンプルは Eclipse と AWS Toolkit for Eclipse を使用して実行する。

#### AWS SDK for Java をセットアップする
<a name="java-sdk"></a>

これらのサンプルは AWS Toolkit for Eclipse の使用を前提としています。[AWS SDK for Java](https://aws.amazon.com/sdkforjava/) と以下の Jackson JSON プロセッサ JAR ファイルの両方が必要です。
+ Jackson Core
+ Jackson Databind
+ Jackson Annotations

Jackson JSON プロセッサによってジョブステータス通知が処理されます。

代わりに、Maven を使用してこれらの依存関係を管理する場合は、`pom.xml` ファイルに以下のスニペットを追加できます。

バージョンプロパティ: 

```
    <jackson-2-version>2.2.3</jackson-2-version>
```

依存関係:

```
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
        <version>LATEST</version>
    </dependency>
                
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson-2-version}</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson-2-version}</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson-2-version}</version>
    </dependency>
```

詳細については、[AWS SDK for Java のドキュメント](https://aws.amazon.com/documentation/sdkforjava/)を参照してください。

#### Amazon S3 入出力バケットを作成する
<a name="java-s3"></a>

1. [Amazon S3 コンソール](https://console.aws.amazon.com/s3/home)を開きます。

1. コンソールで、**[バケットの作成]** をクリックします。

1. **[バケット名]** フィールドで、希望する入力バケット名を入力します。

1. Amazon S3 コンソールで、**[バケットの作成]** を再びクリックします。

1. **[バケット名]** フィールドで、希望する出力バケット名を入力します。

#### ジョブステータス通知を受信するための Amazon SNS トピックを作成する
<a name="java-sns"></a>

1. [[Amazon SNS コンソール]](https://console.aws.amazon.com/sns/home) を開きます。

1. コンソールで、**[Create and Add]** (作成と追加) をクリックして **[Create New Topic]** (新しいトピックの作成) を選択します。

1. **[Topic Name]** (トピック名) フィールドに **ets-sample-topic** を入力してから、**[Create Topic]** (トピックの作成) をクリックします。

1. `ets-sample-topic` の ARN を記録します。

#### ジョブステータス通知のためにポーリング用の Amazon SQS キューを作成する
<a name="java-sqs"></a>

1. [Amazon SQS コンソール](https://console.aws.amazon.com/sqs/home) を開きます。

1. コンソールで、[**新しいキューの作成**] をクリックします。

1. **[Queue Name]** (キュー名) フィールドに **ets-sample-queue** を入力してから、**[Create Queue]** (キューの作成) をクリックします。

1. Amazon SQS キューの URLを記録します。

#### Amazon SNS トピックへ Amazon SQS キューをサブスクライブする
<a name="java-sqs-subscribe"></a>

1. [Amazon SQS コンソール](https://console.aws.amazon.com/sqs/home) を開きます。

1. コンソールで、キューのリストから **[ets-sample-queue]** を選択します。

1. **[Queue Actions]** (キューのアクション) で、**[Subscribe Queue to Amazon SNS Topic]** (キューを Amazon SNS トピックにサブスクライブする) を選択します。

1. **[Choose a Topic]** (トピックの選択) で **[ets-sample-topic]** を選択してから、**[Subscribe]** (サブスクライブ) をクリックします。

キューがトピックに正常にサブスクライブされたことを確認するメッセージが表示されます。

#### Elastic Transcoder パイプラインを作成する
<a name="java-pipeline"></a>

1. [Amazon Elastic Transcoder コンソール](https://console.aws.amazon.com/elastictranscoder/home)を開きます。

1. コンソールで、**[新しいパイプラインの作成]** をクリックします。

1. **[パイプライン名]** フィールドで、**ets-sample-pipeline** を入力します。

1. **[入力バケット]** フィールドで、入力バケットの名前を入力します。

1. **IAM ロール**は **Console Default Role** のままにしておきます。

1. **[Configure Amazon S3 Bucket for Transcoded Files and Playlists]** (トランスコード済みファイルとプレイリスト用に Amazon S3 バスケットを設定する) で、出力バケットの名前を入力します。

1. **[Configure Amazon S3 Bucket for Transcoded Files and Playlists]** (トランスコード済みファイルとプレイリスト用に Amazon S3 バスケットを設定する) で、**[standard storage class]** (標準的なストレージクラス) を選択します。

1. **[Notifications]** (通知) ドロップダウンメニューを展開します。

1. 4 つのイベントタイプすべてに対して、**[Use an existing SNS topic]** (既存の SNS トピックを使用) を選択し、**[Select a Topic]** (トピックの選択) で **ets-sample-topic** を選択します。

1. [**Create Pipeline (パイプラインの作成)**] をクリックします。

1. Elastic Transcoder パイプライン ID を記録します。

#### スケーラブルな方法でコンテンツを配信するための Amazon CloudFront ディストリビューションを作成する
<a name="java-cloudfront"></a>

1. [Amazon CloudFront コンソール](https://console.aws.amazon.com/cloudfront/home)を開きます。

1. コンソールのナビゲーションペインで**[Private Content]** (プライベートコンテンツ) を展開して、**[Origin Access Identity]** (オリジンアクセスアイデンティティ) をクリックします。

1. **[オリジンアクセスアイデンティティの作成]** をクリックします。

1. **[Create]** (作成) をクリックします。

1. オリジンアクセスアイデンティティの作成時に生成される Amazon S3 正規ユーザー ID を記録します。

1. ナビゲーションペインで、**[ディストリビューション]** をクリックします。

1. [**Create Distribution**] をクリックします。

1. **[Web]** (ウェブ) を選択して **[Continue]** (続行) をクリックします。

1. **[Origin Settings]** (オリジン設定) で、Amazon S3 出力バケットを **[Origin Domain Name]** (オリジンドメイン名) として入力します。

1. **[Origin ID]** (オリジン ID) フィールドに **S3-transcoder-sample-output** を入力します。

1. **[Restrict Bucket Access]** (バケットアクセスの制限) で、**[はい]** を選択します。

1. **[Create Distribution]** (ディストリビューションの作成) をクリックし、ディストリビューションのドメイン名を記録します。

#### Amazon S3 バケットポリシーを変更する
<a name="java-s3-policy"></a>

1. [Amazon S3 コンソール](https://console.aws.amazon.com/s3/home)を開きます。

1. 出力バケットの横にある**拡大鏡アイコン**をクリックしてバケットのプロパティを表示します。

1. **[Permissions]** (アクセス許可) を展開して **[Add bucket policy]** (バケットポリシーの追加) をクリックします。

1. 以下のポリシーステートメントを入力し、**[CloudFront-oai-s3-canonical-user-id]** を **your recorded Amazon S3 canonical user ID** に、**[s3-output-bucket-name]** を **the name of your output bucket** に置き換えます。

1. **[保存]** をクリックします。

```
{
  "Version":"2012-10-17",		 	 	 
  "Id":"PolicyForCloudFrontPrivateContent",
  "Statement":[{
     "Sid":" Granting CloudFront OAI access to private content",
     "Effect":"Allow",
     "Principal":{ "CanonicalUser":"<CloudFront-oai-s3-canonical-user-id>" },
     "Action":"s3:GetObject",
     "Resource":"arn:aws:s3:::<s3-output-bucket-name>/*"
   }]
}
```

「[Java サンプル](#java-sample)」に進みます。

### Ruby 環境をセットアップする
<a name="env-ruby"></a>

このセクションでは、Ruby 環境をセットアップする手順について説明します。

**Topics**
+ [AWS SDK for Ruby をセットアップする](#ruby-sdk)
+ [Amazon S3 入出力バケットを作成する](#ruby-s3)
+ [ジョブステータス通知を受信するための Amazon SNS トピックを作成する](#ruby-sns)
+ [ジョブステータス通知のためにポーリング用の Amazon SQS キューを作成する](#ruby-sqs)
+ [Amazon SNS トピックへ Amazon SQS キューをサブスクライブする](#ruby-sqs-subscribe)
+ [Elastic Transcoder パイプラインを作成する](#ruby-pipeline)
+ [スケーラブルな方法でコンテンツを配信するための Amazon CloudFront ディストリビューションを作成する](#ruby-cloudfront)
+ [Amazon S3 バケットポリシーを変更する](#ruby-s3-policy)

サンプルコードには、以下の 1 つの主要な前提があります。
+ サンプルは Ruby バージョン 1.9 と互換性があるように記述する。

#### AWS SDK for Ruby をセットアップする
<a name="ruby-sdk"></a>

AWS SDK for Ruby は[こちら](https://aws.amazon.com/sdkforruby/)から入手できます。この SDK は以下のコマンドで Ruby gem を使用して簡単にインストールできます。

```
gem install aws-sdk
```

詳細については、[AWS SDK for Ruby のドキュメント](https://aws.amazon.com/documentation/sdkforruby/)を参照してください。

#### Amazon S3 入出力バケットを作成する
<a name="ruby-s3"></a>

1. [Amazon S3 コンソール](https://console.aws.amazon.com/s3/home)を開きます。

1. コンソールで、**[バケットの作成]** をクリックします。

1. **[バケット名]** フィールドで、希望する入力バケット名を入力します。

1. Amazon S3 コンソールで、**[バケットの作成]** を再びクリックします。

1. **[バケット名]** フィールドで、希望する出力バケット名を入力します。

#### ジョブステータス通知を受信するための Amazon SNS トピックを作成する
<a name="ruby-sns"></a>

1. [[Amazon SNS コンソール]](https://console.aws.amazon.com/sns/home) を開きます。

1. コンソールで、**[Create and Add]** (作成と追加) をクリックして **[Create New Topic]** (新しいトピックの作成) を選択します。

1. **[Topic Name]** (トピック名) フィールドに **ets-sample-topic** を入力してから、**[Create Topic]** (トピックの作成) をクリックします。

1. `ets-sample-topic` の ARN を記録します。

#### ジョブステータス通知のためにポーリング用の Amazon SQS キューを作成する
<a name="ruby-sqs"></a>

1. [Amazon SQS コンソール](https://console.aws.amazon.com/sqs/home) を開きます。

1. コンソールで、[**新しいキューの作成**] をクリックします。

1. **[Queue Name]** (キュー名) フィールドに **ets-sample-queue** を入力してから、**[Create Queue]** (キューの作成) をクリックします。

1. Amazon SQS キューの URLを記録します。

#### Amazon SNS トピックへ Amazon SQS キューをサブスクライブする
<a name="ruby-sqs-subscribe"></a>

1. [Amazon SQS コンソール](https://console.aws.amazon.com/sqs/home) を開きます。

1. コンソールで、キューのリストから **[ets-sample-queue]** を選択します。

1. **[Queue Actions]** (キューのアクション) で、**[Subscribe Queue to Amazon SNS Topic]** (キューを Amazon SNS トピックにサブスクライブする) を選択します。

1. **[Choose a Topic]** (トピックの選択) で **[ets-sample-topic]** を選択してから、**[Subscribe]** (サブスクライブ) をクリックします。

キューがトピックに正常にサブスクライブされたことを確認するメッセージが表示されます。

#### Elastic Transcoder パイプラインを作成する
<a name="ruby-pipeline"></a>

1. [Amazon Elastic Transcoder コンソール](https://console.aws.amazon.com/elastictranscoder/home)を開きます。

1. コンソールで、**[新しいパイプラインの作成]** をクリックします。

1. **[パイプライン名]** フィールドで、**ets-sample-pipeline** を入力します。

1. **[入力バケット]** フィールドで、入力バケットの名前を入力します。

1. **IAM ロール**は **Console Default Role** のままにしておきます。

1. **[Configure Amazon S3 Bucket for Transcoded Files and Playlists]** (トランスコード済みファイルとプレイリスト用に Amazon S3 バスケットを設定する) で、出力バケットの名前を入力します。

1. **[Configure Amazon S3 Bucket for Transcoded Files and Playlists]** (トランスコード済みファイルとプレイリスト用に Amazon S3 バスケットを設定する) で、**[standard storage class]** (標準的なストレージクラス) を選択します。

1. **[Notifications]** (通知) ドロップダウンメニューを展開します。

1. 4 つのイベントタイプすべてに対して、**[Use an existing SNS topic]** (既存の SNS トピックを使用) を選択し、**[Select a Topic]** (トピックの選択) で **ets-sample-topic** を選択します。

1. [**Create Pipeline (パイプラインの作成)**] をクリックします。

1. Elastic Transcoder パイプライン ID を記録します。

#### スケーラブルな方法でコンテンツを配信するための Amazon CloudFront ディストリビューションを作成する
<a name="ruby-cloudfront"></a>

1. [Amazon CloudFront コンソール](https://console.aws.amazon.com/cloudfront/home)を開きます。

1. コンソールのナビゲーションペインで**[Private Content]** (プライベートコンテンツ) を展開して、**[Origin Access Identity]** (オリジンアクセスアイデンティティ) をクリックします。

1. **[オリジンアクセスアイデンティティの作成]** をクリックします。

1. **[Create]** (作成) をクリックします。

1. オリジンアクセスアイデンティティの作成時に生成される Amazon S3 正規ユーザー ID を記録します。

1. ナビゲーションペインで、**[ディストリビューション]** をクリックします。

1. [**Create Distribution**] をクリックします。

1. **[Web]** (ウェブ) を選択して **[Continue]** (続行) をクリックします。

1. **[Origin Settings]** (オリジン設定) で、Amazon S3 出力バケットを **[Origin Domain Name]** (オリジンドメイン名) として入力します。

1. **[Origin ID]** (オリジン ID) フィールドに **S3-transcoder-sample-output** を入力します。

1. **[Restrict Bucket Access]** (バケットアクセスの制限) で、**[はい]** を選択します。

1. **[Create Distribution]** (ディストリビューションの作成) をクリックし、ディストリビューションのドメイン名を記録します。

#### Amazon S3 バケットポリシーを変更する
<a name="ruby-s3-policy"></a>

1. [Amazon S3 コンソール](https://console.aws.amazon.com/s3/home)を開きます。

1. 出力バケットの横にある**拡大鏡アイコン**をクリックしてバケットのプロパティを表示します。

1. **[Permissions]** (アクセス許可) を展開して **[Add bucket policy]** (バケットポリシーの追加) をクリックします。

1. 以下のポリシーステートメントを入力し、**[CloudFront-oai-s3-canonical-user-id]** を **your recorded Amazon S3 canonical user ID** に、**[s3-output-bucket-name]** を **the name of your output bucket** に置き換えます。

1. **[保存]** をクリックします。

```
{
  "Version":"2012-10-17",		 	 	 
  "Id":"PolicyForCloudFrontPrivateContent",
  "Statement":[{
     "Sid":" Granting CloudFront OAI access to private content",
     "Effect":"Allow",
     "Principal":{ "CanonicalUser":"<CloudFront-oai-s3-canonical-user-id>" },
     "Action":"s3:GetObject",
     "Resource":"arn:aws:s3:::<s3-output-bucket-name>/*"
   }]
}
```

「[Ruby サンプル](#ruby-sample)」に進みます。

### PHP 環境をセットアップする
<a name="env-php"></a>

このセクションでは、PHP 環境をセットアップする手順について説明します。

**Topics**
+ [サンプルコードをインストールする](#php-install)
+ [AWS SDK for PHP をセットアップする](#php-sdk)
+ [Amazon S3 入出力バケットを作成する](#php-s3)
+ [ジョブステータス通知を受信するための Amazon SNS トピックを作成する](#php-sns)
+ [Amazon SNS にサーバーをサブスクライブする](#php-sns-sub)
+ [Elastic Transcoder パイプラインを作成する](#php-pipeline)
+ [スケーラブルな方法でコンテンツを配信するための Amazon CloudFront ディストリビューションを作成する](#php-cloudfront)
+ [Amazon S3 バケットポリシーを変更する](#php-s3-policy)

サンプルコードには、以下の 3 つの主要な前提があります。
+ PHP サンプルは Apache サーバー内で実行する。
+ Apache サーバーは Amazon SNS 通知を受け取るためにインターネットからの入力を受け付ける。
+ サンプルは PHP バージョン 5.4 以上で動作するように記述する。

#### サンプルコードをインストールする
<a name="php-install"></a>

PHP サンプルコードを使用するには、まず、そのコードをダウンロードしてインストールする必要があります。
+ 以下のサンプルコードをダウンロードします。
  + [HLS サンプルコード](samples/phphls.zip)
  + [通知サンプルコード](samples/phpnotification.zip)
+ サンプルコードを解凍します。
+ Apache サーバーの DocumentRoot の下にコードを配置します。
+ ダウンロードしたサンプルコードの .zip ファイルを削除します。
+ AWS SDK インストールへのパスを更新します。

**注記**  
`HlsJobCreationSample.php` および `JobStatusNotificationsSample.php` で、`autoload.php` へのパスを更新する必要があります。phar インストールを使用する場合は、ダウンロードした `aws.phar` ファイルへのパスを使用できます。必要なすべての依存関係がこのファイルに含まれています。

#### AWS SDK for PHP をセットアップする
<a name="php-sdk"></a>

AWS SDK for PHP は[こちら](https://aws.amazon.com/sdkforphp/)で見つかります。このチュートリアルでは、phar インストールを使用することをお勧めします。ただし、長期的なプロジェクトでは、コンポーザーを使用したほうが管理は効率的です。

詳細については、[AWS SDK for PHP のドキュメント](https://aws.amazon.com/documentation/sdkforphp/)を参照してください。

#### Amazon S3 入出力バケットを作成する
<a name="php-s3"></a>

1. [Amazon S3 コンソール](https://console.aws.amazon.com/s3/home)を開きます。

1. コンソールで、**[バケットの作成]** をクリックします。

1. **[バケット名]** フィールドで、希望する入力バケット名を入力します。

1. Amazon S3 コンソールで、**[バケットの作成]** を再びクリックします。

1. **[Bucket Name]** (バケット名) フィールドで、希望する出力バケット名を入力します。

#### ジョブステータス通知を受信するための Amazon SNS トピックを作成する
<a name="php-sns"></a>

1. [[Amazon SNS コンソール]](https://console.aws.amazon.com/sns/home) を開きます。

1. コンソールで、**[Create and Add]** (作成と追加) をクリックして **[Create New Topic]** (新しいトピックの作成) を選択します。

1. **[Topic Name]** (トピック名) フィールドに **ets-sample-topic** を入力してから、**[Create Topic]** (トピックの作成) をクリックします。

1. `ets-sample-topic` の ARN を記録します。

#### Amazon SNS にサーバーをサブスクライブする
<a name="php-sns-sub"></a>

1. PHP サンプルコードがインストールされていることを確認します。

1. [[Amazon SNS コンソール]](https://console.aws.amazon.com/sns/home) を開きます。

1. [**AdditionalActions**] で、[**Create Subscription**] をクリックします。

1. サーバーの設定に基づいて [HTTP] または [HTTPS] を選択します。

1. [**Endpoint**] で、サーバーのエンドポイントを入力します。エンドポイントのパスは `JobStatusNotificationsSampleNotificationHandler.php` を参照している必要があります。

1. [**Subscribe**] をクリックします。これにより、PHP エンドポイントにサブスクリプションリクエストが送信されます。

PHP サンプルコードによってサブスクリプションリクエストが自動的に処理され、サブスクリプションが確認されます。サブスクリプションリクエストと応答は `/tmp/subscribe_requests.txt` に書き込まれます。

#### Elastic Transcoder パイプラインを作成する
<a name="php-pipeline"></a>

1. [Amazon Elastic Transcoder コンソール](https://console.aws.amazon.com/elastictranscoder/home)を開きます。

1. コンソールで、**[新しいパイプラインの作成]** をクリックします。

1. **[パイプライン名]** フィールドで、**ets-sample-pipeline** を入力します。

1. **[入力バケット]** フィールドで、入力バケットの名前を入力します。

1. **IAM ロール**は **Console Default Role** のままにしておきます。

1. **[Configure Amazon S3 Bucket for Transcoded Files and Playlists]** (トランスコード済みファイルとプレイリスト用に Amazon S3 バスケットを設定する) で、出力バケットの名前を入力します。

1. **[Configure Amazon S3 Bucket for Transcoded Files and Playlists]** (トランスコード済みファイルとプレイリスト用に Amazon S3 バスケットを設定する) で、**[standard storage class]** (標準的なストレージクラス) を選択します。

1. **[Notifications]** (通知) ドロップダウンメニューを展開します。

1. 4 つのイベントタイプすべてに対して、**[Use an existing SNS topic]** (既存の SNS トピックを使用) を選択し、**[Select a Topic]** (トピックの選択) で **ets-sample-topic** を選択します。

1. [**Create Pipeline (パイプラインの作成)**] をクリックします。

1. Elastic Transcoder パイプライン ID を記録します。

#### スケーラブルな方法でコンテンツを配信するための Amazon CloudFront ディストリビューションを作成する
<a name="php-cloudfront"></a>

1. [Amazon CloudFront コンソール](https://console.aws.amazon.com/cloudfront/home)を開きます。

1. コンソールのナビゲーションペインで**[Private Content]** (プライベートコンテンツ) を展開して、**[Origin Access Identity]** (オリジンアクセスアイデンティティ) をクリックします。

1. **[オリジンアクセスアイデンティティの作成]** をクリックします。

1. **[Create]** (作成) をクリックします。

1. オリジンアクセスアイデンティティの作成時に生成される Amazon S3 正規ユーザー ID を記録します。

1. ナビゲーションペインで、**[ディストリビューション]** をクリックします。

1. [**Create Distribution**] をクリックします。

1. **[Web]** (ウェブ) を選択して **[Continue]** (続行) をクリックします。

1. **[Origin Settings]** (オリジン設定) で、Amazon S3 出力バケットを **[Origin Domain Name]** (オリジンドメイン名) として入力します。

1. **[Origin ID]** (オリジン ID) フィールドに **S3-transcoder-sample-output** を入力します。

1. **[Restrict Bucket Access]** (バケットアクセスの制限) で、**[はい]** を選択します。

1. **[Create Distribution]** (ディストリビューションの作成) をクリックし、ディストリビューションのドメイン名を記録します。

#### Amazon S3 バケットポリシーを変更する
<a name="php-s3-policy"></a>

1. [Amazon S3 コンソール](https://console.aws.amazon.com/s3/home)を開きます。

1. 出力バケットの横にある**拡大鏡アイコン**をクリックしてバケットのプロパティを表示します。

1. **[Permissions]** (アクセス許可) を展開して **[Add bucket policy]** (バケットポリシーの追加) をクリックします。

1. 以下のポリシーステートメントを入力し、**[CloudFront-oai-s3-canonical-user-id]** を **your recorded Amazon S3 canonical user ID** に、**[s3-output-bucket-name]** を **the name of your output bucket** に置き換えます。

1. **[保存]** をクリックします。

```
{
  "Version":"2012-10-17",		 	 	 
  "Id":"PolicyForCloudFrontPrivateContent",
  "Statement":[{
     "Sid":" Granting CloudFront OAI access to private content",
     "Effect":"Allow",
     "Principal":{ "CanonicalUser":"<CloudFront-oai-s3-canonical-user-id>" },
     "Action":"s3:GetObject",
     "Resource":"arn:aws:s3:::<s3-output-bucket-name>/*"
   }]
}
```

「[PHP サンプル](#php-sample)」に進みます。

### Python 環境をセットアップする
<a name="env-python"></a>

このセクションでは、Python 環境をセットアップする手順について説明します。

**Topics**
+ [AWS SDK for Python をセットアップする](#python-sdk)
+ [Amazon S3 入出力バケットを作成する](#python-s3)
+ [ジョブステータス通知を受信するための Amazon SNS トピックを作成する](#python-sns)
+ [ジョブステータス通知のためにポーリング用の Amazon SQS キューを作成する](#python-sqs)
+ [Amazon SNS トピックへ Amazon SQS キューをサブスクライブする](#python-sqs-subscribe)
+ [Elastic Transcoder パイプラインを作成する](#python-pipeline)
+ [スケーラブルな方法でコンテンツを配信するための Amazon CloudFront ディストリビューションを作成する](#python-cloudfront)
+ [Amazon S3 バケットポリシーを変更する](#python-s3-policy)

サンプルコードには、以下の 1 つの主要な前提があります。
+ サンプルは Python バージョン 2.7 と互換性があるように記述する。

#### AWS SDK for Python をセットアップする
<a name="python-sdk"></a>

AWS SDK for Python は[こちら](https://aws.amazon.com/sdkforpython/)で見つかります。この SDK は以下のコマンドで PIP を使用しても簡単にインストールできます。

```
pip-2.7 install boto
```

詳細については、[AWS SDK for Python のドキュメント](http://docs.pythonboto.org/en/latest/)を参照してください。

#### Amazon S3 入出力バケットを作成する
<a name="python-s3"></a>

1. [Amazon S3 コンソール](https://console.aws.amazon.com/s3/home)を開きます。

1. コンソールで、**[バケットの作成]** をクリックします。

1. **[バケット名]** フィールドで、希望する入力バケット名を入力します。

1. Amazon S3 コンソールで、**[バケットの作成]** を再びクリックします。

1. **[Bucket Name]** (バケット名) フィールドで、希望する出力バケット名を入力します。

#### ジョブステータス通知を受信するための Amazon SNS トピックを作成する
<a name="python-sns"></a>

1. [[Amazon SNS コンソール]](https://console.aws.amazon.com/sns/home) を開きます。

1. コンソールで、**[Create and Add]** (作成と追加) をクリックして **[Create New Topic]** (新しいトピックの作成) を選択します。

1. **[Topic Name]** (トピック名) フィールドに **ets-sample-topic** を入力してから、**[Create Topic]** (トピックの作成) をクリックします。

1. `ets-sample-topic` の ARN を記録します。

#### ジョブステータス通知のためにポーリング用の Amazon SQS キューを作成する
<a name="python-sqs"></a>

1. [Amazon SQS コンソール](https://console.aws.amazon.com/sqs/home) を開きます。

1. コンソールで、[**新しいキューの作成**] をクリックします。

1. **[Queue Name]** (キュー名) フィールドに **ets-sample-queue** を入力してから、**[Create Queue]** (キューの作成) をクリックします。

1. Amazon SQS キューの URLを記録します。

#### Amazon SNS トピックへ Amazon SQS キューをサブスクライブする
<a name="python-sqs-subscribe"></a>

1. [Amazon SQS コンソール](https://console.aws.amazon.com/sqs/home) を開きます。

1. コンソールで、キューのリストから **[ets-sample-queue]** を選択します。

1. **[Queue Actions]** (キューのアクション) で、**[Subscribe Queue to Amazon SNS Topic]** (キューを Amazon SNS トピックにサブスクライブする) を選択します。

1. **[Choose a Topic]** (トピックの選択) で **[ets-sample-topic]** を選択してから、**[Subscribe]** (サブスクライブ) をクリックします。

キューがトピックに正常にサブスクライブされたことを確認するメッセージが表示されます。

#### Elastic Transcoder パイプラインを作成する
<a name="python-pipeline"></a>

1. [Amazon Elastic Transcoder コンソール](https://console.aws.amazon.com/elastictranscoder/home)を開きます。

1. コンソールで、**[新しいパイプラインの作成]** をクリックします。

1. **[パイプライン名]** フィールドで、**ets-sample-pipeline** を入力します。

1. **[入力バケット]** フィールドで、入力バケットの名前を入力します。

1. **IAM ロール**は **Console Default Role** のままにしておきます。

1. **[Configure Amazon S3 Bucket for Transcoded Files and Playlists]** (トランスコード済みファイルとプレイリスト用に Amazon S3 バスケットを設定する) で、出力バケットの名前を入力します。

1. **[Configure Amazon S3 Bucket for Transcoded Files and Playlists]** (トランスコード済みファイルとプレイリスト用に Amazon S3 バスケットを設定する) で、**[standard storage class]** (標準的なストレージクラス) を選択します。

1. **[Notifications]** (通知) ドロップダウンメニューを展開します。

1. 4 つのイベントタイプすべてに対して、**[Use an existing SNS topic]** (既存の SNS トピックを使用) を選択し、**[Select a Topic]** (トピックの選択) で **ets-sample-topic** を選択します。

1. [**Create Pipeline (パイプラインの作成)**] をクリックします。

1. Elastic Transcoder パイプライン ID を記録します。

#### スケーラブルな方法でコンテンツを配信するための Amazon CloudFront ディストリビューションを作成する
<a name="python-cloudfront"></a>

1. [Amazon CloudFront コンソール](https://console.aws.amazon.com/cloudfront/home)を開きます。

1. コンソールのナビゲーションペインで**[Private Content]** (プライベートコンテンツ) を展開して、**[Origin Access Identity]** (オリジンアクセスアイデンティティ) をクリックします。

1. **[オリジンアクセスアイデンティティの作成]** をクリックします。

1. **[Create]** (作成) をクリックします。

1. オリジンアクセスアイデンティティの作成時に生成される Amazon S3 正規ユーザー ID を記録します。

1. ナビゲーションペインで、**[ディストリビューション]** をクリックします。

1. [**Create Distribution**] をクリックします。

1. **[Web]** (ウェブ) を選択して **[Continue]** (続行) をクリックします。

1. **[Origin Settings]** (オリジン設定) で、Amazon S3 出力バケットを **[Origin Domain Name]** (オリジンドメイン名) として入力します。

1. **[Origin ID]** (オリジン ID) フィールドに **S3-transcoder-sample-output** を入力します。

1. **[Restrict Bucket Access]** (バケットアクセスの制限) で、**[はい]** を選択します。

1. **[Create Distribution]** (ディストリビューションの作成) をクリックし、ディストリビューションのドメイン名を記録します。

#### Amazon S3 バケットポリシーを変更する
<a name="python-s3-policy"></a>

1. [Amazon S3 コンソール](https://console.aws.amazon.com/s3/home)を開きます。

1. 出力バケットの横にある**拡大鏡アイコン**をクリックしてバケットのプロパティを表示します。

1. **[Permissions]** (アクセス許可) を展開して **[Add bucket policy]** (バケットポリシーの追加) をクリックします。

1. 以下のポリシーステートメントを入力し、**[CloudFront-oai-s3-canonical-user-id]** を **your recorded Amazon S3 canonical user ID** に、**[s3-output-bucket-name]** を **the name of your output bucket** に置き換えます。

1. **[保存]** をクリックします。

```
{
  "Version":"2012-10-17",		 	 	 
  "Id":"PolicyForCloudFrontPrivateContent",
  "Statement":[{
     "Sid":" Granting CloudFront OAI access to private content",
     "Effect":"Allow",
     "Principal":{ "CanonicalUser":"<CloudFront-oai-s3-canonical-user-id>" },
     "Action":"s3:GetObject",
     "Resource":"arn:aws:s3:::<s3-output-bucket-name>/*"
   }]
}
```

「[Python サンプル](#python-sample)」に進みます。

## Java サンプル
<a name="java-sample"></a>

すべての Java サンプルには、以下の 2 つの前提があります。
+ サンプルは Java バージョン 1.6 以上で動作するように記述する。
+ サンプルは Eclipse と AWS Toolkit for Eclipse を使用して実行する。

### HLS サンプル
<a name="java-hls"></a>

**Topics**
+ [Java HLS サンプルをダウンロードする](#java-hls-link)
+ [サンプルコードの構成要素](#java-hls-list)
+ [タスク](#java-hls-tasklist)

このサンプルは、アダプティブビットレートストリームの再生に使用できる HLS ジョブと HLS プレイリストファイルを作成する方法を示しています。

#### Java HLS サンプルをダウンロードする
<a name="java-hls-link"></a>

サンプルコードは[こちら](samples/javasamples.zip)からダウンロードできます。

#### サンプルコードの構成要素
<a name="java-hls-list"></a>

Java サンプルコードには以下の構成要素があります。
+ `HlsJobCreationSample` クラス

#### タスク
<a name="java-hls-tasklist"></a>

サンプルを実行するには、以下の手順を実行します。

1. 「[Java 環境をセットアップする](#env-java)」の手順に従って環境をセットアップします。

1. サンプルコードをダウンロードします。

1. Eclipse で、`com/amazonaws/services/elastictranscoder/samples/HlsJobCreationSample.java` を開きます。

1. PIPELINE\$1ID と INPUT\$1KEY を適切な値に置き換えます。

1. Eclipse でサンプルを実行します。

### 通知サンプル
<a name="java-notifications"></a>

**Topics**
+ [通知の構文例](#java-notification-example)
+ [Java 通知サンプルをダウンロードする](#java-link)
+ [サンプルコードの構成要素](#java-list)
+ [タスク](#java-tasklist)

#### 通知の構文例
<a name="java-notification-example"></a>

```
{
   "Type" : "Notification",
   "MessageId" : "341527b6-9081-5f3d-b933-6c8472c3be40",
   "TopicArn" : "arn:aws:sns:us-east-1:123456789012:ets-sample-topic",
   "Subject" : "Amazon Elastic Transcoder has scheduled job 1387847681009
      -abcdef for transcoding.",
   "Message" : "{\n  \"state\" : \"PROGRESSING\",\n
      \"version\" : \"2012-09-25\",\n  \"jobId\" : \"1387847681009-abcdef\",
      \n \"pipelineId\" : \"1387847629327-fedcba\",\n  \"input\" : {\n
      \"key\" : \"input/example/key.mp4\",\n \"frameRate\" : \"auto\",\n
      \"resolution\" : \"auto\",\n  \"aspectRatio\" : \"auto\",\n
      \"interlaced\" : \"auto\",\n  \"container\" : \"auto\"\n  },\n
      \"outputKeyPrefix\" : \"elastic-transcoder-samples/\",\n
      \"outputs\" : [ {\n \"id\" : \"1\",\n \"presetId\" :
      \"1351620000001-000020\",\n \"key\" : \"output/example/key.mp4\",\n
      \"thumbnailPattern\" : \"\",\n \"rotate\" : \"auto\",\n \"status\" :
      \"Progressing\"\n  } ]\n}",
   "Timestamp" : "2013-12-24T01:14:42.493Z",
   "SignatureVersion" : "1",
   "Signature" : "ElSqJW3ZksCPViYGTayI/p+LjdF2HB42iJlIJRJ+jWzWwygXdiJXvZXl94qhd/tLln1lxPqijjivb5RWu7n5yzdZwbod6lpLwyZ2TfWM6dZt57OzsG3GbdTxgqwVsztVSyWCYhcV8f+CrT3IQrfrU3Me/SRYVUqrSUXXsu4Ls7A2q9mosG7v0Sn+3Z1rAa9+Rf6QmkfAg05UX0sLyA+I2hFqTu5oAGDK4Cm6FHuIwV+oYJXNBbGWuS7tD6mRNwrYvPBlUvBLXx9m3CbqSXv5Yoj39vglv+1djtaLA3GpwX+B1hHx8QT373lgmmsmGDRWhSQretpOTWDYb81PV2K0bg==",
   "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-e372f8ca30337fdb084e8ac449342c77.pem",
   "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=
      Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:123456789012:ets-
      sample-topic:b3ec47e5-e1f0-401f-a0a5-98c7fe405c2b"
 }
```

#### Java 通知サンプルをダウンロードする
<a name="java-link"></a>

サンプルコードは[こちら](samples/javasamples.zip)からダウンロードできます。

#### サンプルコードの構成要素
<a name="java-list"></a>

Java サンプルコードには以下の構成要素があります。
+ `Notification` クラス: Java から通知を利用するために、Jackson JSON ライブラリを使用してジョブステータス通知を POJO に逆シリアル化します。`Notification` クラスは、Amazon SQS キューから取得するメッセージのモデルを実装します。
+ `JobStatusNotification` クラス: `JobStatusNotification` クラスは、Elastic Transcoder 通知のモデルを実装します。
+ `SqsQueueNotificationWorker` クラス: `SqsQueueNotificationWorker` クラスは、個別のスレッドで開始されて、Amazon SQS をポーリングし、ジョブステータス通知を処理します。このクラスは、メッセージを受け取り、受け取った通知ごとにすべての登録済みのハンドラーを呼び出した後、キューからメッセージを削除します。
+ `JobStatusNotificationHandler` インターフェイス: `JobStatusNotificationHandler` インターフェイスは、通知のカスタム処理のために実装できます。
+ `JobStatusNotificationsSample` クラス: `JobStatusNotificationsSample` クラスは、ジョブを作成し、ジョブの完了を待ちます。ジョブが終了状態になると、キューワーカーがシャットダウンされ、アプリケーションは終了します。

#### タスク
<a name="java-tasklist"></a>

サンプルを実行するには、以下の手順を実行します。

1. 「[Java 環境をセットアップする](#env-java)」の手順に従って環境をセットアップします。

1. サンプルコードをダウンロードします。

1. Java プロジェクトのソースディレクトリにサンプルコードを解凍します。

1. Eclipse で、`com/amazonaws/services/elastictranscoder/samples/JobStatusNotificationsSample.java` を開きます。

1. PIPELINE\$1ID、SQS\$1QUEUE\$1URL、INPUT\$1KEY を適切な値に置き換えます。

1. Eclipse でサンプルを実行します。

## Ruby サンプル
<a name="ruby-sample"></a>

すべての Ruby サンプルには、以下の 1 つの主要な前提があります。
+ サンプルは Ruby バージョン 1.9 と互換性があるように記述する。

### HLS サンプル
<a name="ruby-hls"></a>

**Topics**
+ [Ruby HLS サンプルをダウンロードする](#ruby-hls-link)
+ [サンプルコードの構成要素](#ruby-hls-list)
+ [タスク](#ruby-hls-tasklist)

このサンプルは、アダプティブビットレートストリームの再生に使用できる HLS ジョブと HLS プレイリストファイルを作成する方法を示しています。

#### Ruby HLS サンプルをダウンロードする
<a name="ruby-hls-link"></a>

サンプルコードは[こちら](samples/rubyhls.zip)からダウンロードできます。

#### サンプルコードの構成要素
<a name="ruby-hls-list"></a>

Ruby サンプルコードには以下の構成要素があります。
+ `HlsJobCreationSample.rb` ファイル

#### タスク
<a name="ruby-hls-tasklist"></a>

サンプルを実行するには、以下の手順を実行します。

1. 「[Ruby 環境をセットアップする](#env-ruby)」の手順に従って環境をセットアップします。

1. サンプルコードをダウンロードします。

1. Ruby プロジェクトのソースディレクトリにサンプルコードを解凍します。

1. `HlsJobCreationSample.rb` を編集し、pipeline\$1id と input\$1key を適切な値に置き換えます。

1. ターミナルウィンドウから、サンプルコードを解凍したディレクトリに移動し、以下のように実行します。

```
$ruby HlsJobCreationSample.rb
```

### 通知サンプル
<a name="ruby-notifications"></a>

**Topics**
+ [通知の構文例](#ruby-notification-example)
+ [Ruby 通知サンプルをダウンロードする](#ruby-link)
+ [サンプルコードの構成要素](#ruby-list)
+ [タスク](#ruby-tasklist)

#### 通知の構文例
<a name="ruby-notification-example"></a>

```
{
   "Type" : "Notification",
   "MessageId" : "341527b6-9081-5f3d-b933-6c8472c3be40",
   "TopicArn" : "arn:aws:sns:us-east-1:123456789012:ets-sample-topic",
   "Subject" : "Amazon Elastic Transcoder has scheduled job 1387847681009
      -abcdef for transcoding.",
   "Message" : "{\n  \"state\" : \"PROGRESSING\",\n
      \"version\" : \"2012-09-25\",\n  \"jobId\" : \"1387847681009-abcdef\",
      \n \"pipelineId\" : \"1387847629327-fedcba\",\n  \"input\" : {\n
      \"key\" : \"input/example/key.mp4\",\n \"frameRate\" : \"auto\",\n
      \"resolution\" : \"auto\",\n  \"aspectRatio\" : \"auto\",\n
      \"interlaced\" : \"auto\",\n  \"container\" : \"auto\"\n  },\n
      \"outputKeyPrefix\" : \"elastic-transcoder-samples/\",\n
      \"outputs\" : [ {\n \"id\" : \"1\",\n \"presetId\" :
      \"1351620000001-000020\",\n \"key\" : \"output/example/key.mp4\",\n
      \"thumbnailPattern\" : \"\",\n \"rotate\" : \"auto\",\n \"status\" :
      \"Progressing\"\n  } ]\n}",
   "Timestamp" : "2013-12-24T01:14:42.493Z",
   "SignatureVersion" : "1",
   "Signature" : "ElSqJW3ZksCPViYGTayI/p+LjdF2HB42iJlIJRJ+jWzWwygXdiJXvZXl94qhd/tLln1lxPqijjivb5RWu7n5yzdZwbod6lpLwyZ2TfWM6dZt57OzsG3GbdTxgqwVsztVSyWCYhcV8f+CrT3IQrfrU3Me/SRYVUqrSUXXsu4Ls7A2q9mosG7v0Sn+3Z1rAa9+Rf6QmkfAg05UX0sLyA+I2hFqTu5oAGDK4Cm6FHuIwV+oYJXNBbGWuS7tD6mRNwrYvPBlUvBLXx9m3CbqSXv5Yoj39vglv+1djtaLA3GpwX+B1hHx8QT373lgmmsmGDRWhSQretpOTWDYb81PV2K0bg==",
   "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-e372f8ca30337fdb084e8ac449342c77.pem",
   "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=
      Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:123456789012:ets-
      sample-topic:b3ec47e5-e1f0-401f-a0a5-98c7fe405c2b"
 }
```

#### Ruby 通知サンプルをダウンロードする
<a name="ruby-link"></a>

サンプルコードは[こちら](samples/rubynotification.zip)からダウンロードできます。

#### サンプルコードの構成要素
<a name="ruby-list"></a>

Ruby サンプルコードには以下の構成要素があります。
+ `SqsQueueNotificationWorker` クラス: `SqsQueueNotificationWorker` クラスは、Amazon SQS をポーリングし、通知ごとにすべての登録済みのハンドラーを呼び出した後、キューからメッセージを削除します。ワーカーは別のスレッドで実行されます。Ruby の実装で「グリーン」スレッドを使用している場合は、一度に 1 つのスレッドのみが実行されます (真のマルチプロセッシングではありません)。
+ スクリプト `JobStatusNotificationsSample.rb`: このスクリプトは、Elastic Transcoder ジョブを作成し、Amazon SQS ワーカーを開始して、ジョブの完了を待ちます。登録済みのハンドラーからの指示により、Amazon SQS ワーカーは、作成されたジョブの処理が完了すると停止します。通知の処理のために、add\$1handlers メソッドが呼び出されて、1 つの引数を受け取るハンドラーとして Proc または lambda が渡されます。受け取った通知ごとに、すべての登録済みのハンドラーが呼び出されて、ハンドラーへの入力引数として通知が渡されます。

#### タスク
<a name="ruby-tasklist"></a>

サンプルを実行するには、以下の手順を実行します。

1. 「[Ruby 環境をセットアップする](#env-ruby)」の手順に従って環境をセットアップします。

1. サンプルコードをダウンロードします。

1. Ruby プロジェクトのソースディレクトリにサンプルコードを解凍します。

1. `JobStatusNotificationsSample.rb` を編集し、pipeline\$1id、sqs\$1queue\$1url、input\$1key を適切な値に置き換えます。

1. ターミナルウィンドウから、サンプルコードを解凍したディレクトリに移動し、以下のように実行します。

```
$ruby JobStatusNotificationsSample.rb
```

## PHP サンプル
<a name="php-sample"></a>

すべての PHP サンプルには、以下の 3 つの主要な前提があります。
+ PHP サンプルは Apache サーバー内で実行する。
+ Apache サーバーは Amazon SNS 通知を受け取るためにインターネットからの入力を受け付ける。
+ サンプルは PHP バージョン 5.4 以上で動作するように記述する。

### HLS サンプル
<a name="php-hls"></a>

**Topics**
+ [PHP HLS サンプルをダウンロードする](#php-hls-link)
+ [サンプルコードの構成要素](#php-hls-list)
+ [タスク](#php-hls-tasklist)

このサンプルは、アダプティブビットレートストリームの再生に使用できる HLS ジョブと HLS プレイリストファイルを作成する方法を示しています。

#### PHP HLS サンプルをダウンロードする
<a name="php-hls-link"></a>

サンプルコードは[こちら](samples/phphls.zip)からダウンロードできます。

#### サンプルコードの構成要素
<a name="php-hls-list"></a>

PHP サンプルコードには以下の構成要素があります。
+ `HlsJobCreationSample.php` ファイル

#### タスク
<a name="php-hls-tasklist"></a>

サンプルを実行するには、以下の手順を実行します。

1. 「[PHP 環境をセットアップする](#env-php)」の手順に従って環境をセットアップします。

1. サンプルコードをダウンロードします。

1. ブラウザで、http://<your-endpoint>/transcoder-samples/HlsJobCreationSample.php ページをロードします。

1. パイプライン ID と入力キーを入力し、ジョブ作成用のフォームを送信します。

### 通知サンプル
<a name="php-notifications"></a>

**Topics**
+ [通知の構文例](#php-notification-example)
+ [PHP 通知サンプルをダウンロードする](#php-link)
+ [サンプルコードの構成要素](#php-list)
+ [タスク](#php-tasklist)

#### 通知の構文例
<a name="php-notification-example"></a>

```
{
   "Type" : "Notification",
   "MessageId" : "341527b6-9081-5f3d-b933-6c8472c3be40",
   "TopicArn" : "arn:aws:sns:us-east-1:123456789012:ets-sample-topic",
   "Subject" : "Amazon Elastic Transcoder has scheduled job 1387847681009
      -abcdef for transcoding.",
   "Message" : "{\n  \"state\" : \"PROGRESSING\",\n
      \"version\" : \"2012-09-25\",\n  \"jobId\" : \"1387847681009-abcdef\",
      \n \"pipelineId\" : \"1387847629327-fedcba\",\n  \"input\" : {\n
      \"key\" : \"input/example/key.mp4\",\n \"frameRate\" : \"auto\",\n
      \"resolution\" : \"auto\",\n  \"aspectRatio\" : \"auto\",\n
      \"interlaced\" : \"auto\",\n  \"container\" : \"auto\"\n  },\n
      \"outputKeyPrefix\" : \"elastic-transcoder-samples/\",\n
      \"outputs\" : [ {\n \"id\" : \"1\",\n \"presetId\" :
      \"1351620000001-000020\",\n \"key\" : \"output/example/key.mp4\",\n
      \"thumbnailPattern\" : \"\",\n \"rotate\" : \"auto\",\n \"status\" :
      \"Progressing\"\n  } ]\n}",
   "Timestamp" : "2013-12-24T01:14:42.493Z",
   "SignatureVersion" : "1",
   "Signature" : "ElSqJW3ZksCPViYGTayI/p+LjdF2HB42iJlIJRJ+jWzWwygXdiJXvZXl94qhd/tLln1lxPqijjivb5RWu7n5yzdZwbod6lpLwyZ2TfWM6dZt57OzsG3GbdTxgqwVsztVSyWCYhcV8f+CrT3IQrfrU3Me/SRYVUqrSUXXsu4Ls7A2q9mosG7v0Sn+3Z1rAa9+Rf6QmkfAg05UX0sLyA+I2hFqTu5oAGDK4Cm6FHuIwV+oYJXNBbGWuS7tD6mRNwrYvPBlUvBLXx9m3CbqSXv5Yoj39vglv+1djtaLA3GpwX+B1hHx8QT373lgmmsmGDRWhSQretpOTWDYb81PV2K0bg==",
   "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-e372f8ca30337fdb084e8ac449342c77.pem",
   "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=
      Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:123456789012:ets-
      sample-topic:b3ec47e5-e1f0-401f-a0a5-98c7fe405c2b"
 }
```

#### PHP 通知サンプルをダウンロードする
<a name="php-link"></a>

サンプルコードは[こちら](samples/phpnotification.zip)からダウンロードできます。

#### サンプルコードの構成要素
<a name="php-list"></a>

PHP サンプルコードには以下の構成要素があります。
+ ファイル `JobStatusNotificationsSampleNotificationHandler.php`: 通知がサーバーに POST 送信されると、通知ハンドラーが /tmp/<job-id> にあるファイルにステータスを再び書きみます。
+ ファイル `JobStatusNotificationsSample.php`: 通知ハンドラが /tmp/<job-id> にあるファイルに再び書き込んだ後、`JobStatusNotificationsSample.php` は、渡されたクエリ文字列内の ID で指定された /tmp/<job-id> ステータスファイルをロードします。

#### タスク
<a name="php-tasklist"></a>

サンプルを実行するには、以下の手順を実行します。

1. 「[PHP 環境をセットアップする](#env-php)」の手順に従って環境をセットアップします。

1. サンプルコードをダウンロードします。

1. PHP プロジェクトのソースディレクトリにサンプルコードを解凍します。

1. ブラウザで、http://<your-endpoint>/transcoder-samples/JobStatusNotificationsSample.php ページをロードします。

1. トランスコードするパイプラインの ID と入力キーを入力し、[**Create Job**] ボタンを押します。

## Python サンプル
<a name="python-sample"></a>

すべての Python サンプルには、以下の 1 つの主要な前提があります。
+ サンプルは Python バージョン 2.7 と互換性があるように記述する。

### HLS サンプル
<a name="python-hls"></a>

**Topics**
+ [Python HLS サンプルをダウンロードする](#python-hls-link)
+ [サンプルコードの構成要素](#python-hls-list)
+ [タスク](#python-hls-tasklist)

このサンプルは、アダプティブビットレートストリームの再生に使用できる HLS ジョブと HLS プレイリストファイルを作成する方法を示しています。

#### Python HLS サンプルをダウンロードする
<a name="python-hls-link"></a>

サンプルコードは[こちら](samples/pythonhls.zip)からダウンロードできます。

#### サンプルコードの構成要素
<a name="python-hls-list"></a>

Python サンプルコードには以下の構成要素があります。
+ `HlsJobCreationSample.py` ファイル

#### タスク
<a name="python-hls-tasklist"></a>

サンプルを実行するには、以下の手順を実行します。

1. 「[Python 環境をセットアップする](#env-python)」の手順に従って環境をセットアップします。

1. サンプルコードをダウンロードします。

1. サンプルコードを解凍します。

1. `HlsJobCreationSample.py` を編集し、pipeline\$1id と input\$1key を適切な値に置き換えます。

1. ターミナルウィンドウから、サンプルコードを解凍したディレクトリに移動し、以下のように実行します。

```
$python HlsJobCreationSample.py
```

### 通知サンプル
<a name="python-notifications"></a>

**Topics**
+ [通知の構文例](#python-notification-example)
+ [Python 通知サンプルをダウンロードする](#python-link)
+ [サンプルコードの構成要素](#python-list)
+ [タスク](#python-tasklist)

#### 通知の構文例
<a name="python-notification-example"></a>

```
{
   "Type" : "Notification",
   "MessageId" : "341527b6-9081-5f3d-b933-6c8472c3be40",
   "TopicArn" : "arn:aws:sns:us-east-1:123456789012:ets-sample-topic",
   "Subject" : "Amazon Elastic Transcoder has scheduled job 1387847681009
      -abcdef for transcoding.",
   "Message" : "{\n  \"state\" : \"PROGRESSING\",\n
      \"version\" : \"2012-09-25\",\n  \"jobId\" : \"1387847681009-abcdef\",
      \n \"pipelineId\" : \"1387847629327-fedcba\",\n  \"input\" : {\n
      \"key\" : \"input/example/key.mp4\",\n \"frameRate\" : \"auto\",\n
      \"resolution\" : \"auto\",\n  \"aspectRatio\" : \"auto\",\n
      \"interlaced\" : \"auto\",\n  \"container\" : \"auto\"\n  },\n
      \"outputKeyPrefix\" : \"elastic-transcoder-samples/\",\n
      \"outputs\" : [ {\n \"id\" : \"1\",\n \"presetId\" :
      \"1351620000001-000020\",\n \"key\" : \"output/example/key.mp4\",\n
      \"thumbnailPattern\" : \"\",\n \"rotate\" : \"auto\",\n \"status\" :
      \"Progressing\"\n  } ]\n}",
   "Timestamp" : "2013-12-24T01:14:42.493Z",
   "SignatureVersion" : "1",
   "Signature" : "ElSqJW3ZksCPViYGTayI/p+LjdF2HB42iJlIJRJ+jWzWwygXdiJXvZXl94qhd/tLln1lxPqijjivb5RWu7n5yzdZwbod6lpLwyZ2TfWM6dZt57OzsG3GbdTxgqwVsztVSyWCYhcV8f+CrT3IQrfrU3Me/SRYVUqrSUXXsu4Ls7A2q9mosG7v0Sn+3Z1rAa9+Rf6QmkfAg05UX0sLyA+I2hFqTu5oAGDK4Cm6FHuIwV+oYJXNBbGWuS7tD6mRNwrYvPBlUvBLXx9m3CbqSXv5Yoj39vglv+1djtaLA3GpwX+B1hHx8QT373lgmmsmGDRWhSQretpOTWDYb81PV2K0bg==",
   "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-e372f8ca30337fdb084e8ac449342c77.pem",
   "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=
      Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:123456789012:ets-
      sample-topic:b3ec47e5-e1f0-401f-a0a5-98c7fe405c2b"
 }
```

#### Python 通知サンプルをダウンロードする
<a name="python-link"></a>

サンプルコードは[こちら](samples/pythonnotification.zip)からダウンロードできます。

#### サンプルコードの構成要素
<a name="python-list"></a>

Python サンプルコードには以下の構成要素があります。
+ `SqsQueueNotificationWorker.py` クラス: `SqsQueueNotificationWorker` クラスは、個別のプロセスで開始されて、Amazon SQS をポーリングし、通知を処理します。これにより、Python で真のマルチプロセッシングが可能になります。このクラスは、メッセージを受け取り、受け取った通知ごとにすべての登録済みのハンドラーを呼び出した後、キューからメッセージを削除します。このクラスには、Elastic Transcoder 通知の処理用フレームワークを実装するための `JobStatusNotificationHandler` クラスの定義も含まれています。このクラスは継承できるため、ジョブ処理用のメソッドをカスタムのメソッドで上書きできます。これは、Python のダックタイピングの規格に従っていませんが、このサンプルの目的では、ハンドラーの正式な定義が可能になります。
+ `JobStatusNotificationSample.py` スクリプト: `JobStatusNotificationSample.py` スクリプトは、Elastic Transcoder でジョブを作成し、ジョブの完了を待ちます。ジョブが完了すると、キューのポーリングプロセスを停止し、終了します。ハンドラーがポーリング先のキューとは別のプロセスで実行されるため、値オブジェクトのマルチプロセッシングによるプロセス間同期が必要になります。

#### タスク
<a name="python-tasklist"></a>

サンプルを実行するには、以下の手順を実行します。

1. 「[Python 環境をセットアップする](#env-python)」の手順に従って環境をセットアップします。

1. サンプルコードをダウンロードします。

1. ローカルフォルダーにサンプルコードを解凍します。

1. `JobStatusNotificationsSample.py` を編集し、pipeline\$1id、sqs\$1queue\$1url、input\$1key を適切な値に置き換えます。

1. ターミナルウィンドウから、サンプルコードを解凍したディレクトリに移動し、以下のように実行します。

```
$python JobStatusNotificationsSample.py
```