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入門ガイド」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター3年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS EC2 インスタンスステータスのチェックで失敗 原因はPHP-FPMのOOM-KILLER
先週に引き続きEC2のインスタンスステータスチェックで失敗 再起動するも失敗する …
-
-
EC2 Windows インスタンス PowerShellでメタデータを見る
Linuxインスタンスならcurlコマンドで確認すればいいのですが、Window …
-
-
Cloud9でAWS CDK環境
最初ローカルに作ろうと思ったのですが、環境依存がというか、Macbookの環境で …
-
-
S3バケットにWebフォントをアップロードしてCORSを設定する
Webフォントファイルは、モジワク研究さんのマメロンを使用させていただきました。 …
-
-
Route53でドメインを新規取得してDNSレコードを設定する
Elastic IPをAWSで発行しているのですから、DNSの設定も同じようにマ …
-
-
AWS EC2 Amazon Linux にEC-CUBE3をnginx+MySql環境へインストール(手順検証中)
EC2インスタンスを作成する 少し古い記事で恐縮ですが試したい事があるのでAWS …
-
-
ヤマムギ vol.7 AWSアカウント作成 & 最初の設定ハンズオン 手順
ヤマムギとは from Mitsuhiro Yamashita 「AWSではじめ …
-
-
PyCharmにAWS CloudFormationプラグインをインストールして入力補完してみる
JetBrainsのPython統合開発環境(IDE)のPyCharmを1年ちょ …
-
-
AWSのAmazon LinuxにGitマスターサーバをインストールしてRedmineリポジトリブラウザで見る
Amazon LinuxにGitをインストールする Gitをインストールして自動 …
-
-
AWS Certificate Manager(ACM)メール検証をDNS検証の証明書に差し替えました
ブログの証明書 このブログの証明書の有効期限があと1週間です。 証明書はAWS …