- 1. アプリ用EC2周りの構築でやったこと(2) AutoScalingGroupの起動テンプレートVer設定
- 2. アプリ用EC2周りの構築でやったこと(1) Backup先のGolden image作成
- 3. CloudWatchLogsで取得したログを加工してEFSに格納するLambda作ってみた
- 4. LambdaのSecurityGroupが削除できなくて困った話
- 5. AWS LambdaでPython基礎~Amazon S3とAmazon Translateを利用する
- 6. API Gateway – Lambda構成でのアクセス制御方法 メモ
- 7. Webサイトのメンテナンス情報を定期的にslack送信する
- 8. Lambdaでindex.handler is undefined or not exportedが出た時の対処法
- 9. AWS LambdaでPython基礎
- 10. AWS Lambda function URLsを手軽に実行
- 11. Firebase Authenticationを使ってAPI Gatewayに認証機能を付与する
- 12. Nuxt SSR を AWS Lambdaにデプロイする方法 (Typescript)
- 13. リソースベースポリシーで Lambda function URLs のアクセスを制御する
- 14. serverlessFWにこんにちは serverlessでローカル上でAWS Lambdaを起動・呼び出してみる
- 15. AWS Lambda Function URLs で API Gateway 設定なしで直接呼び出してみる
- 16. LambdaFunctionURLsを使って30s越えのリクエストを検証する
- 17. AWS Lambda 同時実行数、エイリアス、環境変数とか実際の現場で使える機能を勉強してみる
- 18. IoT リアルタイムデータを Lambda タンブリングウィンドウで集計してみた その2 Lambda 編
- 19. 【Python】ビットコイン自動売買BotをAWS Lambdaで動かす
- 20. IoT リアルタイムデータを Lambda タンブリングウィンドウで集計してみた その1 IoT Core 準備編
アプリ用EC2周りの構築でやったこと(2) AutoScalingGroupの起動テンプレートVer設定
[「アプリ用EC2の構築でやったこと(1) backup先のGolden image作成」](https://qiita.com/nsaito9628/items/bcb17830d4f547816896)の続きになります
前回同様にVPCまわり、セキュリティ、EC2、ユーザーアプリの話はありません
## 記事の内容
今回の記事では以下二つのLambda関数を説明します
* CloudformationでdeployしたAutoScalingGroupの起動テンプレートバージョンをLatestに変更する
* DLMの日次Backupで本番用AMIが更新されたら起動テンプレートのAMI Idも更新する下図の赤枠部分に相当します
前回の続きということで図中ではBackup先リージョンでの操作を説明してますが普段は東京で同じ仕組みが動いています
samでbuildとdeployをしていますが記事中では説明しません
![TP ver update.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56
アプリ用EC2周りの構築でやったこと(1) Backup先のGolden image作成
最近仕事でEC2を使ってユーザー部門向けWeb Serverを準備する機会がありました
直接運用に関わる立場ではないので、不具合が起きた場合にlog見てもらいつつも基本はstackのdeleteとdeploy(あとはaws lambda invoke)くらいで対応できるようにIaC化前提で構築しました
運用を考えたServer構築経験がないため調べることが多々あり印象に残った点を数回に分けて記録に残したいと思います
尚、VPCまわり、セキュリティ、EC2、ユーザーアプリの話はありません
[(お試しで初投稿した前回も本件の関連記事となります)](https://qiita.com/nsaito9628/items/62d82e534a34be2d5d37?utm_campaign=post_article&utm_medium=twitter&utm_source=twitter_share)
## 全体構成
今回詳細説明はしませんが投稿の背景となる全体構成について最初に説明します
通常は東京リージョンのEC2上でユーザー部門のアプリが動いています
EC2は開発用
CloudWatchLogsで取得したログを加工してEFSに格納するLambda作ってみた
# はじめに
日次でCloudWatchLogsからログを取得し、加工してEFSに格納する独自スクリプトを動かしてた。
だが以下の点でイケてないスクリプトでたちまち処理が失敗していた。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/187693/0257c3e3-e6d1-c1f0-f021-c173d2ddf097.png)
図1:既存構成:::note alert
こんな感じ
・サービス利用増により、ログ量が莫大し処理が追いつかずにMaintenanceWindowsの**上限値5時間**をオーバしてしまう
・古き良き(?)シェル芸でログを加工しておりコードは煩雑化・処理は非効率で処理が行われてる
:::## 実装方式
上記を解決するにはスクリプトを改修したり、そもそものサーバスペックを上げたりするといった流れになるがログ量は増える一方であったり、この処理のためにスペック上げるのは~~贅沢・贅肉すぎるし~~もったいないという形で以下で実装してみた
![image
LambdaのSecurityGroupが削除できなくて困った話
# はじめに
AWSの運用として、「このLambda使わなくなったから削除してー」と言われ、
リソースの削除後に、使われなくなったSecurityGroup(以下SG)も削除する。
というのはよくある運用かと思います。その際に、SGが削除できない、正確にはLambdaのENIが自動で削除されなくて困った
という話になります。# なにが起きたか
① VPC内のLambdaを削除② Lambdaの実行ロールを削除
③ LambdaのSGを削除するために、
念の為、削除対象のSGがネットワーク・インターフェースにアタッチされていないか確認。
→あれ、まだ使われてるな…(削除したLambdaのENIが削除されていない)
時間かかってるだけかな、、明日になって確認してみるか。。
→翌日、まだアタッチされている。SGの削除を試みるも、もちろんネットワーク・インターフェースにアタッチされているため削除できない旨のエラーがでる。# 原因
EC2などと同様に、Lambdaも削除後、使用していたENIも自動的に削除されるはずだが、
その際に、Lambdaの実行ロールを使用しているため、E
AWS LambdaでPython基礎~Amazon S3とAmazon Translateを利用する
2022/4/6(水)に行われたAWSセミナー「Pythonの基礎から学ぶ!サーバーレス開発はじめの一歩」で構築したサーバレスアーキテクチャ環境の復習。
# 構成図
AWS Lambdaを起動し、S3バケットにアップロードした英語のテキストを、翻訳して返す簡易アプリケーションをPyhonで開発する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/b97c0559-a875-582e-111c-fd8f551440a1.png)# 0.前提
[「AWS Cloud9でPython基礎~Amazon S3とAmazon Translateを利用する」](https://qiita.com/emiki/items/b95fad815d9f8e360dd0)で作成した s3 バケットが存在していること。
[「AWS Cloud9でPython基礎~Amazon S3とAmazon Translateを利用する」](https://qiita.com/emiki/items/
API Gateway – Lambda構成でのアクセス制御方法 メモ
* API Gateway – Lambda構成のサーバーレスアプリケーションにおけるアクセス制御方法についてメモする。
## IAMアクセス権限パターン
![api_gc_iam.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586535/a867d963-8b8f-3c27-766b-78ce76ca6b24.png)
1. IAM Credential sigv4 を作成し、sigv4を含めてAPIリクエスト
2. sigv4の権限を検証する。
3. 問題ない場合はLambdaをコールする。## Amazon Cognito UserPoolを利用する
![api_gc_cognito.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586535/8784ed12-c51e-f44c-e6dd-a79f450633ab.png)
1. ユーザーサインアップ(トークン取得)する。
2. トークンを
Webサイトのメンテナンス情報を定期的にslack送信する
Webサイト情報を取得して「XXXX」というワードが含まれる場合は、Slackへ通知を行うという仕組みを作成しました。
Webサイトのメンテナンス情報などを取得できる他、推しの情報や新着情報の通知の自動化なども可能かと思います。:::note alert
スクレイピングは、利用方法によっては、法律で罰せられる可能性もございます。
対象のサーバへの過度なアクセスや、著作権と言った部分等には十分ご注意ください。
:::主な構成は以下です。
# ローカルでの稼働確認
Webサイトへのリクエストには`requests`、スクレイピングには`Beautiful Soup`を利用しました。
Lambdaで当該ライブラリを利用する場合は、zip化してLambda Layerに載せると言った作業も発生する
Lambdaでindex.handler is undefined or not exportedが出た時の対処法
## 問題
Lambda実行時に以下のエラーが発生した
“`bash
index.handler is undefined or not exported
“`## 対処法
以下の2つを実施した。
### ファイル名の変更
SAMでサンプルアプリケーションを作成したが、ファイル名がapp.jsとなっていたので以下を変更した。
– ファイル名変更
– app.js -> index.js
– package.jsonの変更“`
“main”: “app.js”,
“`
↓
“`
“main”: “index.js”,
“`### ランタイム設定の見直し
アップロードしたファイル構造と、ランタイム設定が一致していることを確認する。
例えば、以下の構造の場合
“`
|–src
|–index.js
“`Lambdaの以下のようにランタイム設定のハンドラ部分をsrc/index.handlerとすれば良い
![markdown-linter – Lambda 2022-04-17 08-56-00.png](https:
AWS LambdaでPython基礎
2022/4/6(水)に行われたAPNパートナー限定セミナー「Pythonの基礎から学ぶ!サーバーレス開発はじめの一歩」で学んだLambda部分の復習。
AWS Lambdaと Amazon Translate を使ってテキスト翻訳するアプリケーションを作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/e23bb7ce-521c-da78-714d-d6f9589b28e0.png)# 1.Lambda 関数を実行する
## 1-1. Lambda 関数の作成
マネジメントコンソールで Lambda を開き「関数の作成」をクリックする。
– 「一から作成」を選択する。
– 関数名:適当な名前を付ける。目的がわかるようにしたいので今回は`translate_lambda`とした。
– ランタイム:python3.9その他項目はデフォルト値のまま「関数の作成」をクリックする。
![image.png](https://qiita-image-store.
AWS Lambda function URLsを手軽に実行
# 世間の方々よりも少し遅いけど、AWS Lambda function URLs を試してみよう
– ドキュメント
– https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html## AWS マネジメントコンソール Lambda から
– マネジメントコンソールで操作
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/6a9ecc1c-598a-982b-429e-f58e5bc4f419.png)– 「関数の作成」ボタンを押す
– 作成された内容を確認 ,URLが払い出しされて紐づいている
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/2c2b3c50-6420-daab-8f78-f68fd38bfa29.png)作成された URL:https://ej2mqhfzpd45oaz
Firebase Authenticationを使ってAPI Gatewayに認証機能を付与する
# 概要
Firebase Authenticationに登録されているユーザーだけがAPIを使えるようにするため、
エンドポイントであるAPI Gatewayにオーソライザーを設定します。処理の流れは以下の通りです。
1. **Firebase Authentication SDK**を使用し**IDトークン**を取得する
2. 取得したIDトークンをヘッダーに付与し、APIGatewayのエンドポイントへリクエストを送る
2. API Gatewayの**オーソライザー**が**Firebase Admin SDK**を使用しIDトークンを検証する
2. 認証できた場合、Lambda関数を実行する# 対象読者
Firebase Authenticationの機能が分かる方
API GatewayとLambdaでAPIを作成
Nuxt SSR を AWS Lambdaにデプロイする方法 (Typescript)
# 背景
既存のSPAのサイトにおいて、画面を動的に組み立てると同時にSEO効果を上げるために、
SSR化にすると決めました。# やり方
いろいろ情報を調べましたが、aws-serverless-expressの情報がほとんとでした。
ただ、aws-serverless-expressは既に廃止され、その後を受け継いだのは@vendia/serverless-expressです。
今回は@vendia/serverless-expressを使って、nuxtのSSRをaws lambdaにデプロイします。## プロジェクト全体像
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150479/43060cab-6a3d-6618-a5bd-25d98d4f38d3.png)## Nuxt
Nuxtのサンプルプロジェクトを作成して、ssrをtrue、targetをserverにして、
`nuxt build`を実行すれば.nuxtフォルダにserverサイトとclientサイドのファ
リソースベースポリシーで Lambda function URLs のアクセスを制御する
## はじめに
2022/4/6 から利用可能になった Lambda function URLs (関数 URL) はリクエストの認証タイプに `AWS_IAM` を選択できます。AWS_IAM では IAM エンティティのポリシーと AWS Lambda のリソースベースポリシーに基づいてリクエストが認証されます。https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html
リソースベースポリシーによる制御パターンについていくつか検証してみました。
## 結論
### できたこと
* クロスアカウントの呼び出しを許可するポリシーステートメントの設定
* PrincipalOrgID を指定した、組織内からの呼び出しを許可するポリシーステートメントの設定
* コンソールからは設定できないため、AWS CLI/SDK での AddPermission API の実行が必要### できなかったこと
* [AWS グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/la
serverlessFWにこんにちは serverlessでローカル上でAWS Lambdaを起動・呼び出してみる
## はじめに
[AWS SAMを使ってLambda(GO)のCICDをGitHub Actionsで構築](https://qiita.com/yuta-katayama-23/items/d5c786aaa2a439a3cb17)でサーバーレスアプリケーションを構築するフレームワークとして[AWS SAM](https://aws.amazon.com/jp/serverless/sam/)は触った事があったが、[serverless](https://www.serverless.com/)は触った事がなかったので、serverlessでHello World(Node.js)をやってみたので備忘録を残す。やってみた事としては、以下の3つ。
– cli上で`severless`コマンドからHello World的なLambda関数を作成するseverless.ymlの作成
– ローカル環境でそのLambda関数を実行し、Lambdaを呼び出し
– 【おまけ】実際にAWS環境にDeployソースコード全体は以下。
https://github.com/yuta-kata
AWS Lambda Function URLs で API Gateway 設定なしで直接呼び出してみる
AWS Lambda Function URLs (関数URL) が発表されましたね。
https://aws.amazon.com/jp/blogs/aws/announcing-aws-lambda-function-urls-built-in-https-endpoints-for-single-function-microservices/
AWS Lambda 関数用の組み込みHTTPSエンドポイントで、API Gateway 無しでサクっと Lambda 関数を呼び出せます。ちょっと動作確認する際などに便利。上記ブログをざっくり訳して、動作を試してみたので、メモとして残しておきます。
# さっくり翻訳
AWS Lambda を使用したマイクロサービスアーキテクチャを採用して、復元力がありスケーラブルなアプリケーションを開発しましょう。これらのアプリケーションは、ビジネスロジックを実装する複数のサーバーレス機能で構成されています。各機能は、Amazon API Gateway や Application Load Balancer などのサービスを用いて、API エン
LambdaFunctionURLsを使って30s越えのリクエストを検証する
# まえがき
前回のLambda エフェメラルストレージのアップデートに引き続き、今度はAPIGateway無くてもAPI経由でLambdaが起動できるようになりました。(2022.4.5)
このアップデートによりWebhookの接続先を直接指定できたり、ExpressやFlaskなどのバックエンドframeworkをLambda上に立て、Proxyさせるなどが簡単にできるようになります。
今までもAPIGatewayのProxy機能を利用したり、ALBからLambdaを呼び出すことも可能ではありましたが、よりシンプルにできるにようになりました。# 概要
既にServerlessFrameworkでも対応されているのですが、ServerlessFrameworkのブログに、それぞれの役割が載っており、とても分かりやすかったです。[AWS Lambda Function URLs with Serverless Framework 抜粋](https://www.serverless.com/blog/aws-lambda-function-urls-with-serverles
AWS Lambda 同時実行数、エイリアス、環境変数とか実際の現場で使える機能を勉強してみる
# 概要
AWS認定試験資格取得に向けて実際にAWSを利用してみるシリーズの投稿です。
今回はAWS Lambdaをちょっとしっかり勉強してみようという中級編です。
気が付いたらLambdaがかなり進化をしていて、久しぶりに本を購入して勉強したのでその内容をまとめた投稿になっています。私が初めてLambdaを使い始めた時の制限、コールドスタート問題の解決(同時実行数)や、実際の現場で使えるLambdaの切り戻し(エイリアス)、環境ごと異なる設定(環境変数)など、実運用で使える機能がたくさんあったのでその内容を投稿します。
認定試験勉強的にはAWS Lambdaの少しコアな部分を掴める内容になっています。
インフラに依存せずサクッとプログラミングができるLambdaを使ってみたい人、興味がある方は読んでみて下さい。資格試験の勉強法は記事は以下を参照。
[AWS初心者がAWS 認定ソリューションアーキテクト – アソシエイト資格試験に合格した時の勉強法](https://qiita.com/fkooo/items/e5284a4ed3c3466ffd41 “AWS初心者がAW
IoT リアルタイムデータを Lambda タンブリングウィンドウで集計してみた その2 Lambda 編
# はじめに
この記事は、[前回](https://qiita.com/sugimount-a/items/66e5cbbbf678f9960555)の続きです。
IoT Core の準備が出来たので、実際に Kinesis Data Streams と Lambda タンブリングウィンドウを連携してみましょう。
# システム構成
今回の作業範囲を明記した、システム構成図を載せます。画像右側のデータ集計の本体部分です。
![image-20220411000225976.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/0dda90af-3fb6-47a1-c44c-092776c49021.png)
# Lambda タンブリングウィンドウがデータをどのように集計するのか
今回の構成では、30秒おきに Lambda タンブリングウィンドウをつかってデータ集計をしていきます。30秒の間に複数の Lambda Function がリレーのバトンのように `state`
【Python】ビットコイン自動売買BotをAWS Lambdaで動かす
# 自動売買ロジックの実装
実装の流れとしては
1. BTCの価格取得
1. 移動平均を計算
1. クロスで取引実行https://github.com/SohMitian/btc_trade
## CryptowatchからBTCFXの価格データを取得
CryptowatchのAPIを叩いて、BTCFXの価格データを引っ張ります。“`python
def get_price(min, before=0, after=0):
# Cryptowatchのparamはbefore, after, period
# before: int Unix timstamp
# after: int Unix timstamp
# period: array Example: 60,180,108000price = []
# 何分単位かを設定
params = {“periods” : min }
# ローソク足取得期間が初期値0以外の時の処理
if before != 0:
params[“before”] = bef
IoT リアルタイムデータを Lambda タンブリングウィンドウで集計してみた その1 IoT Core 準備編
# はじめに
刻々と数が変化する IoT データや、SNS に投稿されたデータなど、リアルタイムなデータを集めて、集計を行うのは一般的に重労働な作業と言われています。従来のシステムでは集計処理は夜間に行うことがありますが、次のような課題があります。
– リアルタイムなデータではデータ量が多いため、夜間のバッチ処理で終わらない
– 1日1回の集計のため、翌日にならないとデータを活用できないこういった課題を解決するために、AWS ではデータをリアルタイムに処理するための機能があります。すべてを網羅するわけではありませんが、次のような実現方法があります。
– Kinesis Data Streams と Lambda のタンブリングウィンドウ (Tumbling Window)
– Kinesis Data Analytics今回は、Lambda のタンブリングウィンドウを使った集計機能を紹介していきます。タンブリングウィンドウとは、データストリームを一定時間周期で集計を行うときに使われます。イメージ図を載せます。リアルタイムなデータを5分おきに集計するような使い方を想