- 1. lambdaのメモリとCPU数はどこが切れ目なのか調べてみた
- 2. AWS CDK + TypeScript でサーバレス開発その1 : Hello world!
- 3. WebhookとAPIのちがい ~Kintone編~
- 4. Lambdaの関数 URL(Function URLs) を使用時、Basic認証をかける
- 5. AWS Cognito ユーザープールを認証制御に利用してLambda関数を呼び出す
- 6. AWS Lambda,DynamoDB間のCRUD操作
- 7. Lambdaをコンテナイメージから作る
- 8. 【AWS】Lambda + API Gatewayを触ってみる【API Gateway編】
- 9. 【Serverless Framework】コンテナイメージを使ってPackageする際はアーキテクチャに気を付ける【Python】
- 10. SwitchbotをLINE BOTから操作してみた(Lambda,API Gateway,Go)
- 11. OCI Functions vs AWS Lambda
- 12. AWS日記43 (AWS Lambda – Rust)
- 13. Amazon Connectで音声をふきこみ、ふきこんだ音声で一斉発信してみた
- 14. AWS Lambdaの非同期呼び出し機能やデッドレターキューとか良く分からなかったので検証してみた
- 15. AWS LambdaでSeleniumを動かすときの注意点
- 16. OpenSearch ( ElasticSearch ) の利用料を最適化する 〜円安ドル高にちょっと抵抗してみる〜
- 17. 【AWS】Lambda + API Gatewayを触ってみる【Lambda編】
- 18. EventBridgeを使用した定期実行の間隔別にLambdaの処理内容を変える
- 19. 【AWS】CDKv2で環境構築 Lambda編
- 20. ReactのaxiosでAWS lamdaをたたいたらCORSエラー
lambdaのメモリとCPU数はどこが切れ目なのか調べてみた
すでにほかの記事でも触れられていますが、lambdaはメモリを増やすとCPUが増えるようです。
https://qiita.com/hamadu/items/12303d9f9cb800db14d3
https://aws.amazon.com/jp/lambda/faqs/128MBでもすでに2つ割り当てられていたり最大でも6つだったりどこが区切れなのか調べてみました。
ソースコードは以下に置いてあります。
https://github.com/misogihagi/lambda-cpuinfo
## 結果
128MBごとに増やした結果です。ざっくりいうと3GB,5GB,7GB,9GBでスレッドが一つ増えるみたいです。
![visualization.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230043/ad4c5b74-d42a-df4d-bd09-a1e0559eb58a.png)
“`json:vega-light
{
“data”: {
“values”: [
AWS CDK + TypeScript でサーバレス開発その1 : Hello world!
# 概要
AWS CDKでサーバレス環境を構築するシンプルな方法のメモ。
# 前提
– 筆者の環境はMac + VSCode。
– AWS CDKを使ったことがある。
– Node.jsがインストールされている。# 手順
## 雛形の作成
aws-cdkを使ってプロジェクトの雛形を作成する。
“`bash:ターミナル
mkdir project-name
cd project-name
cdk init app –language typescript
“`TypeScriptは直接ts-nodeが実行するので、typescriptパッケージはアンインストールしておく。tsconfig.jsonも削除する。
“`bash:ターミナル
npm uninstall typescript
rm tsconfig.json
“`package.jsonからtsc関連のスクリプトも削除しておく。
“`diff:package.json
“scripts”: {
– “build”: “tsc”,
– “watch”: “tsc -w”,
WebhookとAPIのちがい ~Kintone編~
# WebhookとAPIのちがい
今回はWebhookとAPIの違いをやってくよ。
:::note info
~おしながき~
1. 前置き
2. WebhookとAPIのちがい
2. 使ってみる(Kintone):::
## 前置き
とある日の出来事。
同僚「ISEYAくん、WebhookとAPIのちがいってなんなん?」
ISEYA「うーん、、コードを書かないか、書くかのちがいとちゃいますかね:baby:」そう、実際**私は雑魚**のためあまり腑に落ちていないので曖昧な表現で回答してしまいました。
しっかりと理解を深めるため、調べてみたが、
コードを書くか書かないかの違いは正解のようで不正解なようだ。今日はそれを紹介していく。
## WebhookとAPIのちがい
##### 結論 自動か手動かのちがい
です。
じゃあ具体的に自動と手動ってどういう意味?について深堀していきます。まず、APIの一例をシーケンス図にしてみました。
するとこんな感じ。“`plantuml
クライアント->サーバー : リクエスト
クライアント<-サーバー : レス
Lambdaの関数 URL(Function URLs) を使用時、Basic認証をかける
# はじめに
先日、Lambda単体でHTTPSエンドポイントから実行可能になる機能が追加しました。
特定のリソースのみLambdaを実行できるようにするためには、Basic認証を適用する必要があったため、その方法についてまとめます。https://dev.classmethod.jp/articles/aws-lambda-function-urls-built-in-https-endpoints/
# Lambdaを実行する認証タイプ
– `AWS_IAM` – IAM の権限に基づいて、リクエストを認証および承認します。権限は、`lambda:InvokeFunctionUrl`を付与したIAMポリシーをIAMロール、もしくは、IAMユーザーに適用し、lambdaを呼びます。
– アクセスするためには`AWS Signature Version 4 (SigV4)`を使用して、HTTPリクエストに対して署名する必要があります。– `NONE` – Lambda を呼び出す前の認証を実行しません。関数 URL への、未認証でパブリックなアクセスを許可するには、
AWS Cognito ユーザープールを認証制御に利用してLambda関数を呼び出す
## AWS API Gateway ユーザープールとは
– [AWS Lambda関数](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html)をインターネット経由でREST API として呼び出すことができます。
– API呼び出し毎の認証が設定可能です。本記事では認証のバックエンドにCognitoを利用します。
– [Amazon API Gateway の概念](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/api-gateway-basic-concept.html)## この記事の目的
– AWS Cognitoから発行した認証トークンを利用してAWS API Gatewayを経由してLambda関数を呼び出すよう構成します。
– これによりセキュリティが確保されたAPI呼び出しを実現します。## ?これより先は下記記事の内容を前提とします
– [AWS Cognito ユーザープールからの認証トーク
AWS Lambda,DynamoDB間のCRUD操作
## DynamoDBの環境準備
DynamoDB→テーブル→テーブルを作成からテーブル名peopleを作る。
パーティションキーを文字列型のSrとする。
そして、以下のようなテーブルを作成する。
![スクリーンショット 2022-07-03 14.07.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2040882/ec6515e6-c6c9-9575-5c35-5c0fa5e6edf3.png)## AWS Lambdaの下準備
流れとしてはロールにポリシーを当て、そのロールをサービスで使用するといった流れになる。まず実行ロールを作る。IAMからアクセス制限→ロール→ロールの作成を選択。
信頼されたエンティティタイプ:AWSのサービス
ユースケース:Lambdaを選択。
次に、AmazonDynamoDBFullAccessを許可ポリシーに選択。
ロール名をここではlambda-dynamodb-fullaccessとする。
## AWS Lambdaの下準備2
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’: {