web-dev-qa-db-ja.com

Amazon S3のアクセス許可の問題-すべてのファイルのアクセス許可を一度に設定する方法は?

Amazon AWS管理コンソールを使用していくつかのファイルをアップロードしました。

HTTP 403 Access deniedエラー。 viewにアクセス許可を設定する必要があることがわかりました。

バケット上のすべてのファイルに対してこれを行うにはどうすればよいですか?

各ファイルにアクセス許可を設定することは可能ですが、すべてのユーザーに表示する必要がある多くのファイルがある場合は時間がかかります。

75
Rails beginner

バケットポリシーを適用することをお勧めします1 パブリックコンテンツを保存するバケットに移動します。この方法では、すべてのオブジェクトにACLを設定する必要はありません。バケット内のすべてのファイルを作成するポリシーの例を次に示しますmybucket public。

{
    "Version": "2008-10-17",
    "Id": "http better policy",
    "Statement": [
        {
            "Sid": "readonly policy",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*"
        }
    ]
}

それ * in "Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*"は再帰を許可します。


1 バケットポリシーはIAMポリシーとは異なることに注意してください。 (1つは、IAMポリシーにPrincipalを含めようとするとエラーになります。)AWSウェブコンソールでバケットのルートに移動し、[プロパティ]> [アクセス許可]を展開すると、バケットポリシーを編集できます。バケットのサブディレクトリにも[プロパティ]> [権限]がありますが、次のオプションはありません Edit bucket policy

115
cloudberryman

パブリックにするディレクトリを選択できます。

「more」を押して、公開としてマークします。ディレクトリとすべてのファイルがパブリックとしてアクセス可能になります。

5
mohammad zein

一意のアイテム(バケットまたはアイテム)のACLのみを変更できます。大豆を1つずつ変更する必要があります。

一部のS3管理アプリケーションでは、バケット内のすべてのアイテムに同じACLを適用できますが、内部的には各ACLに1つずつ適用します。

プログラムでファイルをアップロードする場合、ファイルをアップロードするときにACLを指定することが重要です。これにより、後で変更する必要がなくなります。 S3管理アプリケーション(Cloudberry、Transmitなど)を使用する際の問題は、各ファイルをアップロードするときに、それらのほとんどがデフォルトACL(プライベート読み取り専用)を使用することです。

4
Daniel García

Cloudberry Explorer を使用してジョブを実行しました:)

4
Rails beginner

プログラム(Java)を介してs3バケットにファイルをアップロードしているときにも同じ問題が発生しました。

エラー:要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。
Origin ' http:// localhost:90 'はアクセスを許可されていません。応答のHTTPステータスコード403

Origin identityを追加し、bucket policyCORS configurationその後、すべて正常に機能しました。

2
Manju Shingadi

Aws cliを使用して各ファイルにACLを設定できます。

BUCKET_NAME=example
BUCKET_DIR=media
NEW_ACL=public-read

aws s3 ls $BUCKET_NAME/$BUCKET_DIR/ | \
awk '{$1=$2=$3=""; print $0}' | \
xargs -t -I _ \
aws s3api put-object-acl --acl $NEW_ACL --bucket $BUCKET_NAME --key "$BUCKET_DIR/_"
1
moppag

大量のファイルを公開するには、次の手順を実行します。

  1. S3 Webインターフェイス に移動します
  2. 必要なバケットを開きます
  3. リストの左側にあるチェックボックスをクリックして、必要なファイルとフォルダーを選択します
  4. リストの上部にある「その他」ボタンをクリックし、「公開する」をクリックします
  5. "公開する"をクリックして確認します。 「...このオブジェクトを読み取り、読み取りおよび書き込み権限」という警告が表示されても、ファイルにはパブリック書き込みアクセス権がありません。
1
Finesse

S3 Browser を使用すると、GUIを使用して再帰的にアクセス許可を更新できます。これは便利なツールであり、非営利的な使用には無料です。

1
Paul Siersma

AWS policy generator を使用して、ニーズに合ったポリシーを生成します。ポリシージェネレーターのプリンシパルは、オブジェクトへのアクセスに使用するIAMユーザー/ロールである必要があります。リソースARNはarn:aws:s3:::mybucket/sub/dirs/are/supported/*

次に、「ステートメントの追加」をクリックして、フォロースルーします。最後に、ポリシーを表すJSONを取得します。これを「AWSのs3バケットページ->権限->バケットポリシー」にあるs3バケットポリシー管理セクションに貼り付けます。

0
user2906555

送信5

Transmit by Panicと呼ばれる巧妙に作成されたFTPアプリを既に持っている潜在的なmacOSユーザーのために、これをここに追加したかったのです。

私はすでにPanicを持っていて、S3バケットをサポートしています(これがどのバージョンに入ったのかはわかりませんが、アップグレードは無料だったと思います)。また、読み取りおよび書き込み権限の再帰的な更新もサポートしています。

更新するディレクトリを右クリックし、設定する読み取りおよび書き込み権限を選択するだけです。

それほど高速ではないように見えますが、[ウィンドウ]> [トランスクリプト]を選択してログファイルを開くことができるため、少なくとも何かを実行していることがわかります。

0
Joshua Pinter