- 1. サーバーレス環境で構築する最新人気楽曲速報【spotipy】
- 2. AppConfigにデプロイされたときに設定内容をslackに通知する
- 3. Lambdaを大量に使うETLジョブを運用してきて発生した問題と対策を挙げていく
- 4. 【AWS】EvetBridgeとSNSの連携で、送信されるメール本文をカスタマイズする方法
- 5. IdentityStoreのdescribe_user()がLambdaで正常実行できない問題を解決する
- 6. SAM Local実行時にタイムアウトしてしまう問題への対策
- 7. 【Inspector】Lambda関数の脆弱性スキャン結果をSlackへ通知させてみた
- 8. CDK-CfnXXX系のLambda作成方法について
- 9. Chart.jsのグラフを画像ファイルに出力するAWS Lambda関数をコンテナイメージで構築する
- 10. LambdaのPythonライブラリ追加にEFSを使ったときのメモ
- 11. AWS FinchでAmazon LinuxのJupyterLab環境を作ってみた。Lambdaレイヤー作成用にも使える!
- 12. non-pure-Pythonの外部モジュールをLambda上で扱うのに苦労した話
- 13. [AWS CDK]SSMのパラメータストアに登録したデータを環境変数にセットする方法
- 14. Google AnalyticsのレポートをLambda&Pythonで取得しSlackに投稿する
- 15. AWS CDK + LocalStackでAWSサーバーレス環境をローカルに構築してみた
- 16. AWS SAM について初心者なりに見えてきたこと
- 17. AWS CDKとCDK Pipelinesでつくるサーバレスアプリケーション
- 18. 画像サーバーをLambda移管した時のお話
- 19. [AWS]SAMでTypeScriptがサポートされたので5分でAPIを作成する
- 20. AmplifyでAWS Serverless Expressを使用してCRUD処理を行う
サーバーレス環境で構築する最新人気楽曲速報【spotipy】
この記事は、Craft Eggアドベントカレンダー2022、9日目の記事です。
# ■はじめに
Spotifyのレコメンド機能は優秀だなと感じているデータアナリストの落合(@takumining)です。
今回は、Spotifyがレコメンドで使用しているデータを調べつつ人気が急上昇している楽曲をSlackに通知する仕組みを作ってみました。取得できるデータがとても面白いので、今後活用の余地も含めて備忘録として残したいと思います。# ■今回の内容
1) SpotifyAPIで毎日更新されているSpotify公式プレイリストを取得する。
2) 取得したデータをSpreadsheetに書き残す。
3) GASでスプレッドシートのデータを見て急上昇している楽曲があればSlackに通知する。※Lambdaだけで完結できる内容ですが、中間に非エンジニアでもデータ操作をしやすい目的でスプレッドシートをデータベースのように活用します。
(完成イメージ)
AppConfigにデプロイされたときに設定内容をslackに通知するこの記事は[モチベーションクラウドシリーズ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/mcs) 9日目の投稿です。
# はじめに
AWSにはAppConfigというアプリケーションの設定などを管理するサービスがあり、さらに今年の3月に機能フラグとしての利用に特化した機能もリリースされました。
https://docs.aws.amazon.com/ja_jp/appconfig/latest/userguide/what-is-appconfig.html
https://aws.amazon.com/jp/about-aws/whats-new/2022/03/aws-appconfig-feature-flags/
機能フラグ(Feature Flag)についてはこちらを参考にしてください。
https://www.atlassian.com/ja/continuous-delivery/principles/feature-flags
弊社サービスにおいてもAppConfigを機能フラグ
Lambdaを大量に使うETLジョブを運用してきて発生した問題と対策を挙げていく
## ジョブの概要
受け取ったファイルの情報を加工して、DynamoDB、RDS、S3に必要な情報をロードしていくジョブで、StepFunctionsのMapステートを用いて、受け取ったファイル単位にLambdaを並列に実行していきます。
このファイルが50件、Map処理の中のLambdaの数が10くらい。さらにこのStepFunctions自体が並列に10個くらい動く状態です。また、各Lambdaの実行状態をEFSで管理しているため、LambdaからEFSヘのアクセスが頻繁にあります。
![top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432063/acd861ed-dbc1-c1f3-4e7b-ca5fc195c17b.png)## Lambda.Unknown
“Task timed out after 900.10 seconds”
普段は2~3分で終わるような処理で処理が終わらずタイムアウトが発生したのでAWSに問い合わせたところ、”お客様が確認されたタイムアウトエラーは当該 L
【AWS】EvetBridgeとSNSの連携で、送信されるメール本文をカスタマイズする方法
# 1.はじめに
どうも、ARIの名古屋支社に勤務している愛知県民こと、
新藏(にいくら)と申します♪
(/・ω・)/以前、AmazonConnectでNGワードが検知された際にアラートメールを送信する方法
について記事にしました。https://qiita.com/Aichi_Lover/items/b819846033b7b02956ba
デフォルトだと以下の様なメールが届き、内容が少々分かりにくいです。
|![400_メールが届く.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/bb083a9c-ce95-0580-4a27-8bdd2b7610be.png)|
|:–|AmazonConnect → EvetBridge → SNS
という順番で連携していましたが、SNS送信用のLambdaを作成しAmazonConnect → EvetBridge → Lambda → SNS
という順番で連携させることでメールの本文をカスタマイズできました。そこで今回
IdentityStoreのdescribe_user()がLambdaで正常実行できない問題を解決する
## 課題
2022年12月8日現在、[boto3のIdentityStore](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/identitystore.html)(AWS IAM Identity Centerのうち、ユーザーアイデンティティー情報を取り扱うAPI)で`describe_user()`を実行しようとすると、期待した戻り値が返らない。具体的には、UserNameとUserIdしか返ってこない。
Azure ADからIdentity CenterにSCIMで連携されたユーザー属性情報を元にQuickSightのAPIを呼びたかったのだが、この状態では何の処理もできない。
## 原因
[GitHub](https://github.com/boto/boto3/issues/3436)で報告され、boto3側では既にFixされているのだが(boto3-1.24.64)、[Lambda側のランタイム](https://docs.aws.amazon.com/ja_
SAM Local実行時にタイムアウトしてしまう問題への対策
# はじめに
みなさま,こんにちは.
[株式会社オプティマインド](http://www.optimind.tech)にて,GISエンジニアをしている@tkmbnです.この記事は,株式会社オプティマインドの[2022アドベントカレンダー](https://qiita.com/advent-calendar/2022/optimind-locationtech)へのエントリー記事8日目として書いております.
# 概要
SAMを用いたLambdaアプリケーション構築時に,template.yamlからタイムアウト値設定をしていますが,
その秒数ではローカルテスト時(pytest)ではタイムアウトになってしまう問題がありました.
クラウド上での実行時のタイムアウト値とローカル実行時でのタイムアウト値を変化させたいと思い,
対処法をいろいろと探っていたところ,良さそうな対処法を見つけたので,ご紹介いたします.# 本題
## 現状の環境
– SAM テンプレートの内容
– API Gateway
– Lambda (複数)
– 複数Lambda内
【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処理を書く前に環境を構築します。
### 各