AWS Lambda(Python)からZoom投票作成
2023/09/26
以前、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 70 |
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 |
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AD Connectorを作成してシームレスにドメイン参加する
VPN接続先のADで管理されているドメインにEC2 Windowsインスタンスか …
-
-
Cloud9でCodeWhispererを使用する
アクセス権限 Cloud9のEC2に設定するIAMロールのIAMポリシーで co …
-
-
JAWS-UG関西IoT専門支部 ✕ SORACOM UG 関西「Wio LTE + 絶対圧センサーで遊ぼう!」ワークショップにいってきた
JAWS-UG関西IoT専門支部 ✕ SORACOM UG 関西「Wio LTE …
-
-
「re:CAP ~サーバーワークス re:Invent 2018 報告会~」でre:Invent2018について思われたことを聞かせていただいた
サーバーワークスさんのre:Invent re:CAPにおじゃましました。 re …
-
-
re:Invent 徒歩記(シアトルも)
このブログは、AWS re:invent 2018 Advent Calenda …
-
-
Amazon SESでメール受信
Amazon SES(Simple Email Service)にメールドメイン …
-
-
AWS Transit Gateway Network ManagerにTransit Gatewayを登録してルートアナライザーで確認
グローバルネットワークの作成 VPC左ペインのメニュー Transit Gate …
-
-
S3オブジェクトへのリクエストをCloudTrail, Athenaで識別する(パーティショニング)
Amazon S3オブエジェクトへのリクエストをCloudTrail, Athe …
-
-
CloudWatch Internet Monitor(プレビュー)を試しました
Amazon CloudWatch Internet Monitor プレビュー …
-
-
AWS EC2 インスタンスステータスのチェックで失敗して起動しなくなり復旧
EC2のインスタンスに接続出来なくなったので、AMIから作成してElastic …