- 1. 【Inspector】Lambda関数の脆弱性スキャン結果をSlackへ通知させてみた
- 2. CDK-CfnXXX系のLambda作成方法について
- 3. Chart.jsのグラフを画像ファイルに出力するAWS Lambda関数をコンテナイメージで構築する
- 4. LambdaのPythonライブラリ追加にEFSを使ったときのメモ
- 5. AWS FinchでAmazon LinuxのJupyterLab環境を作ってみた。Lambdaレイヤー作成用にも使える!
- 6. non-pure-Pythonの外部モジュールをLambda上で扱うのに苦労した話
- 7. [AWS CDK]SSMのパラメータストアに登録したデータを環境変数にセットする方法
- 8. Google AnalyticsのレポートをLambda&Pythonで取得しSlackに投稿する
- 9. AWS CDK + LocalStackでAWSサーバーレス環境をローカルに構築してみた
- 10. AWS SAM について初心者なりに見えてきたこと
- 11. AWS CDKとCDK Pipelinesでつくるサーバレスアプリケーション
- 12. 画像サーバーをLambda移管した時のお話
- 13. [AWS]SAMでTypeScriptがサポートされたので5分でAPIを作成する
- 14. AmplifyでAWS Serverless Expressを使用してCRUD処理を行う
- 15. Serverless Frameworkを使ってLambda + API Gateway + DynamoDBの環境を構築してみる
- 16. 【AWS Lambdaテスト】sinonで1つのLambdaで複数のDBを参照しているときのLambdaTest
- 17. ssh2-sftp-clientを使ってAWS Lambda(Node.js)からSFTPサーバーにファイルをアップロードする
- 18. AWS Lambda + Serverless Framework + Selenium でつまずいたこと
- 19. 40代おっさんREST API サーバーレスを学ぶ③
- 20. 絶対に止めれないシステムの作り方
【Inspector】Lambda関数の脆弱性スキャン結果をSlackへ通知させてみた
この記事は、「[Relic Advent Calendar 2022](https://qiita.com/advent-calendar/2022/relic)」の8日目の記事です!
# はじめに
re:Inventでリリースされたサービスを試してみる第3弾はセキュリティで有効化必須の「**InspectorによるLambdaの脆弱性スキャン**」になります。設定的にはコンソールをクリックして機能を有効化するだけ完了するもので、それだけですと物足りないので実際に脆弱性スキャンさせてSlackへ通知させるところまで確認してみようと思います。第1弾はこちら→[【re:Invent】Amazon EventBridge Pipesの検証と今後について](https://qiita.com/hedgehog051/items/3479d4fec43d01fd30f1)
第2弾はこちら→[【完全に】統合型DevOpsサービス「Amazon CodeCatalyst」【理解した】](https://qiita.com/hedgehog051/items/4a8cc0e03e0252e008
CDK-CfnXXX系のLambda作成方法について
### まず初めに
主にjavaとPHPをメインにプログラミングをしている一般人です。
自身初めてCDKを用いて設計・実装しています。(勉強中の為誤っている場合は教えていただきますと幸いです。)
少しでも誰かの役に立てば幸いです。### 対象者
– AWSを学び始めた人
– CDKを学び始めた人
– CDKを用いてLambdaを利用したい人### まず最初にCDKとは?
> AWS Cloud Development Kit (AWS CDK) は、使い慣れたプログラミング言語を使用してクラウドアプリケーションリソースを定義するためのオープンソースのソフトウェア開発フレームワークです。とあるように、JavaScript、TypeScript、Python、Java、C#等で記述することが可能です。
開発環境の複製も簡単にできるというメリットもあります。[詳しくはこちら](https://aws.amazon.com/jp/cdk/faqs/)
### この記事で説明すること
– CfnFunctionを使用したLambda設定方法
– policyDocumen
Chart.jsのグラフを画像ファイルに出力するAWS Lambda関数をコンテナイメージで構築する
## はじめに
こんにちは。READYFORでプロダクトエンジニアをやっておりますtoyocです。
この記事は「[READYFOR Advent Calendar 2022](https://qiita.com/advent-calendar/2022/readyfor)」の7日目の記事です。## 概要
AWS Lambda x [Chart.js](https://www.chartjs.org/) で画像ファイル出力する際に、コンテナイメージベースでデプロイすることで、めちゃくちゃめんどくさかった構築が、まぁまぁめんどくさいぐらいで済むようになったというお話です。
Chart.jsでグラフを書いたり、実際に画像出力する部分のコードは割愛します。## あらすじ
> 「いい感じのグラフをこのページに作ってほしい!」
「じゃあ[Chart.js](https://www.chartjs.org/)でいい感じのを作ろう。…ほいできた。」
「いいね!ページに載せるのはこれでいいんだけど、ページのサムネとかにも使いたいからこのグラフ画像化してくれる?」
「毎日データが変わるページだから
LambdaのPythonライブラリ追加にEFSを使ったときのメモ
AWSのLambdaでPythonのライブラリを読み込みたいときに、一番簡単な方法として、ライブラリをzipにしてレイヤーにアップロードするという方法があります。
ただしこれには制限があって、解凍後に500MBまでのファイルしかアップロードできません。
その解決策としては、
1. EFS(Elastic File System)を使う。
2. LamdaをDockerにする。という方法があります。
ここでは、より簡単な、EFSを使う方法をとった時のメモを残したいと思います(自分がやった時のメモなので、より良い方法があるかもしれません)。まず、インバウンドルールをタイプ:NFS、ポート範囲:2049にしたセキュリティグループを作ります。
![スクリーンショット 2022-12-07 6.53.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025503/4780f6ad-b871-f3a4-4517-adaf0c1dbc40.png)
使用するEFSを用意します。
EFSの管理画面にアクセス
AWS FinchでAmazon LinuxのJupyterLab環境を作ってみた。Lambdaレイヤー作成用にも使える!
# はじめに
FinchでJupyterLab環境作ります。
さらにLambdaレイヤー作成用にも使ってみます。# 開発環境
– MacBookPro 2018# Amazon LinuxのJupyterLab環境を作成
1.[Finch-v0.1.0-x86_64.pkg](https://github.com/runfinch/finch/releases)をインストール2.finchを初期化
$ finch vm init
~~~
INFO[0000] Using default values due to missing config file at “/Users/user/.finch/finch.yaml”
INFO[0000] “/Users/user/.finch” directory doesn’t exist, attempting to create it
INFO[0000] binaries directory doesn’t exist
INFO[0000] Requesting root access t
non-pure-Pythonの外部モジュールをLambda上で扱うのに苦労した話
# はじめに
こんにちは、GxPの@ttanaka-gxpです。
この記事はグロースエクスパートナーズ Advent Calendar 2022の7日目です。Serverless Frameworkを使ってnon-pure-Pythonの外部モジュールを含んだPythonアプリをデプロイした際に苦労した話です。
ハマりどころがあるというのは認識していたので覚悟はしていたのですが、思った以上に時間を取られてしまいました…
その分、勉強にはなったので自分の中での整理も兼ね、今回記事にさせて頂きます。# やりたかったこと
RDS for SQL Serverに保存している基幹データに対し、関連システム向けに参照用途でのデータ連携の仕組みを構築したいというのが要件としてあり、API Gateway+Lambda+RDSの構成でデータ参照のAPIをPoCとして構築することになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/942766/0907b6cb-c0ea-6ccc-552
[AWS CDK]SSMのパラメータストアに登録したデータを環境変数にセットする方法
## はじめに
この記事は、[ミロゴス Advent Calendar 2022](https://qiita.com/advent-calendar/2022/milogos) 7日目の記事です。LINEのチャネルシークレットとアクセストークンをSSMパラメータストアから取得してlambda環境変数にセットした方法をまとめました。
## AWS Systems Manager(SSM)とは
> AWS Systems Manager は、AWS クラウド で実行されるアプリケーションとインフラストラクチャの管理に役立つ一連の機能です。Systems Manager により、アプリケーションとリソースの管理が簡略化され、オペレーション上の問題の検出と解決にかかる時間が短縮されるほか、AWS リソースを大規模かつ安全に管理できるようになります。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/what-is-systems-manager.html## AWS Systems Manager
Google AnalyticsのレポートをLambda&Pythonで取得しSlackに投稿する
## まえがき
### やること
Google Analyticsで集計したデータ(ここでは1昨日の投稿ごとのページビュー)をPythonで取得してレポートを作成し、Slackに投稿してみたいと思います。
PythonはLambdaで動かします。### 書くきっかけ
毎日、Google Analyticsで投稿ごとのページビューを確認しています。
スマホアプリで開いて確認したり、WEBで確認したりしています。
これをプログラムで行うことができないかと考え始め、[Google Analytics Data API](https://developers.google.com/analytics/devguides/reporting/data/v1)というものがあることを知り、挑戦してみることにしました。### 構成図
今回作成するものを構成図にすると、以下のようになると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252459/0d916d83-ebb7-d85e-5
AWS CDK + LocalStackでAWSサーバーレス環境をローカルに構築してみた
# はじめに
昨年度書いた[こちらの記事](https://qiita.com/yasomaru/items/fa708a1f21a79e637868)のLocalStackが2022年7月に正式リリースされたということで、今年のアドベントカレンダーもLocalStackについて書きます。
今回はAWS CDK (AWS Cloud Development Kit)を使用し、LocalStack上にサーバレスアプリケーションを構築します。https://localstack.cloud/
# 環境構築
:::note warn
LocalStackの環境構築については、[こちら](https://docs.localstack.cloud/getting-started/installation/#installation)を参照してください。
:::## LocalStackの起動
LocalStackの起動方法はいくつかありますが、今回は以下のコマンドでLocalStackを起動します。
“`sh
localstack start
“`
AWS SAM について初心者なりに見えてきたこと
# 背景
一か月ほど、AWS Lambda 周りに取り組んできたので、ここらで一度振り返ってまとめてみよう想像力とは知識の再構築であることから、自分の理解しているものをまとめるのは役立つので
新しいことを学ぶときは、自身の理解していることを書き留めることは大切なはず、だって忘れるんですもの :hamster:
# sam command
`sam init` でプロジェクト名でフォルダを作成しつつ初期化
`sam build` で構築して
`sam deploy` でクラウドへ`sam sync` で、高速デプロイ
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-sync.html
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-sam-cli-c
AWS CDKとCDK Pipelinesでつくるサーバレスアプリケーション
# この記事について
AWS CDKv2でCDK PipelinesがGAになって大分たちますが、非常にラクにパイプラインが作成できて便利に感じました。
特に、サーバレスアプリケーションの場合は、Lambda関数を修正したのですぐに配備したい、というときに便利ですね。
この記事では、AWS CDKとCDK Pipelinesを用いて、以下のことを試してみます。1. AWS CDKを利用してAPI Gateway+Lambdaでサーバレスアプリケーションを配備します。
合わせて「開発面」「ステージング面」・・・なども意識して、1つのコードから複数面の作成を行います。
1. CDK Pipelinesを用いて、上記スタックをパイプライン化してみます。
1. CDK Pipelinesのself-mutatingを試してみます。すでにCDKでスタック作成している方も、これを参考にCDK Pipelinesにトライしてもらえると幸いです。
# この記事の対象者
– AWS CDKに興味がある方
– CDK Pipelinesに興味がある方# CDK Pipelines
画像サーバーをLambda移管した時のお話
# 0.はじめに
無尽蔵にアクセスが考えられる画像に対して、まずnginxへアクセスを行い、キャッシュを挟んだ上でリバースプロキシでApacheへアクセスし、S3から画像を取得し、指定サイズにリサイズを行った上で返すアプリケーションを運用していました。
サーバーへのアクセス数は月間で数億あったため、水平スケールを拡大して数年間動いていました。
ただ、ある日突然のアクセススパイクが発生し、サーバーが応答しない事態が発生しました。
応急的にサーバーの水平スケールを拡大して対応しましたが、そもそもこれアプリケーション挟む必要あるのか…と考えてサーバーレスサービスへの移管を検討しました。
旧環境はオンプレ環境だったため、S3へのアクセスも物理的コストが高かったため、Lambdaを採用して環境を移管する事にしました。
# 1.Lambda環境の構築
以前はPHPでAWS SDKでS3から画像を取得⇒imagemagickでリサイズを行っていましたが、Python3.9を採用したため、PILとbotoで画像処理とS3からの画像取得を行いました。
**※パスはお使いのS3に最適化
[AWS]SAMでTypeScriptがサポートされたので5分でAPIを作成する
1年前にはTypeScriptサポートされていなかったので無理矢理使っていました。
Template.yamlのCodeUriをTypeScriptのビルド先のJavaScriptを指定するって感じでね。。他いろいろ工夫していました。久々にSAMを触ってみるとネイティブサポートされていたのでサクッと立ち上げてみます。
以下参考です(てかまんまかも)。(最後にVSCode DevContainer含めたGit公開するので許してね)
https://dev.classmethod.jp/articles/typescript-native-support-in-the-aws-sam-cli/
https://aws.amazon.com/jp/about-aws/whats-new/2022/02/typescript-native-support-aws-serverless-application-model-cli-esbuild-public-preview/
# 環境
* Ubuntu-22.04 (WSL2)
* Docker(20.10.21)
* nodej
AmplifyでAWS Serverless Expressを使用してCRUD処理を行う
[ACCESS Advent Calendar 2022](https://qiita.com/advent-calendar/2022/access) の6日目になります。
この記事は、幅広いAWSサービスを活用できるプラットフォームのAWS Amplifyで、LambdaをExpressで構築できる`AWS Serverless Express` を使用して、DynamoDBと接続してCRUD処理を行う書き方についてとなります。
参考となった記事は「[Create a REST API integrated with Amazon DynamoDB using AWS Amplify and Vue](https://gerard-sans.medium.com/create-a-rest-api-integrated-with-amazon-dynamodb-using-aws-amplify-and-vue-5be746e43c22)」となります。ほぼその記事通りの実装となります。## 環境構築
LambdaでCRUD処理を書く前に環境を構築します。
### 各pac
Serverless Frameworkを使ってLambda + API Gateway + DynamoDBの環境を構築してみる
## 目次
1. Serverlessのインストール
2. サービスの作成
3. サービスをデプロイしてみる
4. API Gatewayの設定
5. DynamoDBの設定
6. まとめ## 1. Serverless Frameworkのインストール
Serverlessはnpmのパッケージとして公開されているため、ターミナルより以下を打つとグローバルにインストールされる。
“`shell
$ npm install -g serverless
“`正しくインストールできているかserverless –versionと打って以下の表示になっているかどうかで確認できる。
“`shell
$ serverless –version
Framework Core: 2.72.3 (local)
Plugin: 5.5.4
SDK: 4.3.2
“`
## サービスの作成Serverlessではサービスという単位で実行環境を構築しているら
【AWS Lambdaテスト】sinonで1つのLambdaで複数のDBを参照しているときのLambdaTest
# Lambda Testこんなときどうするの
シリーズ化できたらいいな~# AWS Lambdaで複数のDBをscanしてる、このDBをstubにしたい
以下のようなケースについて☟“`JavaScript:Lambda.js
//aws-sdkを定義
const AWS = require(‘aws-sdk’)//dynamo-DBを定義
const dynamo = new AWS.DynamoDB.DocumentClient()// 野菜DBから全取得
// Dynamoの野菜DBの内容をscan
var yasaiDB = await dynamo.scan({ TableName: ‘vegitable’ }).promise()
// 八百屋DBから全取得
var yaoyaDB = await dynamo.scan({ TableName: ‘Yaoya’ }).promise()“`
野菜DB、八百屋DBそれぞれから情報をscanしてきて、その情報をほにゃほにゃしてる状況。
このLambdaをsinonや
ssh2-sftp-clientを使ってAWS Lambda(Node.js)からSFTPサーバーにファイルをアップロードする
# イントロダクション
この記事は、[ミロゴス Advent Calendar 2022](https://qiita.com/advent-calendar/2022/milogos) 5日目の記事です。
AWS Lambda(Node.js)からSFTPサーバー宛にS3上のファイルを転送したいという要件がありました。
Pythonであればparamikoあたりを使うところですが、Node.js(TypeScript)で開発したかったのでライブラリを探してみました。
使い勝手がよさそうものとして `ssh2-sftp-client` が見つかったので使ってみることにしました。# ssh2-sftp-clientとは
– https://www.npmjs.com/package/ssh2-sftp-client
– https://github.com/theophilusx/ssh2-sftp-clientssh2-sftp-clientは、Node.jsのSFTPクライアントです。
[ssh2](https://github.com/mscdex/ssh2) のラッ
AWS Lambda + Serverless Framework + Selenium でつまずいたこと
これは YAMAP エンジニア Advent Calendar 2022 5日目の記事です。
https://qiita.com/advent-calendar/2022/yamap-engineers
# はじめに
以前に Heroku で Selenium を動かすということをやっていたのですが、諸般の事情により Heroku から AWS Lambda への移行が必要となりました。簡単にできるだろうと高をくくっていたのですが、いくつかハマりポイントがあったのでここに記しておきます。https://qiita.com/higuhey/items/565cad6f6cc37f66b153
# やりたいこと
とある Web サイトを表示して、スクリーンショットを AWS S3 に保存します。# 結論
最終的には以下の構成となりました。## 環境/バージョン情報
– serverless
– Framework Core: 3.24.1
– Plugin: 6.2.2
– SDK: 4.3.2
– ChromeDriver 2.40
– Headless C
40代おっさんREST API サーバーレスを学ぶ③
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## 前回
## REST API リソース作成
API Gatewayを開く
APIタイプを選択で REST API 選択
選択したら画面遷移しますので
![API作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/5d5f9ddb-3896-e69d-50c9-b6d619b17e3e.png)
プロトコルを選択を
REST新しいAPIの作成
新しいAPIAPI名を入れてください
入れましたらAPIの作成をクリック
### リソース
リソースを選びます。
次にリソースのアクションを選び
リソースの作成を選ぶリソース名を入れたら
右下のリソースの作成を
絶対に止めれないシステムの作り方
# 絶対に止めれないシステムとは
もちろん銀行システムとかのクリティカルなシステムもそうなのですが、今回は、そこまでではないのですが、データ連携上一部のapiは止めれないシステムを指します。
僕は直面したのが、Lineでのユーザー登録によるwebhookを受け取るって奴です。
昔のキャリアのユーザー登録であれば、止まっていた時には別途データが飛んできてまとめて処理とかも出来ましたが、Lineさんのはありません。ユーザー登録時のwebhookを取りこぼすと2度と受信出来ないのです。
同様にSNS等で登録時にwebhookが来て、対応する必要があるシステムもあると思います。
LINE、現在は再送機能があるみたいです。
https://developers.line.biz/ja/news/2022/04/19/webhook-redelivery/# どうすれば良いか?
先ず思うのは、AWSでLambdaで受け取って処理すれば良いと思うでしょう。
これでも良いのですが、Lambdaがエラー処理で落ちたりすることもあります。
## 最初の構成
![image.png](https://q