- 1. Lambdaをコンテナイメージから作る
- 2. 【AWS】Lambda + API Gatewayを触ってみる【API Gateway編】
- 3. 【Serverless Framework】コンテナイメージを使ってPackageする際はアーキテクチャに気を付ける【Python】
- 4. SwitchbotをLINE BOTから操作してみた(Lambda,API Gateway,Go)
- 5. OCI Functions vs AWS Lambda
- 6. AWS日記43 (AWS Lambda – Rust)
- 7. Amazon Connectで音声をふきこみ、ふきこんだ音声で一斉発信してみた
- 8. AWS Lambdaの非同期呼び出し機能やデッドレターキューとか良く分からなかったので検証してみた
- 9. AWS LambdaでSeleniumを動かすときの注意点
- 10. OpenSearch ( ElasticSearch ) の利用料を最適化する 〜円安ドル高にちょっと抵抗してみる〜
- 11. 【AWS】Lambda + API Gatewayを触ってみる【Lambda編】
- 12. EventBridgeを使用した定期実行の間隔別にLambdaの処理内容を変える
- 13. 【AWS】CDKv2で環境構築 Lambda編
- 14. ReactのaxiosでAWS lamdaをたたいたらCORSエラー
- 15. AWSマネージドを利用し、はじめてのWEB API開発をしてみた話
- 16. pythonで書いたlambdaのreturnはjson.dumps()されている
- 17. RDS Ploxy 経由で MySQL にアクセスするLambdaを、VPC内で実行
- 18. Lambda で S3にアクセスするのに access id と secret key はいらないのねー
- 19. Lambda Layersの設定 Layer設定するだけでrequestsが使えるって
- 20. 関連づけられてないEIPをSlack通知 & 削除するLambda
Lambdaをコンテナイメージから作る
# はじめに
AWSのLambdaはOSがAmazon Linux 2上で実行されるとのことです。ですがPowerShellの一部のモジュールなど、Amazon Linux 2上では動かないものもあったりします。今回、別のOSで動かす必要があったため、自作のコンテナからLambdaを作成する方法が記載されいているページありましたので、それをやってみました。
普通になぞるだけでは味気なかったので、一部CloudFormationを使うようにしてみました。# 参考
https://aws.amazon.com/jp/builders-flash/202103/new-lambda-container-development/?awsf.filter-name=*all# 環境
– Cloud9
– Docker
– インストール済み
– コンテナを扱うので、そこそこの容量は必要かも
– 自分は50GBで行いました。# やったこと
## ディレクトリ・ファイル作成
まずはプロジェクトのディレクトリを作成し、よく使う情報を環
【AWS】Lambda + API Gatewayを触ってみる【API Gateway編】
LambdaとAPI Gatewayを使って簡単なAPIを作成してみます。
AWSはほとんど触ったことがないため、内容としては初歩の初歩となります。
今回はAPI GatewayでAPIを作成して、APIを呼び出すとLambda関数が実行されるようにしていきます。
使用するLambda関数については以下の記事で作成しております。https://qiita.com/Hamoto/items/bd486937de142a589f8f
# HTTP APIを作成
マネジメントコンソールでAPI Gatewayのページを開くとAPIのタイプを選択する画面が表示されるので、今回はHTTP APIを選択します。
![画像10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2300564/2176922f-50e6-6652-592f-2d36e964e877.png)APIの設定を行います。
統合とAPI名の設定が表示されるので、「統合を追加」を押下して、追加されたセレクトボックスで「Lambda」を選択
【Serverless Framework】コンテナイメージを使ってPackageする際はアーキテクチャに気を付ける【Python】
# はじめに
Pythonで書かれたLambda関数のコードをServerless Frameworksを使ってデブロイする際に、[serverless-python-requirements](https://www.serverless.com/plugins/serverless-python-requirements) プラグインを使うことで依存関係を含めることができる。Dockerコンテナを使ったパッケージングにも対応しており、`cryptography` のようにコンパイルが必要なライブラリが含まれる際はそれを使うのだが、設定によってはLambda実行でエラーが発生することがある。
# 環境
– Python 3.9
– Serverless Framework 3.19.0# 事象
`cryptography` を含むPythonアプリをServerless Frameworkを使ってDockerコンテナでパッケージ & デプロイ。
その後Lambdaを実行すると、Importで以下のようなエラーが発生した。> [ERROR] Runtime.Import
SwitchbotをLINE BOTから操作してみた(Lambda,API Gateway,Go)
# はじめに
自宅を完全スマートホーム化してみたい!!ということで第一弾はSwitchBotの加湿器を買ってみました。
じゃじゃん!
今回はこの加湿器をLINE上からON/OFFできるようにしてみます。
# 構成
![kousei.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2610254/eb50aeb1-4ed9-4834-f3b1-6b21d7953ad7.png)
# 準備
## LINEアカウントhttps://developers.line.biz/ja/docs/messaging-api/getting-started/
を参考にチャネルを作成します。![スクリー
OCI Functions vs AWS Lambda
# General
||OCI Functions|AWS Lambda|
|–|–|–|
|Initial Release|Jul,2019|Nov,2014|
|Based on|[Fn Project](https://fnproject.io/)|N/A|
|Support Language|Java, Python, Ruby, Go, Node.js, C# (.NET). Refer to [Doc ](https://docs.oracle.com/en-us/iaas/Content/Functions/Tasks/languagessupportedbyfunctions.htm)|[Node.js](http://docs.aws.amazon.com/lambda/latest/dg/authoring-function-in-nodejs.html), [Python](http://docs.aws.amazon.com/lambda/latest/dg/python-lambda.html), [Java](http://docs.aws.amaz
AWS日記43 (AWS Lambda – Rust)
# はじめに
今回は[AWS SDK for Rust](https://aws.amazon.com/jp/about-aws/whats-new/2021/12/aws-sdk-rust-developer-preview/)を試します。
Lambda, DynamoDB, S3を利用し簡易な画像掲示板を作ります。
DynamoDB・S3周りは[aws-sdk-rust](https://github.com/awslabs/aws-sdk-rust)を利用し、Lambda周りやビルド・デプロイは[aws-lambda-rust-runtime](https://github.com/awslabs/aws-lambda-rust-runtime)を利用します。# [AWS SDK for Rust](https://aws.amazon.com/jp/about-aws/whats-new/2021/12/aws-sdk-rust-developer-preview/)の利点
> すべてのクレートは crates.io で入手できます。SDK は、EC2、ECS、Lambda
Amazon Connectで音声をふきこみ、ふきこんだ音声で一斉発信してみた
# きっかけ
災害等の危険がある時に、
自治会長さん等の地域のリーダーの「声」で防災無線を使って呼びかけることで、
地域のみなさんの避難行動が促された、というニュースを先日見ました。
(テレビの映像を見る限り、専用の装置やシステムをつかっているようでした)ふと、
Amazon Connectに電話をかけて、音声をふきこみ、録音する。
その録音された音声を、一斉発信することはできないだろうか?…と考えました。# やってみたこと
ふきこみ・録音・再生を**すべて電話で**やってみました。
1. Amazon Connectに電話をかけると、**留守番機能**のようにメッセージが録音される。
2. 録音した音声がAmazon Connectのプロンプトで**再生可能な形式で保存**される。
3. Amazon Connectから**一斉発信**すると、(着信先で)**録音した音声が再生される**。[**【デモ動画】こんな感じになります!**](https://youtu.be/u8w61VM-2C8)
# 実現
AWS Lambdaの非同期呼び出し機能やデッドレターキューとか良く分からなかったので検証してみた
## 目次
– [目次](#目次)
– [はじめに](#はじめに)
– [AWS Lambdaの非同期呼び出し機能とは](#aws-lambdaの非同期呼び出し機能とは)
– [検証準備](#検証準備)
– [SQS](#sqs)
– [Lambda](#lambda)
– [EventBridge](#eventbridge)
– [検証内容](#検証内容)
– [ログ](#ログ)
– [SQS](#sqs)
– [まとめ](#まとめ)## はじめに
AWS Lambdaで非同期呼び出し機能がありますが、動作がイマイチ良く分からなかったので実際に検証してみました。## AWS Lambdaの非同期呼び出し機能とは
Lambdaが非同期呼び出しされた際にエラーとなった場合に、リトライ処理をしたりデッドレターキューにキューを入れることができる機能です。リトライに関しては以下に記載のあるように、1回目のリトライは1分後、2回目のリトライは2分後に行われます。
> Lambda manages the function’s asynchronous even
AWS LambdaでSeleniumを動かすときの注意点
# 概要
* ある日、seleniumによるフロント画面の正常性確認を行うAWS Lambdaの実行エラーが頻発していることに気づき調査することになりました。
* その際に気づいたseleniumの特性とAWS Lambdaの特性について今回は記事にしていこうと思います。
* もし同じような現象に陥った人がいた時の何らかの助けになれば幸いです。## 仕様の確認
* フロント画面の正常性を確認するためにseleniumのwebdriverでヘッドレスモード実行をしていました。
* 実行には、CloudWatchEventを利用し、5分おきにこのLambdaを発火し、実行結果をCloudWatchLogsに吐き出すようになっています。## 何が起きたのか
* 一定の間隔でこのseleniumを動かすLambdaが実行中にエラーとなり落ちていました。
* ただ毎回の実行で、このLambdaが落ちるというわけではなくたまに実行エラーとなるのがとても不思議でした。### Lambdaでの実行エラーが発生したときの調査方法
* Lambdaのインサイトメトリクスを有効にするとL
OpenSearch ( ElasticSearch ) の利用料を最適化する 〜円安ドル高にちょっと抵抗してみる〜
# はじめに
円安が止まりません。20数年ぶりの円安水準だそうです。ガソリン代も高騰していますが、ドルベースのAWS利用料も影響を受けてしまいます。AWS利用料には補助金は導入されませんので、自助努力するしかないですね。仕事の効率が落ちない程度に、コスト最適化を考えてみます。# OpenSearchの費用について
OpenSearchのデータノードは、マルチAZにすると2(または3)の倍数が必要で、シャード数も考慮すると、両方の公倍数にした方が良いです。となると、必然的にデータノード数はある程度多くなり、それに伴い費用もかさみがちだと思います。# OpenSearchの運用コストを最適化
商用環境には手をつけにくいので、検証環境(開発環境)にフォーカスします。コストを無視すれば、検証環境はできる限り商用環境と同じ環境であることが理想ではあると思いますが、ほとんどの時間で性能を持て余します。そこで、性能が必要な場合(性能テスト時など)のみ、商用レベルの性能を付与する(動的に設定変更する)ことにします。# 最適化の方針
とはいえ、手間は増やしたくありません。データ量に依存するデ
【AWS】Lambda + API Gatewayを触ってみる【Lambda編】
LambdaとAPI Gatewayを使って簡単なAPIを作成してみます。
AWSはほとんど触ったことがないため、内容としては初歩の初歩となります。
今回はLambdaで関数を作成していきます。# Lambda関数を作成
まずはLambda関数を作成していきます。
マネジメントコンソールでAWS Lambdaの関数のページを開いて、「関数の作成」を押下します。
![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2300564/8baf5339-2848-fec0-58f8-e7558d855f92.png)「一から作成」を選択し、関数名を「Sample」、ランタイムは「Python 3.9」を選択します。
その他の項目はデフォルトのままとし、「関数の作成」を押下します。
![画像5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2300564/69b080e5-177d-abb3-29ee-84dcd2
EventBridgeを使用した定期実行の間隔別にLambdaの処理内容を変える
ある検算処理を行って異常がないか確認し、その結果をSlackに通知するLambdaを作成しました。
Lambdaのトリガーは[EventBridge (CloudWatch Events) ](https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/eb-what-is.html#)を使用して、1時間毎と24時間毎に定期実行を行いました。
1時間毎と24時間毎で処理内容を変える方法について記載します。
開発言語はPythonです。# EventBridgeでルールの作成
EventBridgeで下記のルールを2つ作成しました。## rule-every-hour
1時間毎の定期実行 “`rate(1 hour)“`
このイベントをLambdaが受けた場合、異常があれば通知する(異常がなければ通知しない)。## rule-every-day
24時間毎の定期実行 “`cron(0 10 * * ? *)“` 毎日午前 10:00
このイベントをLambdaが受けた場合、異常がなくても結果を通
【AWS】CDKv2で環境構築 Lambda編
# はじめに
現在運用中の環境をテスト用として複製する際に`CDKv2`を用いて
コード化することになったのでその学びです。[DynamoDB編はこちら](https://qiita.com/yamato1491038/items/f388afa3aa4f701321f5)
[Cognito編はこちら](https://qiita.com/yamato1491038/items/bbef1df21e54e22d36ca)
[apigateway編はこちら](https://qiita.com/yamato1491038/items/63fc91325c6f72464b49)
[StepFunctions編はこちら](https://qiita.com/yamato1491038/items/7393c910f70bf241ed62)# 準備
このへんの記事でまずは環境設定
https://aws.amazon.com/jp/getting-started/guides/setup-cdk/今回は`TypeScript`を用いて実装しました。
“`
$ cdk ini
ReactのaxiosでAWS lamdaをたたいたらCORSエラー
この前からAWS SAMにと取り組んでます。AWS上にlamda関数は構築できてブラウザからアクセスでは正常に帰ってくるけど、reactのaxiosで叩いたら、でました。いつも引っかかるやつ。CORSエラーです。
`
Access to XMLHttpRequest at ‘http://localhost:3000/hello’ from origin ‘http://localhost:3001’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
`下記記事に助けられました、localでも同じです。かんしゃかんしゃ。
https://syachiku.net/react-axios-cors/
lamda関数の返り値に以下の内容でheaderを付与します。
“`
return {
‘statusCode’: 200,
‘headers’: {
AWSマネージドを利用し、はじめてのWEB API開発をしてみた話
## はじめに
最近WEB APIやRESTについて学習中なので、AWSのマネージドを利用してWEB APIの開発をしてみました。
構成の概要や、開発中に参考になった記事、便利だなと思ったツールやデバックについて紹介したいと思います。
AWSマネージドでのWEB API開発に興味のある方に読んでもらえると嬉しいな、と思っています。
—
### 採用技術
– API Gateway
– Lambda
– DynamoDB「まずは動くAPIを!」という事で、サーバーサイドの実装のみ行っています。
LambdaはPythonで実装しています。—
### その他
– VSCode拡張機能
– REST Client(テスト用)
– Swagger Viewer(ドキュメント生成用)
– CloudWatch(デバック用)「VSCodeの拡張機能を色々お試ししたい!」という目的もあったので、テストやドキュメント生成用としてVSCodeの拡張機能を利用しています。
—
### 構成
今回はシンプルなCRUD機能の実装という事で、辞書アプリケ
pythonで書いたlambdaのreturnはjson.dumps()されている
# はじめに
もうタイトルがそのまんま結論なんですけど、
色々読んで試してやっと自分の中で解決したので記事にします。対象読者は
+ 公式ディベロッパーズガイドを読んでもあまりピンと来なかった方
+ lambdaからの返り値に無駄にバックスラッシュついてて困ってる方です。
# 結論
pythonで書いたlambdaのreturnはjson.dumps()されています。
なので一度json.dumps()したものを要素として渡すと
意図しないバックスラッシュがついてきます。公式のディベロッパーズガイドの「値の返し(Returning a value)」のところ読むと書いてあるんですが、
最初は日本語版読んでも意味わかんなくて
英語で読んでやっとあれ?となって
いろいろ試してやっと「そういうことか!」となりました。公式のディベロッパーズガイドはこちら
日本語版:[https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-handler.html#python-handler-return](https://docs
RDS Ploxy 経由で MySQL にアクセスするLambdaを、VPC内で実行
# はじめに
RDS Ploxy 経由で MySQL にアクセスするLambdaをVPC内で実行させましたので、手順をまとめます。![スクリーンショット 2022-06-23 22.00.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/6391a70c-3d26-f29d-2a5c-a8db47bbb6c3.png)
# RDS Ploxyの作成
RDS Ploxyは、以前作成した記事がありますので、こちらを参考にしてください。https://qiita.com/hirai-11/items/07b25f81f1a983e0191c
# private subnetにLambdaを作成
## 設定
– IAMロール
– `AWSLambdaENIManagementAccess`を付与します.これによってVPC上でLambdaが実行できます。
– タイムアウト時間
– 30秒にします。実行に数秒かかります。
– 環境変数
– RDS_HOSTN
Lambda で S3にアクセスするのに access id と secret key はいらないのねー
S3にアクセスしたい!から boto3を使うよ!
普通はこんな感じで、 id と key 渡すんじゃ
“`python:qiita.rb
s3 = boto3.resource(‘s3’,aws_access_key_id, aws_secret_access_key)
“`
でも Lambdaでは
“`python:qiita.rb
s3 = boto3.resource(‘s3’)
“`
でよいんですと!でも`IAM設定ってものがいりまっせ`、だんな
# S3を使うための、IAM設定
1. 設定 > アクセス権限
1. 「実行ロール」の中のロール名をクリック![スクリーンショット_2022-06-24_14_51_26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47236/a9718783-2986-5017-c775-5dbc063c0b20.jpeg)
1. 許可 「許可ポリシー」の右「許可を追加」から、「インラインポリシーを作成」![スクリーンショット_2022-06-24
Lambda Layersの設定 Layer設定するだけでrequestsが使えるって
lambdaで必要なライブラリはzipであげないといけない!けど、
### 皆んながよく使うやつは、Layerってとこに設定すればいいんですって!
さらに、
有志でこんなものが!
https://github.com/keithrozario/Klayers/blob/master/deployments/python3.8/arns/ap-northeast-1.csv
### このARNをLayerに設定するだけ、すてき!# requestsの設定の仕方
コード の下コードソース
↓
コードのプロパティ
↓
ランタイム設定
↓
レイヤー
の右「レイヤーの追加」1. レイヤーソース > 「ARNを指定」を選択
2. ARNを指定のテキストフィールドに
3. ここから入れたいものをさがして、そのarn欄をコピペ
https://github.com/keithrozario/Klayers/blob/master/deployments/python3.8/arns/ap-northeast-1.csv
今回は「requests」の latest の arn
![スクリー
関連づけられてないEIPをSlack通知 & 削除するLambda
# はじめに
EIPの料金体系についてご存知でしょうか。
以下のケースで、EIPは料金が発生します。1. 実行中のインスタンスと関連付けられている追加の IP アドレス(= インスタンスは実行中だが2個以上EIPが関連づけられている)
2. 実行中のインスタンスと関連付けられていないEIP
3. 関連付いているEC2が停止している
4. EIPを、1ヶ月に100回以上リマップhttps://aws.amazon.com/jp/ec2/pricing/on-demand/
ちょくちょく個人の検証環境にて2番目の**EC2に関連付いていない(= 使わずに放置されている)EIP**が湧くことがあります。(単純に消し忘れ)
EIPが1つ生き残っていた場合、1ヶ月あたり大体以下の無駄な費用が発生します。
(これを多いととるか少ないととるかはお任せします)“`
0.005 × 24 × 30 × 135 = 486円※計算に必要な値
EIPの料金:$0.005/h
1ヶ月:30日とする
1ドル:135円とする
“`そこで今回紹介するLambdaを使ってこのEIPを一網打