0
0

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 1 year has passed since last update.

Workload Identity連携で、AWS Cloud9からPythonでGCP操作

Posted at

はじめに

AWSからGCPの操作がセキュアにできるWorkload Identity連携を、Cloud9上からPythonで試してみたので記事にしました。

まとめ

  • 認証ファイルのパスを、環境変数GOOGLE_APPLICATION_CREDENTIALSにセットする
    • 対象プロジェクトを指定するために、別途環境変数GCLOUD_PROJECTにセット
  • Cloud9から行う場合は、使用しているEC2にIAMロールを付与して使う
  • Pythonライブラリをインストールする際、ローカルにインストールするpip install -t .だとうまくいかない

参考

GCP側の手順やCloud9の設定は以下のページが詳しいです。

やったこと

GCP側

前回の記事をそのままやっています。

こちらで作られたファイルをそのまま使います。

AWS側

Cloud9設定

参考で紹介したページにやり方があります。

画面のスクショで補足しますと、Cloud9でtemporary credentialを無効にする場合は以下の順序になります。

  1. 右上の歯車マークをクリック
  2. 左ペインから"AWS Settings"を選択
  3. CredentialsをOFF

image.png

インスタンスにIAMロールをつける場合は、EC2のコンソールから[アクション]-[セキュリティ]-[IAMロールを変更]と操作します。
image.png

Cloud9に戻って、左メニューのAWSアイコンからAWS:Explorerのアイコンで、[Choose AWS Profile...]で設定できます。
image.png

image.png

仮想環境作成

今回は仮想環境を作り、その上で実行しました。
Cloud9に直で構築しても問題ないですが、後片付けがしやすいように仮想環境を使いました。

$ mkdir aws-to-gcp
$ cd aws-to-gcp

# virtualenv上で環境構築
$ virtualenv a2genv
$ source a2genv/bin/activate

ライブラリインストール

今回はGCSを操作するので、必要なライブラリをインストール。
ただpip install -t .だとうまくいきませんでした。

# google-cloud-storageをインストール
# pip install -t . だと うまくインストールされないようで、protobufが使えない
(a2genv) $ pip install google-cloud-storage

環境変数設定

GCP側で作ったファイルをアップロードします。
アップロードしたファイルまでのパスを、環境変数GOOGLE_APPLICATION_CREDENTIALSにセットします。
環境変数を使う話は公式より

操作するGCPプロジェクトのIDを、環境変数GCLOUD_PROJECTにセットします。

# 環境変数設定
(a2genv) $ export GOOGLE_APPLICATION_CREDENTIALS=`pwd`/clientLibraryConfig-awstogcp.json

# 対象のGCP上のプロジェクトを指定
(a2genv) $ export GCLOUD_PROJECT=hogehoge-pj

# 環境変数確認
(a2genv) $ printenv GOOGLE_APPLICATION_CREDENTIALS
(a2genv) $ printenv GCLOUD_PROJECT

これで準備は完了です。

Python実行

後はPythonから操作するだけです。
以下のコマンドで、GCSのバケット一覧が取得できます。

(a2genv) $ python
>>> from google.cloud import storage
>>> storage_client = storage.Client()
>>> list(storage_client.list_buckets())

片づけ

仮想環境下で行ったので、ディレクトリごと削除すれば片付け完了です。

(a2genv) $ deactivate
$ cd ..
$ rm -rf aws-to-gcp/

おわりに

今回はWorkload Identity連携の成功事例を記事にしました。
使い方が簡単でセキュアなので、連携する際はこの方法を積極利用していきたいと思います。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?