約10分
Amazon S3でAktarを使う方法
Amazon S3はオブジェクトストレージの元祖で、AktarのAmazon S3プリセットで利用できます。注意が必要なのは公開アクセスだけです。S3はデフォルトで公開アクセスをブロックするため、公開読み取り用のバケットポリシーを追加するか、バケットの前にCloudFrontを置く必要があります。
必要なもの
- AWSアカウント
- S3バケットとIAMユーザーを作成できる権限
- MacにインストールしたAktar
設定手順
- 1
バケットを作成する
S3コンソールでCreate bucketをクリックし、グローバルに一意な名前と、最寄りのリージョン(例:
eu-central-1)を選びます。Aktarはアクセスコントロールリスト(ACL)を使わないので、オブジェクト所有者の設定はデフォルトの「Bucket owner enforced」のままで構いません。 - 2
公開読み取りを許可する
方法A:バケットポリシー バケットのPermissionsタブで、公開バケットポリシーをブロックしている「Block public access」の設定をオフにし、次のバケットポリシーを追加します(
YOUR-BUCKETは置き換えてください)。{ "Version": "2012-10-17", "Statement": [{ "Sid": "PublicRead", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::YOUR-BUCKET/*" }] }方法B:CloudFront バケットは非公開のままにし、バケットをオリジンとするCloudFrontディストリビューションを作成します(Origin Access Controlを使用)。独自ドメインでのHTTPS配信とキャッシュが利用できます。
- 3
Aktar用のIAMユーザーを作成する
IAMでユーザーを作成し、そのバケットに対してAktarに必要な操作だけを許可するポリシーをアタッチします。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::YOUR-BUCKET" }, { "Effect": "Allow", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "Resource": "arn:aws:s3:::YOUR-BUCKET/*" } ] }次に、そのユーザーのアクセスキーを作成し、Access Key IDとSecret Access Keyをコピーします。
- 4
Aktarにアップロード先を追加する
Settings → Destinations → Add DestinationでAmazon S3を選び、下の値を入力します。エンドポイントとリージョンは、バケットのリージョンと一致させる必要があります。
- 5
テストして保存する
「Test Connection」をクリックし、バケットに書き込めること、公開URLでファイルが配信されることを確認したら、「Save」をクリックします。
Aktarでの設定
Settings → Destinations → Add Destinationで、次の値を入力します。項目名はアプリの表示と同じです。
| 項目 | 入力例 |
|---|---|
| Provider | Amazon S3 |
| Endpoint | https://s3.eu-central-1.amazonaws.comバケットのリージョンに合わせます。 |
| Region | eu-central-1 |
| Access Key ID | AKIA…IAMユーザーのキーです。 |
| Secret Access Key | •••••••• |
| Bucket | your-bucket |
| Public Base URL | your-bucket.s3.eu-central-1.amazonaws.comまたはCloudFrontのドメイン。 |
ヒント
- リンクを公開で共有するなら、独自ドメインを設定したCloudFrontがおすすめです。キャッシュが効き、バケット自体は非公開のままにできます。
- IAMポリシーの対象は1つのバケットに限定しましょう。Aktarがアカウント全体の権限を必要とすることはありません。
- アップロードを速くするには近くのリージョンを、CDNを使わない場合は閲覧者に近いリージョンを選びましょう。
トラブルシューティング
Test Connectionでリージョンやリダイレクトに関するエラーが出る
エンドポイントとリージョンは、バケットを作成したリージョンと一致させる必要があります。例:https://s3.eu-central-1.amazonaws.comとeu-central-1。
アップロードがAccess Deniedで失敗する
IAMユーザーには、YOUR-BUCKET/*に対するs3:PutObjectと、バケット自体に対するs3:ListBucketが必要です。
リンクが403を返す
バケットポリシーがない、「Block public access」でまだブロックされている、またはCloudFrontがバケットを読み取れない状態です。Access Deniedエラーをご覧ください。
まだ解決しませんか?よくある質問を見るか、GitHubで質問してください。