APIのアクセストークンなど、セキュリティの観点からソースコードには直接記述せずに設定値として別管理しておきたいパラメータがあると思います。
今回はGCPのCloud Functionsで設定値を利用する方法を紹介します。
Cloud Functionsで設定値を利用する方法
Cloud Functionsで設定値を利用するためには環境変数を利用することになります。
今回は以前紹介したCloud Storageにファイルがアップロードされた際にLINE通知するCloud Functionsで環境変数の利用方法について説明します。
ただ、流れとしてはCloud StorageやLINE通知を理解している必要はないのでご安心ください。
まずは以下ボタンからCloud Functionsのページを開きます。
環境変数を設定したい関数を選択し、編集ボタンを押します。
ランタイム、ビルド、接続の設定を選択し、ランタイムタブのランタイム環境変数に、追加したい環境変数を追加します。
コードタブを選択し、main.pyに以下のように記述します。
import os
LINE_TOKEN = os.environ.get('LINE_TOKEN')
print(f"LINE_TOKEN : {LINE_TOKEN }")
設定した環境変数の名前を指定することで、環境変数の値を取得することができます。
今回作成したコード全文はこちらです。
import os
import functions_framework
import requests
from google.cloud import storage
# Triggered by a change in a storage bucket
@functions_framework.cloud_event
def gcs_to_line(cloud_event):
data = cloud_event.data
bucket = data["bucket"]
file_name = data["name"]
print(f"Bucket: {bucket}")
print(f"File: {file_name}")
# GCS connect
client = storage.Client()
bucket = client.get_bucket(bucket)
# GCS file download
blob = bucket.blob(file_name)
blob.download_to_filename(filename=file_name)
# LINE params
LINE_TOKEN = os.environ.get('LINE_TOKEN')
headers = {
"Authorization": f"Bearer {LINE_TOKEN}",
}
files = {"message": (None, file_name), "imageFile": open(file_name, "rb")}
# LINE send
requests.post("https://notify-api.line.me/api/notify", headers=headers, files=files)
functions-framework==3.*
requests==2.28.1
requests-file==1.5.1
requests-oauthlib==1.3.1
requests-toolbelt==0.9.1
google-cloud-storage==2.5.0
上記Cloud Functionsを準備した上でCloud Storageに画像をアップロードしたところ、無事環境変数を利用してLINE通知できていることが確認できました。
まとめ
今回はGCP Cloud Functionsで設定値(環境変数)を利用する方法について紹介しました。
ご意見やご質問がありましたらお気軽によろしくお願いします。コメントお待ちしております!