- ガイド
- コンセプト
高度な設定
外部ストレージの設定
外部ストレージ機能とは、Newt管理画面からアップロードされた画像ファイルの保存先を、Newtが管理するストレージからユーザーが用意したクラウド環境のストレージ(外部ストレージ)へと切り替えることのできる機能です。この機能を活用することにより、画像データの通信コストを外部化できるためNewt経由でのデータ通信量を大幅に削減することが可能になります。
現在のストレージの対応状況は下記となっております。
クラウドサービス | 対応状況 |
---|---|
Google Cloud Storage | 対応 |
AWS S3 | 対応 |
Azure Blob Storage | 未対応 |
Google Cloud Storage
1. GCPプロジェクトを用意する
Google Cloud Platformのプロジェクトをお持ちでない場合は、まずGCPプロジェクトを作成します(公式ドキュメント)。
既にGCPプロジェクトをお持ちの場合は、次のステップに進みます。
2. アップロード先となるGCSバケットを作成
Cloud Storageに移動し、Newtからのファイルアップロード先として使用するバケットを作成します。
バケット名は後で利用するので控えておきましょう。(公式ドキュメント)
3. 作成したバケットに公開アクセスを設定する
バケットにアップロードした画像をインターネット上の全てのユーザーが表示できるようにアクセス権限を設定します。
- 2.で作成したバケットのページに移動し、権限タブを開きます
- [+追加] ボタンをクリックし、新しいプリンシパルに
allUsers
を指定しStorageオブジェクト閲覧者
ロールを付与して保存します
4. サービスアカウントを作成
NewtからGCSへとファイルをアップロードする際に必要となる秘密鍵を生成するために、まずは IAM > サービスアカウント よりサービスアカウントを作成します。作成するサービスアカウントには ストレージ管理者 ロールを割り当てます。これにより、NewtからGCS上にファイルをアップロードしたり、削除することが可能になります。
5. 秘密鍵をJSON形式でダウンロード
サービスアカウント詳細ページ > キー タブより、鍵を追加 > 新しい鍵を作成 > JSON を選択して作成します。作成をクリックすると、JSONファイルがダウンロードされます。
6. Newtで外部ストレージを設定して有効化、保存
Newt管理画面 > スペース設定 > 外部ストレージ設定 より、Google Cloud Storageを選択し、2.で作成したバケットの名前と、4.でダウンロードしたJSONファイルを設定します。設定できたら、ステータスを有効にして保存ボタンをクリックします。
AWS S3
1. AWSアカウントを用意する
AWSアカウントをお持ちでない場合は、まずAWSアカウントを作成します(公式ドキュメント)。
既にAWSアカウントをお持ちの場合は、次のステップに進みます。
2. アップロード先となるS3バケットを作成
- 一般的な設定 > バケット名とリージョンを選択します
- オブジェクト所有者 > ACL有効 を選択します
- このバケットのブロックパブリックアクセス設定 > パブリックアクセスをすべて ブロック のチェックを外します
- バケットを作成
3. S3バケットにCORSの設定を追加
NewtからS3へファイルを直接アップロードできるようにするためCORSの設定を行います。
- バケットの詳細ページ > アクセス許可タブを開きます
- Cross-Origin Resource Sharing (CORS) を下記のように編集して変更を保存します
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"HEAD",
"GET",
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"https://app.newt.so"
],
"ExposeHeaders": []
}
]
4. S3バケットへのアクセス権限を付与するポリシーを作成
IAM(Identity and Access Management)より、2.で作成したバケットに対するNewtからのオブジェクト(ファイル)のアップロード/削除を許可するためのポリシーを作成します。
- IAM > ポリシー に移動し [ポリシーの作成] をクリックします
- JSONエディタより、下記ポリシーを入力します(※
your-bucket-name
と書いてある部分は、2.で作成したバケット名で書き換えてください)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
]
}
]
}
5. IAMよりNewt外部ストレージ用のユーザーを作成
IAM(Identity and Access Management)より、2.で作成したバケットへのオブジェクト(ファイル)のアップロード/削除を行う際に利用するユーザーを作成します。
- IAM > ユーザー に移動し [ユーザーを追加] をクリックします
- ユーザー名を入力し、AWS認証情報タイプとして [アクセスキー - プログラムによるアクセス] にチェックをつけ次に進みます
- アクセス許可の設定 > 既存のポリシーを直接アタッチを選択し、3.で作成したポリシーにチェックをつけユーザーを作成します
- ユーザー作成の完了画面に表示されるアクセスIDとシークレットアクセスキーを控えてください
6. Newtで外部ストレージを設定して有効化、保存
Newt管理画面 > スペース設定 > 外部ストレージ設定 より、AWS S3を選択し、2.で作成したバケットのバケット名とリージョン、4.で取得したアクセスIDとシークレットアクセスキーを設定します。設定できたら、ステータスを有効にして保存ボタンをクリックします。
Azure Blob Storage(準備中)
今しばらくお待ちください。
画像最適化サービスとの連携
画像最適化サービスとの連携は、外部ストレージ機能が有効化されている場合にのみ利用することができます。画像最適化サービスとの連携を行うことにより、画像サイズの自動最適化やキャッシング、APIを用いた画像処理などを行うことができます。
現在ご利用いただける画像最適化サービスは下記となっております。
画像最適化サービス | 対応状況 |
---|---|
ImageKit | 対応 |
imgix | 対応 |
Cloudinary | 未対応 |
1. 登録済みの外部ストレージを画像最適化サービスに接続
2. 画像最適化サービスを設定して有効化
Newt管理画面 > スペース設定 > 画像最適化サービス より、画像最適化サービスの種類と接続済みのエンドポイントを設定し、有効化して保存ボタンをクリックします。