BETA

雑にGCSで納品物の納品用ストレージ用意したかったメモ

投稿日:2020-06-30
最終更新:2020-06-30

やりたかったこと

組織をまたいだ、Aさんがファイルをアップロード → Bさんがダウンロードみたいな運用をノンコーディングで実現したかった。ファイルの削除は管理者だけができると嬉しい。

免責事項

暫定運用の急場しのぎなのでアクセス制御がガバいです。
やる気があればフロントエンドとFaaSを実装してPreSigned URLで処理するのが多分良い。
組織か個人でgmailが利用できるのが前提。可能であればゲストアカウント払い出してもok。

操作手順

どこで実行してもいいけどCloud Shellから叩くと面倒がない。
プロジェクトはあらかじめ作っとく。

バケット作成

仮にgs://gabagaba-bucketとしてバケット作成しとく

PROJECT_NAME=gabagaba-project  
BUCKET_NAME=gs://gabagaba-bucket  

gsutil mb -p ${PROJECT_NAME}  -l asia  ${BUCKET_NAME}  

IAMで読み取り権限を付与

バケットにアップロードされたファイルをダウンロード可能にする。
組織や個人でgsuiteやgmailを運用してるなら、domainやuserで付与対象を絞り込む事を推奨。

BUCKET_NAME=gs://gabagaba-bucket  

# 全てのユーザ(非推奨)  
gsutil iam ch allUsers:objectViewer ${BUCKET_NAME}  

# gsuiteドメイン  
gsutil iam ch domain:gabagaba.com:objectViewer ${BUCKET_NAME}  

# googleアカウント  
gsutil iam ch user:[email protected]:objectViewer ${BUCKET_NAME}  

IAMで書き込み権限を付与

バケットにアップロードを可能にする。
組織や個人でgsuiteやgmailを運用してるなら、domainやuserで付与対象を絞り込む事を強く推奨。

BUCKET_NAME=gs://gabagaba-bucket  

# 全てのユーザ(非推奨)  
gsutil iam ch allUsers:objectCreator ${BUCKET_NAME}  

# gsuiteドメイン  
gsutil iam ch domain:gabagaba.com:objectCreator ${BUCKET_NAME}  

# googleアカウント  
gsutil iam ch user:[email protected]:objectCreator ${BUCKET_NAME}  

つこてみる

アップロード

gsutilで直接アップロードするか↓のGCS管理画面からアップロードができる(要gmailログイン)

https://console.cloud.google.com/storage/browser/${BUCKET_NAME}  

uploadできるけど、ちゃんと削除は不可能になってる。

ダウンロード

アップロードされたファイルは↓の公開リンクから直接ダウンロード可能。

https://storage.googleapis.com/${BUCKET_NAME}/${FILE_NAME}  

所感

できればgsuite導入して欲しいなと思いました

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

okd.shのTechのフリしたポエム

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう