Help us understand the problem. What is going on with this article?

AWS lambda でgoogle spread sheetを操作したくなったのでやってみた [その1]

概要

表題そのままなのですが、google spread sheet って、なんかGAS(Google Apps Script)で操作する。
そんな固定観念があったんですが、今回はAWS lambda (Python)で操作したくなったのでやってみました。

別にGCPだけでも完結しますが、、、AWS慣れているので使いたかった。それだけです(笑)

構成

構成はシンプルです。

Untitled (1).png

GCP側で作成した認証情報は、暗号化してAWS Secrets Managerに保持します。
lambdaのコードに認証key直書きとかはやめたほうが吉...

準備

GCP側の認証を作成する

AWSでいうところのIAMのkeyを作成する感じです。

まずはGCPのコンソールに入って適当なプロジェクトを作成し

  • APIとサービス-> ライブラリ よりAPIの有効
  • APIとサービス-> 認証情報-> サービスアカウントの作成

を行います。


APIとサービス-> ライブラリ よりAPIの有効にする

スクリーンショット 2020-10-26 16-27-22.png


APIとサービス-> 認証情報-> サービスアカウントを作成
gcp.png

サービスアカウント名をきかれます。
大事なのはサービスアカウントIDです。
他人がみてわかりやすい名前にしましょうw

gcp2.png

2.3 は省略可能なので省略。
※細かいアクセス制限とかしたい方は設定してください。

スクリーンショット 2020-10-26 14-11-33.png

これが完了すると、サービスアカウントの箇所にメールアドレスみたいのができるので編集をおします。

gcp3.png

編集の中から鍵を追加とあるので押すとjsonかP12かと選択がでてくるので、みんな大好きjsonを選択すると
ローカルにjsonがダウンロードされます。 これで認証keyの作成完了です。
(これがAWSいうcredential.jsonですね)

[注意!!]これが漏れると外部からアクセスされる可能性があるのでgithubとかに置くのはやめましょうね!

スクリーンショット 2020-10-26 14-23-05.png


更新するスプレットシートの準備

先程のサービスアカウントID(メアドっぽくなっているやつ)を共有するユーザとして設定します。

スクリーンショット 2020-10-26 15-56-10.png


AWS 側の準備

AWS Secrets Manager

keyを保管する場所を作成しましょう。 
cloudformationで自動で作成することもできますが、ここでは手で作成しています。

スクリーンショット 2020-10-26 14-34-12.png

※ちなみにsystem manager のキーストアでも同じようなkeyの保管ができますが、
 今回はAWS Secrets Managerです。

まずは枠だけ作るの シークレットの種類を選択 はその他のシークレットを選びましょう。
値は適当に入れておいてください(ここではsampla: test)と入れています。

スクリーンショット 2020-10-26 14-37-50.png

スクリーンショット 2020-10-26 14-38-34.png

それでは先程のkey(今はgoogle_key.jsonにリネームしています)をbase64に変換して
AWS cliをつかってkeyに登録していきます。
(※profileの向き先に注意してくださいw)

$ cat google_key.json | base64 > base64.json
aws secretsmanager update-secret --secret-id "/google/access_key" --secret-binary fileb://base64.json

--secret-binaryを指定することによって暗号化された状態で登録することになります。
※これを指定するとコンソールから値が見れないという利点があります。
もっとセキュリティを強化したい方はKMSを利用ください。

こんな感じでGCP側とAWS側の準備が完成です。

次回:
AWS lambda でgoogle spread sheetを操作したくなったのでやってみた (その2)

次回はlambda側の作成をしていきます!!!
では、良いAWSライフを!!

mimimi-no-sesese
普段はマネージメントしてますが、プログラミングは好きです。
hands-lab
ハンズラボは小売業特化型ITソリューション企業です。数十万に及ぶ膨大な商品マスタを扱ってきた豊富なノウハウで、お客様の現場に最適なシステムを提案・開発します。 エンジニア募集中
https://www.hands-lab.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away