29
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GAEでGCSのファイルを扱う

Last updated at Posted at 2013-11-17

[Google Cloud Platform] (https://cloud.google.com/?hl=ja) の中でファイルを扱う位置にいるのが Google Cloud Storage (以下GCS) です。

この記事では、同じく [Google Cloud Platform] (https://cloud.google.com/?hl=ja) に属する [Google Appengine (以下GAE)] ("https://developers.google.com/appengine/") からGCSのファイルを扱うための設定について書きます。

Cloud Console Projectの作成

GAEのProjectを作成すると、Cloud Console Projectも自動で生成されます。
GAEのProjectを作った後に Cloud Console にアクセスすれば、GAE AppIdと同じ名前のProjectが作られているはずです。

Billing設定

GCSを利用するためにBilling設定が必要です。
Cloud Console ProjectのMenuからBillingを選択し、クレジットカードを設定を行います。

GCS APIのStatusをONにする

GCSを使うためには、Cloud Console ProjectのGCS API StatusをONにします。
Project Menuの中から以下の階層に入って、Google Cloud Storageを探して、ONにします。

APIs & auth → APIs

MenuにCloud Storageが増えれば、OKです。

Bucketの作成

BucketとはGCSでTopに位置するDirectoryのような存在です。
Bucketの作成は、Cloud Consoleの
Bucketの名前は世界でUniqueである必要があり、他の人が取得しているBucket名は取得することができません。
そのため、develop,stagingなどの複数環境を作ろうと思っている場合は、xxx-devのような形で名前を付ければ、分かりやすいです。

ACLの設定

GCSは アクセス制御 を行うことが出来ます。
DefaultではGAEからの操作が許可されていないので、追加する必要があります。
色々と細かく設定することも出来ますが、自分のGAEには全権限を与えることとします。

gsutil install

ACLを設定するためには、専用のCommand Line Toolが必要になります。
それが gsutil です。
installはDownloadして、Pathを通すだけです。

ACLの設定を追加する

ACLの取得

gsutilを利用して、ACLの取得を行います。

gsutil acl get {{your bucket name}} > acl.xml

{{your bucket name}}のところには、自分のBucket名を指定してください。
例えばBucket名=sampleの場合は以下です。

gsutil acl get sample > acl.xml

これで以下のようなファイルが取得できます。
{{ID}}の部分はながーい数字が入っているはずです。

acl.xml
<?xml version="1.0" ?>
<AccessControlList>
    <Owner>
        <ID>
            {{ID}}
        </ID>
    </Owner>
    <Entries>
        <Entry>
            <Scope type="GroupById">
                <ID>
                    {{ID}}
                </ID>
            </Scope>
            <Permission>
                FULL_CONTROL
            </Permission>
        </Entry>
        <Entry>
            <Scope type="GroupById">
                <ID>
                    {{ID}}
                </ID>
            </Scope>
            <Permission>
                FULL_CONTROL
            </Permission>
        </Entry>
        <Entry>
            <Scope type="GroupById">
                <ID>
                    {{ID}}
                </ID>
            </Scope>
            <Permission>
                READ
            </Permission>
        </Entry>
    </Entries>
</AccessControlList>

GAEのACLを追加

このファイルに以下のようなGAEの設定を足します。

<Entry>
    <Scope type="UserByEmail">
        <EmailAddress>
            {{your appengine server account name}}
        </EmailAddress>
    </Scope>
    <Permission>
        FULL_CONTROL
    </Permission>
</Entry>

{{your appengine server account name}}に指定する値は、GAE Consoleから見ることができます。

Application Settings → Service Account Nameにあります。
example@appspot.gserviceaccount.com のような値です。

追加した結果、以下のようになります。

acl.xml
<?xml version="1.0" ?>
<AccessControlList>
    <Owner>
        <ID>
            {{ID}}
        </ID>
    </Owner>
    <Entries>
        <Entry>
            <Scope type="GroupById">
                <ID>
                    {{ID}}
                </ID>
            </Scope>
            <Permission>
                FULL_CONTROL
            </Permission>
        </Entry>
        <Entry>
            <Scope type="GroupById">
                <ID>
                    {{ID}}
                </ID>
            </Scope>
            <Permission>
                FULL_CONTROL
            </Permission>
        </Entry>
        <Entry>
            <Scope type="GroupById">
                <ID>
                    {{ID}}
                </ID>
            </Scope>
            <Permission>
                READ
            </Permission>
        </Entry>
        <Entry>
            <Scope type="UserByEmail">
                <EmailAddress>
                    {{your appengine server account name}}
                </EmailAddress>
            </Scope>
            <Permission>
                FULL_CONTROL
            </Permission>
        </Entry>
    </Entries>
</AccessControlList>

ACL設定をUpload

gsutilを使ってGAEの設定を追加したACLを適用します。

gsutil acl set acl.xml {{your bucket name}}

これでGAEからGCSを扱うための設定は終了です。

#GAEからGCSのファイルを扱う記事

29
27
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?