3

バケットとリソースを操作しようとしていますが、アクセス拒否エラーが発生し続けます

例えば

```

$ gsutil ls -L gs://images/large

gs://images/large/aa.png:
   Creation time:       Tue, 25 Nov 2014 20:03:19 GMT
   Cache-Control:       public, max-age=2592000
   Content-Length:      343034
   Content-Type:        image/png
   Generation:      1416945799570000
   Metageneration:      2
   ACL:     ACCESS DENIED. Note: you need OWNER permission
            on the object to read its ACL.

```

acl 操作を実行したり、ファイルをオーバーライドしようとした場合も同様です。

4

1 に答える 1

1

まず、バケットの所有者であるということは、そのバケットに保存されているオブジェクトをいつでも削除できることを意味しますが、デフォルトの ACL が上書きされた場合、オブジェクト所有者のアクセス許可がない可能性があるということです。これは、スーパーユーザーの概念がある一般的なオペレーティング システムの動作とは異なります。

開発者コンソールの [APIs & auth] -> [Credentials] に一覧表示されているプロジェクトの既存のサービス アカウントを使用して、そのコマンドを実行しようとしましたか?

それでもエラーが発生する場合は、オブジェクトが App Engine 経由でアップロードされた可能性があります。App Engine には独自のサービス アカウント ( ) があり、Developers Console に表示されるものとは異なるため、JSON API を使用してオブジェクト ACL を一覧表示する次のコードを使用して、 PythonでApp Engine アプリケーションを作成できます。<project ID>@appspot.gserviceaccount.com

#!/usr/bin/env python                                                                                                                     
import webapp2
from google.appengine.api import app_identity
from google.appengine.api import urlfetch


class MainPage(webapp2.RequestHandler):
    def get(self):
        scope = "https://www.googleapis.com/auth/devstorage.full_control"
        authorization_token, _ = app_identity.get_access_token(scope)
        acls = urlfetch.fetch(
            "https://www.googleapis.com/storage/v1/b/<bucket>/o/<object/acl",
            method=urlfetch.GET,
            headers = {"Content-Type": "application/json", "Authorization": "OAuth " + authorization_token})
        self.response.headers['Content-Type'] = 'application/json'
        self.response.write(acls.content)

application = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)
于 2015-02-02T08:13:49.627 に答える