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
関連記事
-
-
IAMユーザーのマネジメントコンソールログインパスワードを変更してDynamoDBに記録するLambda(Python)
やりたいこと IAMユーザーのマネジメントコンソールへのサインインパスワードを動 …
-
-
AWS Organizationsで組織全体のAWS CloudTrailを有効にしました
Organizationsのサービスメニューから、CloudTrailを選択して …
-
-
AWS Control TowerにOUを追加する
AWS Control TowerにOUを追加する 管理アカウントでAWS Co …
-
-
Amazon Location Service入門ワークショップ-ジオコーディング
ジオコーディングにより住所を緯度経度に変換したり、逆に緯度経度から住所を求めたり …
-
-
AWS APIリクエストにPostmanで署名を作成する
新年明けましておめでとうございます! 署名バージョン4 「AWSはマネジメントコ …
-
-
EC2 Image BuilderでRocket.ChatのAMIを作って起動テンプレートを更新しました
EC2 Image Builderの練習をしようと思い、Rocket.Chatの …
-
-
AWS Transit Gateway Network ManagerにTransit Gatewayを登録してルートアナライザーで確認
グローバルネットワークの作成 VPC左ペインのメニュー Transit Gate …
-
-
S3 VPCエンドポイント設定前と設定後を確認
S3のVPCエンドポイントを設定した際に、S3バケットのAPIエンドポイントへの …
-
-
ads.txtをS3に配置してCloudFrontで設定する
ads.txtのダウンロード ads.txt設置してねってメールが来てました。 …
-
-
AWS Storage Gatewayボリュームゲートウェイを作成してWindowsから使用
ボリュームゲートウェイの作成 Storage Gateway作成メニューからボリ …