約10分

Amazon S3でAktarを使う方法

Amazon S3はオブジェクトストレージの元祖で、AktarのAmazon S3プリセットで利用できます。注意が必要なのは公開アクセスだけです。S3はデフォルトで公開アクセスをブロックするため、公開読み取り用のバケットポリシーを追加するか、バケットの前にCloudFrontを置く必要があります。

必要なもの

  • AWSアカウント
  • S3バケットとIAMユーザーを作成できる権限
  • MacにインストールしたAktar

設定手順

  1. 1

    バケットを作成する

    S3コンソールでCreate bucketをクリックし、グローバルに一意な名前と、最寄りのリージョン(例:eu-central-1)を選びます。Aktarはアクセスコントロールリスト(ACL)を使わないので、オブジェクト所有者の設定はデフォルトの「Bucket owner enforced」のままで構いません。

  2. 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. 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. 4

    Aktarにアップロード先を追加する

    Settings → Destinations → Add DestinationでAmazon S3を選び、下の値を入力します。エンドポイントとリージョンは、バケットのリージョンと一致させる必要があります。

  5. 5

    テストして保存する

    「Test Connection」をクリックし、バケットに書き込めること、公開URLでファイルが配信されることを確認したら、「Save」をクリックします。

Aktarでの設定

Settings → Destinations → Add Destinationで、次の値を入力します。項目名はアプリの表示と同じです。

項目入力例
ProviderAmazon S3
Endpointhttps://s3.eu-central-1.amazonaws.comバケットのリージョンに合わせます。
Regioneu-central-1
Access Key IDAKIA…IAMユーザーのキーです。
Secret Access Key••••••••
Bucketyour-bucket
Public Base URLyour-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で質問してください。