AWS Lambda(Python)からZoom投票作成
2020/05/13
以前、Zoomの投票(アンケート)をAPI経由で作成するというブログで書きましたが、APIリクエスト1回につき、1投票のみ作成できます。
ですが、1つのミーティングに複数の投票を作ることはよくあります。
そして、APIを直接ではなく、Webフォームから作成できるようにしました。
アーキテクチャはこんな感じです。
フィールドに入力した、Json形式の投票データを、ミーティングIDを指定して実行することで、
Zoomに投票を作成します。
以下、Lambdaのコードです。
* APIリクエストは、requestsを使っています。
* ZoomのトークンはSecrets Mangerに保存しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
import logging import util import os import json import requests import traceback import boto3 import base64 from botocore.exceptions import ClientError secret_name = os.environ.get('SECRET_NAME') level = os.environ.get('LOG_LEVEL', 'ERROR') logger = logging.getLogger() logger.setLevel(util.logger_level(level)) def get_secret(): session = boto3.session.Session() client = session.client( service_name='secretsmanager' ) try: get_secret_value_response = client.get_secret_value( SecretId=secret_name ) except ClientError as e: raise e else: if 'SecretString' in get_secret_value_response: secret = get_secret_value_response['SecretString'] else: secret = base64.b64decode(get_secret_value_response['SecretBinary']) return secret def lambda_handler(event, context): logger.debug(event) try: secret = json.loads(get_secret()) mtg_id = event['mtgid'].replace('-', '').replace(' ', '') polls = json.loads(event['note'].replace('\n', '')) url = 'https://api.zoom.us/v2/meetings/{meetingId}/polls'.format( meetingId=mtg_id ) headers = { 'Authorization': 'Bearer {token}'.format( token=secret['token'] ), 'Accept': 'application/json, application/xml', 'Content-Type': 'application/json' } for poll in polls['polls']: response = requests.post( url, data=json.dumps(poll), headers=headers ) logger.info(response.text) except Exception as e: logger.error(traceback.format_exc()) raise e |
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター3年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS Transfer Family S3向けのSFTP対応サーバー
S3バケットは作成済です。 IAMロールの作成 [crayon-629198e0 …
-
-
「re:CAP ~サーバーワークス re:Invent 2018 報告会~」でre:Invent2018について思われたことを聞かせていただいた
サーバーワークスさんのre:Invent re:CAPにおじゃましました。 re …
-
-
IAMユーザーにパスワード変更とMFA設定を許可する
組織管理のIAMで、ユーザーにMFAを使ってサインインしない限り操作は許可しない …
-
-
特定のIAMロールをLambda(Python)で削除する
やりたいこと 特定アカウントの特定の名前が含まれるIAMロールをまとめて削除した …
-
-
EC2 プレイスメントグループを試してみました
やったことないのでやってみたやつです。 プレイスメントグループの作成 まず、EC …
-
-
AWS Certificate Manager証明書とAmazon Route 53でAmazon API GatewayのAPIのカスタムドメイン名前解決する
AWS Certificate ManagerとAmazon Route 53と …
-
-
DynamoDBテーブル項目をS3にエクスポート
DynamoDBテーブルを一時テーブルとして使っていて、毎回使い捨てしてます。 …
-
-
Pandocサーバーのコンテナイメージを作成する
マークダウンからEPUBへの変換をAWS Batchで行いたく、ECRにアップロ …
-
-
AWS Control TowerにOUを追加する
AWS Control TowerにOUを追加する 管理アカウントでAWS Co …
-
-
共有AMIのコピー時にエラー「You do not have permission to access the storage of this ami」
他アカウントから共有されたAMIをコピーする際に、「You do not hav …