[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}}の部分はながーい数字が入っているはずです。
<?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 のような値です。
追加した結果、以下のようになります。
<?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のファイルを扱う記事