Lambda関連のことを調べてみた2021年08月16日

Lambda関連のことを調べてみた2021年08月16日
目次

LambdaのProvisioned Concurrency とは

## 勉強前イメージ

並列数を上げる?

## 調査

### Provisioned Concurrency とは

2019年に発表された機能で、
初期化処理が完了したlambdaの環境をプロビジョニングしておくことが出来ます。
要するにすぐに使えるようなlambdaの環境を用意しておくことができる、ということです。
lambdaのコールドスタート(HWが初期化された状態の再起動)対策として他にも方法が取られていましたが、
この機能で簡単に対策を行うことが出来ます。

lambdaでリクエストが大量に来たとき、
同時実行数に関わらず、バースト制限までしか最初の段階は増えないのです。
例えば同時実行数が3000で、バースト制限が1000だとしたら
一気にアクセス来た際は1000までしか最初は増えないということです。
その後の同時実行数はすぐには増えず1分間に500ずつ増えていきます。
その際の一定量環境を用意しておくという対策が、Provisioned Concurrencyになります。

### 費用

Provisioned Concurrency には費用がかかり、
東京リー

元記事を表示

maplistを実装してみた

いつもお世話になるmap系の関数たち。

[MAP関数 : セマンティックウェブ・ダイアリー](http://blog.livedoor.jp/s-koide/archives/1874327.html)

基本的なmap系関数を実装して、理解してしまおうというのがこの記事の趣旨です。

[mapcarを実装してみた – Qiita](https://qiita.com/inutomo0123/items/985bd62c8949206030f4)
に引き続いてmaplistを実装してみます。

## maplistの動作を確認する

“`common-lisp
(defvar *list1* ‘(1 11 111))
(defvar *list2* ‘(2 22 222))
(defvar *list3* ‘(3 33 333))

(format t “~%~A” (maplist (lambda (x y z)
(format t “~%x:~A y:~A z:~A” x y z))

元記事を表示

【AWS DOP学習】CodePipelineを使用してLambdaを作成するチュートリアルを、CloudTrailを覗きながらやってみた

# はじめに

DOP学習にあたり、CodePipelineのイメージを掴むためにチュートリアルを行います。

# 対象チュートリアル

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/applications-tutorial.html

# チュートリアルの構成図

![codepipeline_tutorial_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/6926f0a6-3e4f-9653-d2b9-da8c4c925e53.png)
※チュートリアル中、Lambdaの箇所にDynamoDBも追加されます。

# やってみた

## Lambdaからアプリケーションを作成

まず、Lambdaのアプリケーションを`一から作成`します。

![スクリーンショット 2021-08-12 19.09.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

AWS StepfunctionsでCloudFormationスタックをシリアルに実行する

## はじめに

AWS StepfunctionsとLambdaでCloudFormationスタックをシリアルに実行するステートマシンを作成しました。(実行したスタックが完了するまで次のスタックは実行しません)
これは[以前作成したスクリプト](https://qiita.com/suo-takefumi/items/2bbcc3fd9af02acbeb26)をサーバレスで実行できるように改善したものになります。

## ソース

作成したソースはgithubに格納しました。

https://github.com/zgw426/AWS-StepFunctions_CreateStacks

## Stepfunctions ステートマシン

作成したステートマシンと各フローの処理概要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274270/e8e3c747-8b8b-bf9b-9bb7-044fbc4410fc.png)

余談
Stepfunctionsっ

元記事を表示

AWS Toolkit とsam を使ってLambdaを実行(ローカル実行、API Gateway実行)

前回は、ローカルからリモート実行の記事を書きました。
今回は、よくあるAPI Gateway + AWS Lambdaの開発をVSCodeを使ってやる方法です。

AWS SAM を使いローカルからクラウドへdeploy、クラウド側での実行、ローカルでの実行を行ってみます。
`sam build`, `sam deploy` によるエラーに遭遇します、エラーが出ると理解が深まります。

VSCode + Remote Containerでの環境構築ができず、Windows PCのローカル環境使っています。
※エラーの回避方法ないか模索中(systemctlコマンドは通るが service docker start ができない)

ローカル環境に、sam cli や python は入れたくない、複数バージョン管理が手間だったり、他に依存したりで・・・。

## 環境準備
– Windows10, 64bitとして進める

### 前提
– Docker Desktop for Windows,VSCode がインストールされていること
– インストールしていない場合は http

元記事を表示

APIGateway+Lambdaで、WebページからEC2の起動・停止・スペック変更を操作する

#はじめに
Ec2の操作は、AWSコンソールから操作しますが、ログインすることが面倒だったりやチームで開発する場合、EC2の起動・停止のためだけにIAMユーザーを作成するのは手間だったりするため、S3に配置したhtmlでEC2を操作できる仕組みを作成しました。
ただし、メンバー以外に操作されないよう、S3にはCloudfront OAI、CloudFrontとApiGatewayにはBasic認証をかけてます。

#構成図

S3にhtmlを配置して、CloudFrontで配信し、S3からアクセスできないよう制限します。
そして、html上でEC2を操作できるようLambdaを使用します。

#完成ページ
EC2の現在のスペックと起動有無が非同期で表示され、ワンクリックでEC2を起動・停止・スペック変更できます。

元記事を表示

CloudFront+LambdaでBasic認証(htpasswd)を設定した

## 概要

CloudFrtont+S3のような構成でBasic認証の実装方法は既にいくつものサイトで紹介されているが、パスワード情報を平文でLambda内に保存する方法が主流なので、htpasswd形式で保存する方法を試してみた

## 参考サイト

– Leonid Makarov
– [Medium.com: Serverless: password protecting a static website in an AWS S3 bucket](https://medium.com/hackernoon/serverless-password-protecting-a-static-website-in-an-aws-s3-bucket-bfaaa01b8666)
– [gist.github.com: lmakarov/lambda-basic-auth.js](https://gist.github.com/lmakarov/e5984ec16a76548ff2b278c06027f1a4)
– [Amazon CloudFrontとAWS Lambda

元記事を表示

[Java] AWS Lambda + API gateway + S3でjsonファイルをいじるだけ (2)

[前回](https://qiita.com/regaeve/items/f5863d7d059782f9c2a9)はlambdaでeventを受け取るところまでやりました。

今回はAPI gatewayとの連携をやっていきます。(S3は次回で。。疲れちゃった。)

# 環境
– windows 10
– java11
– gradle
– intelij idea community

# API gatewayからlambdaを呼び出す

## API gatewayでAPIを構築する

1. AWSコンソールから`サービス`⇒`ネットワーキングとコンテンツ配信`⇒`API gateway`を選択
![スクリーンショット 2021-08-12 170811.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240124/b31f1a24-ebb8-6f43-acf9-bd6467639f87.png)

1. `APIを作成`⇒REST APIを`構築`を選択(僕はプライベートじゃない方で作りました

元記事を表示

初心者がAWS Lambda + Python + LINE BotでWikipediaのタイトルをランダム送信

本記事は「[いのべこ 夏休みアドベントカレンダー 2021](https://qiita.com/jugemsan/items/6c8b7324b9390a557774)」の13日目の記事です。記事の掲載内容は私自身の見解であり、所属する組織を代表するものではありません(お約束)。

# はじめに
入社から1年半が経ったが、研修修了後から全くプログラミングを触らなくなってしまった。
さすがに危機感を感じた私はここで行動に移さなければという使命感から今回このような記事を書くことにした。

## プロフィール
* 社会人2年目
* プログラミング経験ほぼなし(研修でやったことはほぼ忘れた)
* 経営学士
* サッカーやってました(幼稚園~大学)
* 最近とろろが好きになってきた

## 技術経験
入社からアプリ開発はほぼなく、データベースの構築やOSSの構築などの環境構築作業をメインで行っていた。そのためコーディングの経験や知識が不足しており、まじ半端ねーやべーレベルでできない。(型はstringとintしか知らないレベル)

# 作るもの
![iOS の画像 (1).png](http

元記事を表示

[Java] AWS Lambda + API gateway + S3でjsonファイルをいじるだけ(1)

# やりたいこと
自分のS3バケット上にjsonファイルを作ったり、中身を書き換えたりできるapiをlambdaとapi gatewayつかって作る予定です!!言語はjava11です!!!
**といっても今回はlambda動かすところまで。**

~~s3とか~~api gateway周りは[次回](https://qiita.com/regaeve/items/23ba1a883a87adf92365)(~~あるといいな~~あった)

# 環境
– windows 10
– java11
– gradle
– intelij idea community

# リージョンについて
僕の場合、lmabda、api gatewayはオハイオ(us-east-2)で作成しました。
場所は多分どこでもよいと思いますが、**両方とも揃えないと連携できない**気がします。
S3はリージョン指定できないので気にする必要ないです。

![Inkedスクリーンショット 2021-08-12 104325_LI.jpg](https://qiita-image-store.s3.ap-northeast

元記事を表示

他で管理されているDynamoDBへの更新をAmplifyアプリでサブスクライブする

# 概要
他で(例えば他のAmplifyプロジェクトで)作成したDynamoDBのテーブルへのデータ挿入や変更などを、Amplifyアプリで検知してリアルタイムで利用する仕組みを構築するメモ。

同じAmplifyプロジェクト内で`@model`で作成したテーブルであればsubscriptionを定義してアプリから呼び出すだけで簡単にリアルタイムでデータを取得できるが、Amplifyプロジェクトの外で作成されたテーブルのデータ更新を検知することはできない(2021/08/11現在)。

なので、対象のDynamoDBテーブルのStreamをLambdaで受け取って、Lambdaに実装中のAmplifyプロジェクトのmutationを呼び出させて、そのmutationをsubscribeすることでAmplifyアプリで変更を受け取る、ということをする。

![Untitled Diagram (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138322/cf9ffe06-9bed-13eb-cc83

元記事を表示

AWS ChatbotでSlackからLambda関数(Go)を呼び出す 

## はじめに
CICDの一環でGoのLambdaをSlackから呼び出す仕組みを構築したのでその備忘録を残す。
(Goは初見だったので少しGoを触った所も書き残した。)

## Goを使ってみる
### install
https://golang.org/doc/install からDowloadしてくる。
`go version`でGoのバージョンが表示されればOK。

“`
C:\Users\user>go version
go version go1.16.7 windows/amd64
“`

### hello world
[はじめてのGo](https://github.com/yuta-katayama-23/Go/commit/a24dbd81df6ebc32e0bb739b9b50a54f7c91e136)

“`golang:hello
package main

import “fmt”

func main() {
fmt.Println(“Hello, World!”)
}
“`

実行結果は以下のようになる。
CIでGoを動かすのに使った

元記事を表示

DjangoをLambdaで動かそうと思ったけどやっぱり向かないと思った話

# はじめに
DjangoでWebアプリを作成した際に、サーバーを借りると高くつくので、何とかLambdaに乗っけて実行課金にできないかと試した記録です。
結論から言うと上手くいかなかったのですが、何か役立つかもしれないので書き残しておきます。

# DjangoをLambdaで動かすまでの手順
以下のサイトを参考に実施しました。相違点としては、以下のサイトではMySQLにて動かしていますが、私はSQLiteにて試しています。(ただし、うまくいきませんでした。)

https://qiita.com/umihico/items/4534e1f84e8de5a62db5

# 問題点

### Werkzeugが最新バージョンだと動かない
Python用のWSGIユーティリティライブラリであるWerkzeugを、最新バージョンにしていると動かないです。
requirements.txtにて、バージョンを指定してあげる必要があります。

“`plaintext:requirements.txt
Django
Werkzeug==1.0.1
“`

### Pythonが最新バージョンだ

元記事を表示

AWS Step Functions 調査メモ

## はじめに

AWS Step Functions の調査メモ。深堀りはせず概要を把握することが目標です。

## Step Functions で Lambda 実行

Step FunctionsでCloudWatch logsにログを書き込むLambdaを実行します。

以下はログを書き込むLambda(Python3.8)です。
Lambda実行時に受け取ったJSONデータをログに記録します。
また、return で受け取ったJSONデータを返しています。

“`python:test001
import json

def lambda_handler(event, context):
print(“test desu {0}”.format(event) )
return (event)
“`

– 必要なIAMロールは、CluodWatch Logs の以下3つ
– CreateLogGroup
– CreateLogStream
– PutLogEvents

作成したStepFunctionsのjsonコードです。

元記事を表示

AWSのLambdaを使ってS3間のファイルコピーを試してみた。

## はじめに
普段何かお試しで作りたい時は、主にGCPにVMインスタンスを立てて、そこで色々といじってみる事が多かったため、本格的に色々なクラウドサービスを試したことはなく、AWSもほとんど使ったことがなかった。
周りではクラウドと言えば **”AWS”** の選択肢が多い気がするので、基本的なサービスくらいは多少はいじれた方が良いかと思い、今回は触りながら、調べながら学んだことをメモとして残しておく。

## 前提
そもそもから勘違いをしていた部分なのだが、まずAWSアカウントを作成した場合、各リージョンにそれぞれデフォルトでVPCができるのだが、このVPCの中に色々なサービスを作成(追加)していく様なものかと想像していた。
しかし、実際には以下の様なイメージで、VPCに属させるサービスの方が少ないのではないかと思っている。
![Qiita-no049_img01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654767/220242cc-125f-8858-b642-b27434439f0b.

元記事を表示

AWS Toolkitの使用例(AWS Lambdaのリモート実行)

# AWS が提供するAWS Toolkitを使い AWS Lambda Python を実行してみる
– この記事でやることは、
– VSCodeを使いAWS Lambda の hello-lamdaをローカルから実行する(ローカルからリモート実行)
– VSCode上でソース編集してAWSクラウドにアップロードする(Lambda関数をデプロイする)
– `sam local invoke` 等の sam コマンドは利用しない
– 簡単なLambda作って、EC2インスタンス再起動する、CloudWatchLogsからlambda実行、みたいなインフラスクリプト相当を手軽に実行するくらいの用途です
– API Gateway等で実行するLambdaは`serverless framework`や`sam`や`cdk`を使う方が良いです
– 間違って別のLambdaを編集してしまうこともあったり、消してしまうこともあるので開発用です。ソースはGit等で管理しておきましょう。
– JetBrainsのPyCharmやWebSotrmでLamdba関数作成で利用した

元記事を表示

Golang + Lambdaでサーバレス開発時にWarning「Support for “package.include” and “package.exclude” will be removed with next major release.」が出た時の対応

# 背景

Golang + Lambdaでサーバレス開発中に`sls invoke -f 関数名`を実行すると、以下のWarningが発生しました。

“`
Serverless: Deprecation warnings:

Support for “package.include” and “package.exclude” will be removed with next major release. Please use “package.patterns” instead
More Info: https://www.serverless.com/framework/docs/deprecations/#NEW_PACKAGE_PATTERNS
“`

# 対処法
`serverless.yml`を以下のように書き直せばOKです。

“`serverless.yml
package:
exclude:
– ./**
include:
– ./bin/**
“`

“`serverless.yml
package:
patterns:

元記事を表示

TerraformでRDSのパスワードローテーションのコードを作成する

# はじめに
検索してもあまり良い記事を見つけることができなかったため、自分で色々試して成功したことを記載します。

## VPC、サブネット、RDS
VPC、サブネット、RDSは検索すればたくさん出てくるので、既に作成済みを前提として記載します。
VPCのCIDRは**”10.0.0.0/16″**としております。
今回RDSは**Aurora PostgreSQL**を使用し、**プライベートサブネット**に配置します。
RDSのセキュリティグループは**PostgreSQLのポート(5432)に同VPC内(10.0.0.0/16)からのアクセスのみ許可**しております。

## パスワードローテーションの仕組み
AWS Secrets Managerに認証情報を保持し、Lambdaを使って定期的にパスワードを更新します。
https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/enable-rotation-rds.html

コンソールだと上記ドキュメント記載通りにすれば簡単に設定可能なのですが、これを

元記事を表示

徹底解説!Java8特性

皆さん、こんにちは!

最近、仕事を探しています。java エンジンニアとして面接をうける際に、よくjava8の特性の問題を質問されました。
だから、本記事はjava8の特性を中心としてまとめてご解説いたします。

### 一、ラムダ式
この前のjavaバージョンでリストをソートするために、下記のように実装すべきである。

“`java
List myList= Arrays.asList(“tom”, “jack”, “smith”, “allen”);
Collections.sort(myList, new Comparator() {
@Override
public int compare(String a, String b) {
return b.compareTo(a);
}
});
“`
だが、java8の特性(lambda式)を用いたら、下記のlambda式で簡単に実装できる。

“`java
Collections.sort(names, (a, b) -> b.compareTo(a));
“`

上記のlam

元記事を表示

ServerlessFrameworkを利用したLambdaでデバッグを実施する。

###記事作成に当たって
最近、Serverless Frameworkを利用してLambdaにNode.jsをデプロイしている。Serverless Frameworkはテンプレートも充実してるし、CI/CDの面でも優れているのでなかなか便利。だけど、デバッグのやり方がわからなくて困っていた。どうにか、簡単にデバッグをできないかなぁと思って、試行錯誤する中でデバッグ環境ができあがったので、記事にして共有します。

###構築時の環境情報
端末:Mac
エディタ:VsCode
node:v14.17.4(versionが古いと)
npm:7.20.5

###パッケージの環境構築

“`:packageのインストール
~/develop/study/serverless $ serverless create -t aws-nodejs-typescript -n debug_lambda -p debug_lambda
Serverless: Generating boilerplate…
Serverless: Generating boilerplate in “/User

元記事を表示

OTHERカテゴリの最新記事