![見出し画像](https://assets.st-note.com/production/uploads/images/110769508/rectangle_large_type_2_ffec0f07c354dcec0cbcf266400fb0e3.png?width=800)
③クラウドの準備(AWS)
前回の記事はこちら
それでは、実際にサービスを作っていきたいと思います。
はじめに
まずは、クラウドサーバーとして使用するAWSの設定から行っていきます。
ここでは、以下の設定をAWSで行います。
MPEG2-TSファイルを保存するAWS S3のバケット作成
上記S3バケットのライフサイクルルールを設定
上記S3バケットにデータを保存する為の権限を持ったユーザの作成
AWSを使用しますので、AWSのアカウントが必要になります。
アカウントがない人は下記を参考にアカウントを作成してください。
アカウントの作成には、料金の支払いに使用するカード情報の入力が必要になります。
ただ、多くのサービスで無料枠が用意されていますので、テスト的に無料枠の範囲内で使うのであれば、支払いは発生しません。
ちなみに、今回使用するクラウドストレージのS3の場合、登録した初年度は5GBの無料枠が指定されていますし、WebAPIで使用するLambdaは、毎月100万リクエストまでは無料になっています。(2023年6月現在の情報)
本書の説明ではAWSのコンソール画面のキャプチャー画像を使っていますが、AWSのコンソール画面は、頻繁にデザインが変更されますので、違うデザインのコンソールに変わっている可能性があります。
S3の設定
クラウドストレージとして、MPEG2-TSファイルを保存するS3 の設定を行います。
S3 とはAWSが提供する、クラウドストレージサービスです。
S3では、最も上位のフォルダのことをバケット(Bucket) と呼び、公開設定などの各種設定をこのバケット単位で行います。
ここでは、MPEG2-TSを保存するバケットを作成します。
バケットの作成
AWSのコンソールにログインすると、上部にサービス検索用の入力欄があります
![](https://assets.st-note.com/img/1688625678782-ifL8BJxSna.png?width=800)
AWSには様々なサービスがありますので、各サービスの設定を行う時には、そのサービスのページを探す必要があります。
カテゴリーなどから辿っていくのは大変なので、この検索窓に目的のサービス名を入力します。
今回はS3の設定を行いますので、この検索窓に「s3」 と入力してください。
すると、下記に検索結果が表示されますので、その中からS3 を選択します。
![](https://assets.st-note.com/img/1688625697224-2AY72WiW1w.png?width=800)
左側のメニューから「バケット」を選択すると、バケット一覧が表示されます。
その一覧の右上にある「バケットを作成」ボタンを押すと「バケットを作成」画面が表示されます。
![](https://assets.st-note.com/img/1688625711241-TYsSR87WdV.png?width=800)
この画面上で「バケット名」を入力します。
![](https://assets.st-note.com/img/1688625724096-uSeOBCFkdh.png?width=800)
このバケット名には命名規則があります。
色々ありますが、使用不可の名称を入力した場合はエラーが表示されて再度入力ができますので、とりあえず小文字、数字、ドット (.)、およびハイフン (-) を使用して作成してください。
ライフサイクルルールの設定
作成したバケットにライフサイクルルールを設定します。
ライフサイクルルールとは、S3上に保存されたオブジェクトに対して行うルールです。
色々なルールの設定ができますが、今回は、保存されたMPEG2-TSファイルを削除するルールを設定します。
クラウドレコーダを動かし続けていると、S3上にどんどんMPEG2-TSファイルが溜まってしまい、そのまま放置していると、AWS S3の利用料金がどんどん上がっていってしまいます。
S3の料金の多くを占めるのが、ストレージ使用料金で、保存しているデータの容量で決まります。
東京リージョンの場合、1GBあたり0.025USDが毎月請求されます。
ただし、アカウント登録の初年度のみ5GBの容量が無料で使用できます。
(2023年6月現在の情報)
その為、ある一定期間経過した動画ファイルは削除する、というルールを設定して、常に指定した日数の最新の動画ファイルのみが存在する状態にします。
まず、バケットを選択して、「管理」タブを開きます。
![](https://assets.st-note.com/img/1688625814142-Dc8Q6ri9eS.png?width=800)
右上の「ライフサイクルルールを作成する」ボタンを押すと、ルールの作成画面が表示されます。
![](https://assets.st-note.com/img/1688625827938-zCwLiI3yUu.png)
ここでは以下の設定を行います。
ライフサイクルルール名
DeleteOldMovieを入力
ルールスコープを選択
1つ以上のフィルターを使用してこのルールスコープを制限する
プレフィックス
movie/
ライフサイクルルールのアクション
オブジェクトの現行バージョンを有効期限切れにする
オブジェクト作成後の日数保持しておきたい日数
ここでは3日を入力
このバケットにはMPEG2-TS動画だけでなく、他のファイルなどもアップロードしますので、プレフィックスにはmovie/ を入力して、削除対象をMPEG2-TS動画ファイルが保存されたmovieフォルダ配下に制限します。
アクションは「オブジェクトの現行バージョンを有効期限切れにする」を選択し、保存しておく日数を入力します。
バケットのバージョニングを有効にする設定をしている場合、このチェックだけだと、有効期限切れのフラグが付くだけで、オブジェクト自体は削除されません。
バケットのバージョニングを無効にしている場合は、有効期限切れ=オブジェクトの削除、になります。
これで、movie/ フォルダ配下のMPEG2-TSファイルに、r大夫サイクルルールが設定されました。
確認の為、movie/配下のMPEG2-TSファイルを選択してプロパティを表示させてみてください。
![](https://assets.st-note.com/img/1688626174396-BGPnInbd0i.png?width=800)
オブジェクト管理の概要の項目で、有効期限日が正しく設定されていれば完了です。
ちなみに、ライフサイクルルールの実行タイミングは、UTCで0:00なので、日本時間では午前9:00になります。
クラウドレコーダにS3アップロード権限を設定
作成したS3のバケットにMPEG2-TSの動画を保存する為には、S3バケットにファイルをアップロードする権限が必要です。
今回、MPEG2-TSファイルをアップロードするのは、Pythonで作成するクラウドレコーダ・プログラムになりますので、IAM(AWS Identity and Access Management) サービスを使用して、クラウドレコーダに権限を付与します。
IAM(AWS Identity and Access Management) とはAWS リソースへのアクセスを管理するためのサービスです。
このIAMで、先ほど作成したS3バケットにデータをアップロードできるユーザを作成し、そのユーザ情報を、クラウドレコーダ・プログラムに設定することで、MPEG2-TSファイルをS3にアップロードできるようになります。
ポリシーの作成
まず最初にS3へのデータアップロードを許可する為に「ポリシー」を作成します。
IAMサービスにおけるポリシーとは、AWS上のサービスやリソースへのアクセス許可を定義した情報です。
このポリシーをユーザに対応つけることで、許可したサービスやリソースへのアクセスが可能になります。
まず、先程同様、コンソール上部の検索窓に「iam」と入力して、IAMサービスページを開きます。
![](https://assets.st-note.com/img/1688626224575-RUFikeJNbs.png?width=800)
左側のメニューから「ポリシー」を選択すると、ポリシー一覧画面が表示されます。
その一覧の右上にある「ポリシーを作成」ボタンを押すと「ポリシーの作成」画面が表示されます。
![](https://assets.st-note.com/img/1688626235582-2yp1dqENz9.png?width=800)
![](https://assets.st-note.com/img/1688626252472-Qj0xE3YnjN.png?width=800)
まず、最初の「アクセス許可を指定」ページで、どのAWSサービスやリソースに対して、どのようなアクションを許可するかを指定します。
指定の方法としてビジュアルエディタで対話的に設定していく方法と、JSONで直接許可設定を記述する2種類の方法があります。
今回は先ほど作成したS3のバケットへのファイルアップロード権限(s3:PutObject)のみなので、JSONで直接記述してみます。
まず画面右上にある「JSON」ボタンを押して、ポリシーエディタを表示させます。
![](https://assets.st-note.com/img/1688626267932-4snQbRUYmA.png?width=800)
記述するJSONの内容は下記になります。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::[作成したS3バケット名]/*"
}
]
}
このJSONのResourceキーの値の[作成したS3バケット名]の箇所に、先程作成したS3バケットの名称を記載したら、すべての内容を画面上の「ポリシーエディタ」に張り付けてください。
ポリシーの書式については下記を参照してください
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_elements.html
次のページでポリシーの名前を入力して、ポリシーを作成します。
ユーザーの作成
ポリシーを作成したら、次に、クラウドレコーダに設定するユーザーを作成します。
左側のメニューから「ユーザー」を選択すると、ユーザー一覧画面が表示されます。
その一覧の右上にある「ユーザーを追加」ボタンを押すと「ユーザーの作成」画面が表示されます。
![](https://assets.st-note.com/img/1688626357327-965zRkolaT.png?width=800)
![](https://assets.st-note.com/img/1688626365043-IkEjSzjyTX.png?width=800)
ユーザー名を入力したら、先ほど作成したポリシーを、このユーザーに付与します。
「許可を設定」ページで、「ポリシーを直接アタッチする」を選択すると、ポリシー一覧が表示されます。
検索窓を使って、先程作成したポリシーを探して、チェックを入れて、ポリシーをアタッチします。
![](https://assets.st-note.com/img/1688626376182-4lAVB2HrVh.png?width=800)
次へと進んで、ユーザを作成すると、ユーザ一覧に作成したユーザー名が表示されます。
認証情報のダウンロード
作成したユーザーを、クラウドレコーダ・プログラムに設定する為には、ユーザーのアクセスキーを作成し、ダウンロードする必要があります。
ユーザー一覧から、先ほど作成したユーザーを選択すると、ユーザーの情報が表示されます。
画面真ん中ほどにあるタブで「セキュリティ認証情報」を選択して、下の方にスクロールさせると、「アクセスキー」という項目があります。
![](https://assets.st-note.com/img/1688626387909-9nAL6kUcOc.png?width=800)
![](https://assets.st-note.com/img/1688626396681-VRBBbQSGAk.png?width=800)
ここの「アクセスキーを作成」ボタンを押すと「アクセスキー作成画面」が表示されますので、ユースケースとして「ローカルコード」を選択し、最後の「上記のレコメンデーションを理解し、アクセスキーを作成します」にチェックをいれて「次へ」を押すと、アクセスキーが作成されます。
![](https://assets.st-note.com/img/1688626414630-NeMrWDmZlD.png?width=800)
![](https://assets.st-note.com/img/1688626423879-BhPp00b1MA.png?width=800)
ここで生成されたアクセスキーの情報は、アクセスキー と シークレットキー の組み合わせで使用しますが、シークレットキーの方はこの画面を閉じると二度と表示することができません。
必ず、この最後の画面で「完了」を押す前に、「.csvファイルをダウンロード」ボタンを押して、アクセスキーをダウンロードしておいてください。
![](https://assets.st-note.com/img/1688626443881-ozIedejolx.png?width=800)
アクセスキーとシークレットキーは、非常に重要な情報です。
この情報が漏洩すると、他者に自分のアカウントのAWSサービスを勝手に使用されてしまう危険がありますので、扱いには注意してください。
特にソースコードに書き込んだ状態で、GitHubなどのPublicなリポジトリに誤って上げてしまうことが無いように、ソースコードへのハードコーディングは行わないようにしてください。
次の記事
この記事が気に入ったらサポートをしてみませんか?