grasys blog
grasysブログ

gsutilを使用してGCSへアクセスする場合の環境設定

今回は、ローカルやオンプレミス、GCP以外からgsutilコマンドを使用してGCSへアクセスする場合の環境設定をいきたいと思います。

こんにちは、エンジニア泉水です。 冒頭で書いた通り今回は、gsutilコマンドでアクスする際の環境設定です。

1.GCSって?

説明の必要はないと思いますが、、、 GCSはGCPが提供しているオブジェクトストレージです。 Google Cloud Storage

類似サービスとしてはAWSのS3があります。

2.やること

今回はそのS3は使ったことあるけど、GCSをこれから使ってみる使ってみたいという人向けにAWSと比較しながら

・gsutilコマンドを使用してアクセスするための設定

をやっていきます。 (初期設定はたまにしかしないから実は自分の備忘録なんて言えない)

3.TRY

1 前提

前提:google cloud sdkインストール済み
もしまだの場合は、こちら

2 AWSだと?

以下のような感じでアクセキーとシークレットアクセスキーを環境変数に設定してあげればアクセスできますよね。

export AWS_ACCESS_KEY_ID=xxxxxxxxxx
export AWS_SECRET_ACCESS_KEY=xxxxxxxxxx
aws s3 ls s3://
...
...
...

3 GCPだと?

GCSもライブラリを使用したアクセスであればAWSと同様に環境変数へサービスアカウントのパスを環境変数へ設定することでアクセスできます。
サーバー間での本番環境アプリケーションの認証の設定

サービスアカウントに関してはこちら

が、gsutilコマンド使用してアクセスするためには環境変数への設定のみではダメなのです、、、

printenv | grep GOOGLE
GOOGLE_APPLICATION_CREDENTIALS=/path/service_account.json
$ gsutil ls gs://
ServiceException: 401 Anonymous caller does not have storage.buckets.list access to project xxxxxx.

この通りエラーに、、、

では、どうすればいいか?
サービスアカウント認証情報を使用して認証する必要があります。

$ gcloud auth activate-service-account --key-file service_account.json
$ gcloud auth list
                    Credentialed Accounts
ACTIVE  ACCOUNT
*       xxxxx@xxxxx.iam.gserviceaccount.com

アカウント認証を行うと、、、

$ gsutil ls -p grasys-dev gs://
gs://xxx/
gs://yyy/
gs://zzz/

アクセスできました!

終わり

ちょっとGCPの方がめんどくさいかなーと思う反面、AWSと違って環境変数への設定する数は少ないのでそこは楽かなと、、、
まぁ慣れの問題ですね!!!


株式会社grasys(グラシス)は、技術が好きで一緒に夢中になれる仲間を募集しています。

grasysは、大規模・高負荷・高集積・高密度なシステムを多く扱っているITインフラの会社です。Google Cloud、Amazon Web Services (AWS)、Microsoft Azureの最先端技術を活用してクラウドインフラやデータ分析基盤など、ITシステムの重要な基盤を設計・構築し、改善を続けながら運用しています。

お客様の課題解決をしながら技術を広げたい方、攻めのインフラ技術を習得したい方、とことん技術を追求したい方にとって素晴らしい環境が、grasysにはあります。
お気軽にご連絡ください。