- 1. EC2インスタンス起動/停止をLambdaで自動化してみた
- 2. samでlambdaのデプロイ
- 3. API Gateway でLambda実行後、特定のページにリダイレクトする ②
- 4. 内部ALBに静的IPアドレスを設定する
- 5. 【AWS】Transfer family for FTPを構築する
- 6. リクエストパラメータベースのLambdaオーソライザ
- 7. Lambda関数(Go)でSlack通知
- 8. 単一ファイルLambdaのデプロイ用PowerShell
- 9. step functions Mapを使用して動的に並列処理してみた
- 10. AWSの API Gatewayを使ってLambdaを実行する。
- 11. Lambdaを定期的に実行する
- 12. lambdaでnpm moduleを使う方法
- 13. LambdaのProvisioned Concurrency とは
- 14. maplistを実装してみた
- 15. 【AWS DOP学習】CodePipelineを使用してLambdaを作成するチュートリアルを、CloudTrailを覗きながらやってみた
- 16. AWS StepfunctionsでCloudFormationスタックをシリアルに実行する
- 17. AWS Toolkit とsam を使ってLambdaを実行(ローカル実行、API Gateway実行)
- 18. APIGateway+Lambdaで、WebページからEC2の起動・停止・スペック変更を操作する①
- 19. CloudFront+LambdaでBasic認証(htpasswd)を設定した
- 20. [Java] AWS Lambda + API gateway + S3でjsonファイルをいじるだけ (2)
EC2インスタンス起動/停止をLambdaで自動化してみた
## はじめに
Lambdaを使ったEC2インスタンスの自動起動/自動停止の環境を構築したので紹介します
きっかけは業務でcrontabファイルを使用しており`Lambdaに移行できるのでは?`と思い実装しました
一回構築してしまえばめんどくさい手作業が自動化できますしヒューマンエラーも防げるのでおすすめです## 対象読者
* 個人アプリのサーバー費用節約したい人
* EC2は触ったことあるけどLambdaは触ったことがない人
* 自動化に興味のある人## 前提
* AWSアカウント作成済み
* EC2インスタンス作成済み## 実装の概要
**実装時間: 30~60分**
1. IAMロールの作成
2. LambdaでEC2インスタンスの起動・停止処理を実装
3. Amazon EventBridgeで Lambdaを実行する時間を指定する## IAMロールの作成
AWSにログインして `IAM > ポリシー > ポリシーを作成 > JSONタブ`に進むとポリシー作成画面が表示されます
![スクリーンショット 2021-08-23 9.16.25.png](http
samでlambdaのデプロイ
# 目次
・samの導入
・sam init
・sam build
・samconfig.tomlの作成
・sam deploy# samの導入
brewによるインストール“`
$ brew tap aws/tap
$ brew install aws-sam-cli
“`もしくはpipによるインストール
“`
$ pip install aws-sam-cli
“`# sam init
対話形式でプロジェクトを作成します。“`
$ sam init
Which template source would you like to use?
1 – AWS Quick Start Templates
2 – Custom Template Location
Choice: 1
What package type would you like to use?
1 – Zip (artifact is a zip uploaded to S3)
2 – Image (artifact is an
API Gateway でLambda実行後、特定のページにリダイレクトする ②
#はじめに
前回の続きですが、題名の内容だけ知りたい方も参考になる書き方をします。前回の続きだと、⑧htmlから起動などのLambda実行後、htmlページにリダイレクトするよう設定します。
[APIGateway+Lambdaで、WebページからEC2の起動・停止・スペック変更を操作する①](https://qiita.com/holdout0521/items/f0cb3182bfb3785388a0)#事前準備
・Lambda作成
・ApiGateway作成
・S3などにhtmlを設置#やりたいこと
##初見の方用
`https:aaa.bbb.html`からLambdaを実行し(apiを叩き)、apiをリクエストしますが、レスポンス時`https:aaa.bbb.html`にリダイレクトさせます“`html:https//aaa.bbb.htmlページ
内部ALBに静的IPアドレスを設定する
## はじめに
本記事では、不定期にIPアドレスが変わる内部ALB に、内部NLB とLambda を使用して静的IPアドレスを設定する方法について紹介しています。どうしても内部ALB に静的IPアドレスでアクセスできるようにしたい場合の1つの案になります。
この構成に関する詳細は、下記のAWSブログで記載されております。
https://aws.amazon.com/jp/blogs/networking-and-content-delivery/using-aws-lambda-to-enable-static-ip-addresses-for-application-load-balancers/
## この案の全体構成図
![00_static_ip_alb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283246/fef594df-fc60-2e95-d976-d869ac178adc.png)##構築の簡単な流れ
###前提条件
内部ALB が構築済みであること。
(構成図内
【AWS】Transfer family for FTPを構築する
## きっかけ
– とある案件で現行システムを大体AWSにリフトアップする案件があり、既存FTPサーバをTransfer family for FTPを含む構成で実現したく、事前にカスタムIdp含む構築手順の検証をするため## 構築Step
1. Lambda 構築
1. API Gateway 構築
1. Transfer Family For FTP 構築
1. 動作確認(カスタムIDプロバイダ)### 1. Lambda 構築
– 新規Lambdaをデフォルト設定で作成
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3437393838362f32306664316662302d656334612d383264332d613566302d35656135343364393964396.png](https://qiita-image-store.s3.ap-northeast
リクエストパラメータベースのLambdaオーソライザ
リクエストパラメータベースのLambdaオーソライザ利用方法です。
リクエストパラメータベースの場合、以下の値をIDソースとして利用することが出来ます。
・ヘッダー
・クエリ文字列パラメータ
・ステージ変数
・$context変数今回はヘッダーに独自の「my-access-token」を設定してIDソースとして利用します。
■前提
・統合タイプ;Lambda関数
・Lambdaプロキシ統合を利用## CORS対応
独自のヘッダー項目「my-access-token」を利用するので
対象APIのOPTIONメソッドで許可する必要があります。1) 対象APIのOPTIONメソッド > 統合レスポンスを選択
![スクリーンショット 2021-08-18 23.45.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/815010/3ee4197d-58f5-0088-5bfb-9b5f18ef379f.png)2)ヘッダーのマッピングを更新
CORSを有効にしていると「Access-Con
Lambda関数(Go)でSlack通知
## はじめに
CICDの一環でGoのLambdaからSlack通知をする仕組みを構築したのでその備忘録を残す。
(CICDという事でリリース作業を想定したSlack通知を作ってみた。また、[AWS ChatbotでSlackからLambda関数(Go)を呼び出す](https://qiita.com/yuta-katayama-23/items/da16e8760bec47d7fd26)の続きで構築した。)https://github.com/yuta-katayama-23/Go/commit/bcdea5c74a439b1d64e1defe4cec1d30497baba6
## Lambdaの実装
今回はhttp POSTを自分でやるのではなく、[slack-go(Slack API)](https://github.com/slack-go/slack)を利用する### Slack Appの作成・Tokenの発行
`slack-go`を使うにあたってはSlack Appと認証のためのTokenが必要になるので、それらを作成・発行する
そのやり方は[こちら](https
単一ファイルLambdaのデプロイ用PowerShell
# 背景
Lambdaのデプロイって関連するオブジェクトがある場合や複数ファイルで構成されている場合は、
SAMとかserverlessを使うのが、メリットを多く受けられますが、
単一ファイルのシンプルなLambdaの場合は設定ファイルを書くほうが手を取られてしまいますよね# 対応方法
Lambdaのデプロイって、zipファイルを作ってAWSにアップロードすれば良いので、スクリプト書いたほうが早いと思い書いてみました“`powershell:upload.ps1
if((Test-Path app.zip) -eq “True”){
Remove-Item app.zip
}
Compress-Archive -Path .\app.py -DestinationPath app.zip
aws lambda update-function-code –function-name [Lambda名] –zip-file fileb://app.zip –profile [AWSプロファイル名]
“`# 所感
やっている内容はシンプルなので、処理の説明は不要か
step functions Mapを使用して動的に並列処理してみた
DMMデータインフラ部に所属している[yuua](https://qiita.com/yuua0216)です
DMMデータインフラ部では、一部プロダクトにて[aws step functions](https://aws.amazon.com/jp/step-functions/) を活用してプロダクト開発を行っております。# 背景
複数のサイトを運営しており、その際のデータを収集するため一部APIリクエストを使用しています
その際に正しい値がPOSTされているかを毎回手動でチェックしていたため
こちらをStep functionsを使用し並列に自動で行うための仕組みを作成しました。# 構成
今回はStep functionsのMapがどういうものなのかをわかりやすくするため
数値のListを生成し偶数か奇数かを判定する簡易的なLambda関数を実装し、step functionsで並列処理します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を`構築`を選択(僕はプライベートじゃない方で作りました