自動化AWSラムダでペーパークラフトを自動化する
12299 ワード
写真でNana Smirnova on Unsplash
TLR
The インポート両方
ラムダインフラストラクチャ ビルド( w/docker実行)
アバウトミー
私の名前はヤコブです、そして、私はdevopエンジニアです.私はよく(料理の洗濯機、小売従業員、キャンプカウンセラー、軍のメディック、感染症の研究者)多くの他のものであったが、今私は悪魔のエンジニアです.私は正式なCS教育を受けませんでしたが、私は独学ではありません.ソフトウェア工学コミュニティの中での情報共有の文化は皆にとって重要です.それで、新しいことを学ぶとき、私は初めて学ぶ人の目を通してそれらを文書化します.ハッピーラーニング!そして、見知らぬ人でないでください.
ヶ月前に私は引き起こしたquite a stir それによって、私の地元の学区(アメリカ合衆国で3番目に大きい)は、オマロン海峡の真ん中で彼らの学校ダッシュボードのcovid - 19のケースを支持していました.
要約:グラフとグラフの凡例を変更せずに表示されたケースを変更しました.これは、伝説に基づいて、そこにされている必要があります行方不明の数千をもたらした.それは、彼らの側の非常に悪い仕事でした.
私が物語を話して、学校地区の言い訳に反するのを手伝った1つのツールは、インターネットArchiveのWayback Machine .
あなたがWaybackマシンを聞いていないならば、それをチェックしに行ってください.それは本質的にWebページのタイムカプセルであり、それは私が地区のグラフは、彼らが言ったことを示していないことを証明することができました.それは私にとってとても役に立ちました.
それで、これは何をしなければなりませんか?さて、説明責任の精神で、AWS - CDKと一緒にプレイしたいのですが、インターネットアーカイブにWebページのアーカイブを自動化するために展開できるスタックを作りました.Serverlessラムダ関数を使用すると、それはとても費用対効果の高いので、基本的に無料です(1日あたり100万のアーカイブリクエストを行う必要があるでしょう、毎日を超えてください.」AWS Free Tier .
あなたは、レポを見つけることができますhere あなた自身の使用のために見えるか、それをクローン化したいならば、私は下でジューシーなビットも概説します、しかし、簡単に:
PythonとAWS - CDKを使用して、私は、リモートリストPythonのライブラリを使用して、URLのリストのアーカイブを要求するラムダ関数と、ラムダをトリガーするEventBridgeイベントから構成されるCloudFormationスタックを作成しました.CDKはまた、このすべてが機能するのに必要であるすべてのアクセサリー役割と許可セットを作ります.
以下の関数コード(以下)をディレクトリに置きます
スキップする
それから、我々は繰り返します
応答を待つ必要がない間、私はそれ自身の料金限界に良い方法と思います.あなたが本当にしたいならば、あなたは1秒にタイマーを下げることができたと思います.
CDKスタックは
両方とも
スタックには次の2つがあります.
この関数は
これはどこにも参照されていないので、名前を付けませんが、このセクションではラムダをトリガーするEventBridge規則を作成します.ここには二つの重要なことしかありません.
スタックは、パッケージ化されたラムダ(dockerが動作していると仮定する)を含み、以下のコマンドで展開されます.
スタックまたはアプリケーションへの変更は、再構築して、配備するだけである必要があります、そして、古い計画は変更と取り替えられます.
さて、あなたが考えるWebページはいくつかの監督を使用して、それらをアーカイブし始めることを理解してください.あなたが特定の時間内にそこにコンテンツの外部レコードが果実を負担するか分からない!
TLR
The
aws_lambda_python_alpha
モジュールaws_lambda_<language>_alpha
モジュールは、書き込み、ビルド、パッケージング、およびレスレスCDKでServerless関数を展開するのに非常に素晴らしいです.import aws_cdk.aws_lambda as lambda_
import aws_cdk.aws_lambda_python_alpha as lambda_python
alpha
モジュールcdk synth --no-staging
cdk deploy
CDKは残りの面倒を見るでしょう.アバウトミー
私の名前はヤコブです、そして、私はdevopエンジニアです.私はよく(料理の洗濯機、小売従業員、キャンプカウンセラー、軍のメディック、感染症の研究者)多くの他のものであったが、今私は悪魔のエンジニアです.私は正式なCS教育を受けませんでしたが、私は独学ではありません.ソフトウェア工学コミュニティの中での情報共有の文化は皆にとって重要です.それで、新しいことを学ぶとき、私は初めて学ぶ人の目を通してそれらを文書化します.ハッピーラーニング!そして、見知らぬ人でないでください.
問題
ヶ月前に私は引き起こしたquite a stir それによって、私の地元の学区(アメリカ合衆国で3番目に大きい)は、オマロン海峡の真ん中で彼らの学校ダッシュボードのcovid - 19のケースを支持していました.
要約:グラフとグラフの凡例を変更せずに表示されたケースを変更しました.これは、伝説に基づいて、そこにされている必要があります行方不明の数千をもたらした.それは、彼らの側の非常に悪い仕事でした.
私が物語を話して、学校地区の言い訳に反するのを手伝った1つのツールは、インターネットArchiveのWayback Machine .
解決策
あなたがWaybackマシンを聞いていないならば、それをチェックしに行ってください.それは本質的にWebページのタイムカプセルであり、それは私が地区のグラフは、彼らが言ったことを示していないことを証明することができました.それは私にとってとても役に立ちました.
それで、これは何をしなければなりませんか?さて、説明責任の精神で、AWS - CDKと一緒にプレイしたいのですが、インターネットアーカイブにWebページのアーカイブを自動化するために展開できるスタックを作りました.Serverlessラムダ関数を使用すると、それはとても費用対効果の高いので、基本的に無料です(1日あたり100万のアーカイブリクエストを行う必要があるでしょう、毎日を超えてください.」AWS Free Tier .
あなたは、レポを見つけることができますhere あなた自身の使用のために見えるか、それをクローン化したいならば、私は下でジューシーなビットも概説します、しかし、簡単に:
PythonとAWS - CDKを使用して、私は、リモートリストPythonのライブラリを使用して、URLのリストのアーカイブを要求するラムダ関数と、ラムダをトリガーするEventBridgeイベントから構成されるCloudFormationスタックを作成しました.CDKはまた、このすべてが機能するのに必要であるすべてのアクセサリー役割と許可セットを作ります.
機能
以下の関数コード(以下)をディレクトリに置きます
requirements.txt
ファイル.CDK(Dockerの助けを借りて)はコンテナを作り、要件をインストールします.txtファイルを、そのアーティファクトをAWSに展開します.それはかなりきちんとしている. 1 from waybackpy import WaybackMachineSaveAPI
2 import signal
3 import logging
4
5 logger = logging.getLogger()
6 logger.setLevel(logging.INFO)
7
8 user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:40.0) Gecko/20100101 Firefox/40.0"
9 url_list = [
10 "https://api.cps.edu/health/help",
11 ]
12
13 def handler(sigum, frame):
14 raise Exception("Request Sent")
15
16 def lambda_handler(event, context):
17 signal.signal(signal.SIGALRM, handler)
18 for url in url_list:
19 signal.alarm(5) # resets alarm
20 try:
21 save_api = WaybackMachineSaveAPI(url, user_agent)
22 save_api.save()
23 except Exception:
24 logger.info("Request Sent: {}".format(url))
25 continue
トップのインポートとログでは、Wayback APIのためのUserRoundエージェントと同様に設定されます.次に、保存するすべてのURLのリストがあります.スキップする
handler
関数は、lambda_handler
関数.それが最初にすることline 17
はsignal
ライブラリは、信号アラームを聞いて、呼び出してhandler
関数は、アラームが0に達した場合に関数を返します.これは、アーカイブが行われた応答のために>30秒を待たなければならないだけで、Waybackマシンでリクエストをスローできるようにするためです.それから、我々は繰り返します
url_list
毎秒5秒に信号アラームをリセットし、URLを要求する.一方、信号アラームがカウントダウンしているときに要求された例外が発生すると、要求された例外が発生すると、要求され、アラームをリセットし、URLを要求する次の反復に移動します.応答を待つ必要がない間、私はそれ自身の料金限界に良い方法と思います.あなたが本当にしたいならば、あなたは1秒にタイマーを下げることができたと思います.
スタック
CDKスタックは
/wayback/wayback_stack.py
.両方とも
aws_lambda
and aws_lambda_python_alpha
モジュールがインポートされ、aws_lambda_python_alpha
独自にインポートされます.それは重要です.スタックには次の2つがあります.
ウェーブバック関数
この関数は
aws_lambda_python_alpha
モジュールです.の代わりにaws_lambda
それは自動的にパッケージされ、ローカルテストを許可するので、我々はそれに興味を持っている必要があります.16 wayback_function = lambda_python.PythonFunction(
17 self,
18 "wayback",
19 function_name="WaybackArchiver",
20 runtime=lambda_.Runtime.PYTHON_3_9,
21 entry="./wayback_app",
22 index="app.py",
23 handler="lambda_handler",
24 memory_size=128,
25 timeout=Duration.seconds(300),
26 )
パラメータのほとんどは文脈で見ると意味がありますがentry=
on line 21
はCDKでパッケージ化されるディレクトリです.があるならばrequirements.txt
このディレクトリにあるすべてのライブラリとモジュールがインストールされます.index=
and handler=
on lines 22-23
ファイルと関数をCDKに教えますentry
ディレクトリは実行時に出発点となります.イベントルール
これはどこにも参照されていないので、名前を付けませんが、このセクションではラムダをトリガーするEventBridge規則を作成します.ここには二つの重要なことしかありません.
schedule
and targets
.28 event.Rule(self, "WaybackRule",
29 rule_name="WaybackRule",
30 schedule=event.Schedule.cron(
31 minute="0",
32 hour="9",
33 ),
34 targets=[
35 targets.LambdaFunction(wayback_function),
36 ],
37 )
line 30
cdkのcron表記のバージョンを使用することを示します.タイムゾーンはUTCで、ここでの全ては文字列で表されます.また、デフォルトでは指定されていないパラメータ*
. したがって、例えばday=
上記は月のすべての/任意の日を意味します.line 34
このイベントが発生したときに何をしたいかを指定できます.この場合、それはwayback_function
上記.ビルドと配備
スタックは、パッケージ化されたラムダ(dockerが動作していると仮定する)を含み、以下のコマンドで展開されます.
cdk synth --no-staging
cdk deploy
一旦作成されると、Webページのリストをアーカイブする機能があります.スタックまたはアプリケーションへの変更は、再構築して、配備するだけである必要があります、そして、古い計画は変更と取り替えられます.
さて、あなたが考えるWebページはいくつかの監督を使用して、それらをアーカイブし始めることを理解してください.あなたが特定の時間内にそこにコンテンツの外部レコードが果実を負担するか分からない!
Reference
この問題について(自動化AWSラムダでペーパークラフトを自動化する), 我々は、より多くの情報をここで見つけました https://dev.to/aws-builders/automate-a-papertrail-with-aws-lambda-1c9テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol