はじめに
Zencoder は、Amazon S3 バケットからファイルをアップロードおよびダウンロードできます。Zencoderでファイルをダウンロードするには、Everyoneがファイルにアクセスできるか、Zencoderアクセスを許可するバケットポリシーをバケットに追加するか、バケットにアクセスするための資格情報をアカウントに保存する必要があります。
クレデンシャルを使用する
お客様のアカウントに認証情報を保存することができます。これにより、弊社ではなくお客様のアカウントを使用してファイルをアップロードすることができます。つまり、あなたのアカウントはファイルの所有者であり、そのファイルに対する完全な権利と権限を持ちます。認証情報は、すべてのアップロードとダウンロードのデフォルトに設定することも、リクエストごとに参照することもできます。ただし、S3 のデフォルトとして設定すると、すべての S3 のアップロードとダウンロードに使用されることに注意してください。通常、これは問題ではありませんが、後でサードパーティのバケットにアップロードする場合は、問題を引き起こす可能性があります。
バケットポリシーを使用する
もう 1 つのオプションは、バケットポリシーを使用することです。バケットポリシーを使用すると、バケット内のすべてのファイルにアクセス許可を設定できます。開始するには、 AWSコンソールにアクセスしてください。画面の左側でバケットを選択し、[プロパティ] をクリックします。最後の行で [バケットポリシーの追加] をクリックします。以下にバケットポリシーをまとめて、[バケットポリシー] テキストボックスにコピーします。
推奨されるバケットポリシー:
{
"Version": "2012-10-17",
"Id": "ZencoderBucketPolicy",
"Statement": [
{
"Sid": "Stmt1295042087538",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::395540211253:root"
},
"Action": [
"s3:GetObjectAcl",
"s3:GetObject",
"s3:PutObjectAcl",
"s3:PutObject",
"s3:ListMultipartUploadParts"
],
"Resource": "arn:aws:s3:::MY-BUCKET/*"
},
{
"Sid": "Stmt1295042087538",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::395540211253:root"
},
"Action": [
"s3:ListBucketMultipartUploads",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::MY-BUCKET"
}
]
}
しかありませんあなたがしなければならない1つの変更準備が整う前に、このバケットポリシーに追加します。
- MY-BUCKET をバケットの名前に置き換えます。行の最後に /* を残します。これにより、バケット内のすべてのファイルにポリシーが適用されます。
- オプションで、Action 配列を許可するアクションに置き換えます。Zencoder が必要とする有効なアクションは次のとおりです。
オブジェクト権限-上記の例の最初のアクション配列
s3:PutObject
-Zencoder がバケットにファイルをアップロードできるようにするs3:GetObject
-Zencoder がバケットからファイルをダウンロードできるようにするs3:GetObjectAcl
-Zencoder がファイルの ACL 権限を取得できるようにするs3:PutObjectAcl
-Zencoder がファイル上で他のユーザーの ACL 権限を設定できるようにするs3:ListMultipartUploadParts
-Zencoder がマルチパートファイルのどの部分をバケットにアップロードしたかを一覧表示できるようにする
バケット権限-上の例の 2 番目のアクション配列
s3:GetBucketLocation
-Zencoder がバケットの場所(米国、EU、アジアなど)を取得できるようにするs3:ListBucketMultipartUploads
-Zencoder がバケットで現在起こっているマルチパートアップロードを表示できるようにするex:
Zencoder でファイルをダウンロードしてアップロードできるようにするには、最初のアクション配列を次のように置き換えます。["s3:PutObject", "s3:GetObject"]
ポリシーには 2 つのステートメントがあることに注意してください。最初のステートメントはバケット内のキーに影響し、2 番目の部分はバケット自体に影響します。
ポリシーの残りの部分は放置することができ、正常に動作します。Amazon のドキュメントには、バケットポリシーの要素に関する詳細情報が含まれています。
Zencoder は、当社が作成する動画とサムネイルに対して ACL 権限を設定することもできます。これは S3 API ドキュメントに記載されています。
注:バケットポリシーを使用する場合、Zencoder がそれらを S3 URL として識別し、リクエストに適切に署名できるように、常に s3: //BUCKET/KEY 形式の URL を使用する必要があります。
独自のバケットポリシーを作成する場合は、 Amazon のポリシージェネレーターを使用できます。使用 arN: aws: iam። 395540211253: root Zencoder アクセスを許可する AWS プリンシパルとして。
特定のファイル
特定のファイルにアクセス許可を与えることはできますか?
あなたは間違いなくできます。バケットポリシーのアプローチは一般的に簡単で高速ですが、誰にとってもうまく機能しません。その場合は、Amazon AWS アカウントにアクセス許可を付与できますaws@zencoder.com
。
代わりに正規の ID を使用する必要がある場合は、を使用できます6c8583d84664a381db0c6af0e79b285ede571885fbe768e7ea50e5d3760597dd
。
トラブルシューティング
まだ許可拒否されてる!
アクセスが拒否された場合、またはファイルが見つからない場合、S3 は「アクセスが拒否されました」と応答します。S3 認証情報またはバケットポリシーが正しく設定されていると思われるが、まだ「アクセスが拒否されました」というエラーが表示される場合は、送信している URL をダブルチェックしてください。入力が似ている場合"s3://my-bucket/this+file+is+great.mp4"
、実際に欲しいのは良いチャンスがあります"s3://my-bucket/this file is great.mp4"
EUフランクフルトリージョンを使うとエラーが出る!
Zencoder で EU フランクフルトリージョンを使用するには、リージョン名を含む S3 URL を生成する必要があります。これを行うには、このような URL を作成するだけです"s3+eu-central-1://my-bucket/file.mp4"
。