LoginSignup
13
5

More than 3 years have passed since last update.

コンテナからGCS(Google Cloud Storage)にアクセスする方法

Last updated at Posted at 2019-06-13

概要

AWS Batchで起動したコンテナ上からGCS(Google Cloud Storage)にアクセスするためにやったことを書きます。
AWS Batchじゃなくても使えると思います。

仕組みは、AWS Parameter StoreにGCPのサービスアカウントキーをKMSで暗号化した状態で格納しておき、
コンテナ起動時にParameter Storeからdecryptして、gcloud authコマンドで認証する流れです。
それでは行ってみましょう。

事前準備

  • GCPでGCSにアクセス可能なサービスアカウントを作成、ダウンロードしておく。
  • gcloudコマンドがインストールされたコンテナを用意する。

手順

AWS KMSでキーを作成

KMSでParameter Storeで暗号化するために必要なキーを作成します。

# キーの作成
aws kms create-key --description <キーの説明> --region ap-northeast-1

# キーのエリアスを設定
aws kms create-alias --alias-name alias/<キーの名前> --target-key-id <キー作成時に出力されたKeyId>

Parameter Storeでサービスアカウントを格納

上記で作成したKMSのkey idを指定して、暗号化した状態でサービスアカウントキーをParameter Storeに格納します。

# パラメーターストアの作成
aws ssm put-parameter \
    --region ap-northeast-1 \
    --name <パラメーターの名前> \
    --type SecureString \
    --key-id alias/<キーの名前> \
    --value "$(cat <サービスアカウントキーのファイル>)"

IAMの権限付与

(AWS Batchを利用していれば)ジョブロールに割り当てるIAM Roleに以下のPolicyを付与します。

  • AmazonSSMFullAccess
  • 以下のインラインポリシーを作成し、割り当て
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": [
                "<KMSのARNを入れてください>"
            ]
        }
    ]
}

認証処理

今回はこちらの記事を参考に、DockerのENTRYPOINTで初期化用のスクリプト(fetch_and_run.sh)を実行させます。この初期化用スクリプトの中で gcloud auth を実行させました。

実際の認証処理は以下のようにしました。
aws ssm get-parameters で取得したサービスアカウントを /tmp/credentials.json に出力し、それを使って gcloud auth で認証しています。

# fetch_and_run.sh 
aws ssm get-parameters --name ${SSM_PARAMETER_NAME} --with-decryption --region ap-northeast-1 --output json | jq -r '.Parameters[].Value' > /tmp/credentials.json
gcloud auth activate-service-account --key-file=/tmp/credentials.json

まとめ

Parameter Storeって便利。

13
5
1

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
13
5