Amazon AWS管理コンソールを使用していくつかのファイルをアップロードしました。
HTTP 403 Access denied
エラー。 view
にアクセス許可を設定する必要があることがわかりました。
バケット上のすべてのファイルに対してこれを行うにはどうすればよいですか?
各ファイルにアクセス許可を設定することは可能ですが、すべてのユーザーに表示する必要がある多くのファイルがある場合は時間がかかります。
バケットポリシーを適用することをお勧めします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
パブリックにするディレクトリを選択できます。
「more」を押して、公開としてマークします。ディレクトリとすべてのファイルがパブリックとしてアクセス可能になります。
一意のアイテム(バケットまたはアイテム)のACLのみを変更できます。大豆を1つずつ変更する必要があります。
一部のS3管理アプリケーションでは、バケット内のすべてのアイテムに同じACLを適用できますが、内部的には各ACLに1つずつ適用します。
プログラムでファイルをアップロードする場合、ファイルをアップロードするときにACLを指定することが重要です。これにより、後で変更する必要がなくなります。 S3管理アプリケーション(Cloudberry、Transmitなど)を使用する際の問題は、各ファイルをアップロードするときに、それらのほとんどがデフォルトACL(プライベート読み取り専用)を使用することです。
Cloudberry Explorer を使用してジョブを実行しました:)
プログラム(Java)を介してs3バケットにファイルをアップロードしているときにも同じ問題が発生しました。
エラー:要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。
Origin ' http:// localhost:90 'はアクセスを許可されていません。応答のHTTPステータスコード403
Origin identityを追加し、bucket policyとCORS configurationその後、すべて正常に機能しました。
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/_"
大量のファイルを公開するには、次の手順を実行します。
S3 Browser を使用すると、GUIを使用して再帰的にアクセス許可を更新できます。これは便利なツールであり、非営利的な使用には無料です。
AWS policy generator を使用して、ニーズに合ったポリシーを生成します。ポリシージェネレーターのプリンシパルは、オブジェクトへのアクセスに使用するIAMユーザー/ロールである必要があります。リソースARNはarn:aws:s3:::mybucket/sub/dirs/are/supported/*
次に、「ステートメントの追加」をクリックして、フォロースルーします。最後に、ポリシーを表すJSONを取得します。これを「AWSのs3バケットページ->権限->バケットポリシー」にあるs3バケットポリシー管理セクションに貼り付けます。
Transmit by Panicと呼ばれる巧妙に作成されたFTPアプリを既に持っている潜在的なmacOSユーザーのために、これをここに追加したかったのです。
私はすでにPanicを持っていて、S3バケットをサポートしています(これがどのバージョンに入ったのかはわかりませんが、アップグレードは無料だったと思います)。また、読み取りおよび書き込み権限の再帰的な更新もサポートしています。
更新するディレクトリを右クリックし、設定する読み取りおよび書き込み権限を選択するだけです。
それほど高速ではないように見えますが、[ウィンドウ]> [トランスクリプト]を選択してログファイルを開くことができるため、少なくとも何かを実行していることがわかります。