- 1. AWSの API Gatewayを使ってLambdaを実行する。
- 2. Lambdaを定期的に実行する
- 3. lambdaでnpm moduleを使う方法
- 4. LambdaのProvisioned Concurrency とは
- 5. maplistを実装してみた
- 6. 【AWS DOP学習】CodePipelineを使用してLambdaを作成するチュートリアルを、CloudTrailを覗きながらやってみた
- 7. AWS StepfunctionsでCloudFormationスタックをシリアルに実行する
- 8. AWS Toolkit とsam を使ってLambdaを実行(ローカル実行、API Gateway実行)
- 9. APIGateway+Lambdaで、WebページからEC2の起動・停止・スペック変更を操作する
- 10. CloudFront+LambdaでBasic認証(htpasswd)を設定した
- 11. [Java] AWS Lambda + API gateway + S3でjsonファイルをいじるだけ (2)
- 12. 初心者がAWS Lambda + Python + LINE BotでWikipediaのタイトルをランダム送信
- 13. [Java] AWS Lambda + API gateway + S3でjsonファイルをいじるだけ(1)
- 14. 他で管理されているDynamoDBへの更新をAmplifyアプリでサブスクライブする
- 15. AWS ChatbotでSlackからLambda関数(Go)を呼び出す
- 16. DjangoをLambdaで動かそうと思ったけどやっぱり向かないと思った話
- 17. AWS Step Functions 調査メモ
- 18. AWSのLambdaを使ってS3間のファイルコピーを試してみた。
- 19. AWS Toolkitの使用例(AWS Lambdaのリモート実行)
- 20. Golang + Lambdaでサーバレス開発時にWarning「Support for “package.include” and “package.exclude” will be removed with next major release.」が出た時の対応
AWSの API Gatewayを使ってLambdaを実行する。
## はじめに
先日、S3へのファイルアップロードをトリガーに、別のS3にそのファイルをコピーする簡単なLambdaを作成してみたが、今度は`API Geteway`経由でLambdaを実行する方法を試してみたので、その時の内容をメモとして残しておく。
※ 先日の記事はこちら。[**【AWSのLambdaを使ってS3間のファイルコピーを試してみた。】**](https://qiita.com/smiler5617/items/66eb929bd6bac7737615)## 今回やってみたい事
####片方のS3バケットの特定のプレフィックス中身を全て、もう片方のバケットに移動するLabmda①、および移動後のバケット中身(csvレコード)を取り出すLambda②を作成し、それらのLambdaをAPI Gateway経由で実行できる様にする。
![Qiita-no050_img01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654767/6c60516c-c57a-5f6f-b043-01886
Lambdaを定期的に実行する
## 前提
定期的に実行したいLambdaが作成されていること。## 手順
1. 定期実行用のCloudWatch Events のルールを作成する
1. 1.のイベントをLambdaに紐づける### 定期実行用のCloudWatch Events のルールを作成する
Amazon CloudWatch Events とは
ざっくり言うと、AWSの各種リソースを監視して、設定したルールに該当した時にイベントを発火させるサービス。
>Amazon CloudWatch Events では、Amazon Web Services (AWS) リソースの変更を記述した、システムイベントのほぼリアルタイムのストリーミングを配信します。すぐに設定できる簡単なルールを使用して、ルールに一致したイベントを 1 つ以上のターゲット関数またはストリームに振り分けることができます。CloudWatch Events が発生すると、運用上の変更が認識されます。CloudWatch Events は、オペレーションの変更に応答し、必要に応じて、応答メッセージを環境に送り、機能をアクティブ化し、変
lambdaでnpm moduleを使う方法
## 前提
Lambda Functionが作成されていること。
ローカル環境にnpmがインストールされていること。## 手順
必要な作業は下記
1. 使いたいnpmライブラリをローカルにインストールしてzip化する
1. Lambda Layerを1.のzipをもとに作成し、Lambda Functionと紐づける
1. Lambda Functionのコード上からnpmライブラリを呼び出すLambda Layerとは
>Lambdaレイヤーは、追加のコードまたはデータを含むことができる .zip ファイルアーカイブです。レイヤーには、ライブラリ、 カスタムランタイム 、データ、または設定ファイルを含めることができます。レイヤーを使用すると、コードの共有と責任の分離を促進し、ビジネスロジックの記述をより迅速に繰り返すことができます。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html### 使いたいnpmライブラリをローカルにインストールしてzip化する
今回はnpmラ
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 mainimport “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 jsondef 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: