- 1. 非同期処理で立ち上げたlambdaのDLQはFIFOキューに入れられない
- 2. クラウドで堂々のシェア1位!AWS(Amazon Web Services)
- 3. AWS SAMでGo+API Gateway+Lambda+DynamoDBのサーバレスAPI構築をIaC化した
- 4. ハイパフォーマンスLambdaエコノミクス
- 5. AWS TimestreamのtimeカラムをLambdaでJSTに変換する際のTips
- 6. AWS SDK V3 のDynamoDBで、いくつか動作確認した話(AWS SDK V2 → V3 移行Tips)
- 7. AWS SSM RunCommandを利用してlambdaからEC2インスタンスを操作する
- 8. Stripe WebhookイベントのデータをKinesisのCosumer(Lambda)で受け取り、何らかのデータ更新をする
- 9. Lambdaのtimeoutを検知してSlackに通知する
- 10. メトリクスフィルター設定後、自動的にCloudWatchAlarmが作成されるようにしてみた
- 11. Lambda がマウントする EFS エンドポイントの Posix ユーザの嵌り
- 12. S3 イベント通知でLambdaを実行する構築ハンズオン
- 13. DynamoDB テーブルに保存されている項目にLambda 関数で、アクセスしたい時
- 14. 飲食店横断検索サービス「おうだん君」を作って公開してみた?
- 15. AWS lambdaを使ったslackとDocBase連携システム作成手順
- 16. Go言語をつかった Lambda関数の開発をもっと楽にしたい〜Codespacesを添えて〜
- 17. UnityとAWSを無理やり繋げて物体認識アプリ作成
- 18. LambdaでCognitoユーザプールのSub情報からCognitoのユーザを削除する
- 19. 【AWS CloudFormation】DependsOnでハマった話
- 20. 【Androidアプリ開発】S3に格納した画像のPre-Signed URLを発行し、kotlinで表示する
非同期処理で立ち上げたlambdaのDLQはFIFOキューに入れられない
当たり前といえば当たり前かもしれないですが、設計時点で気が付かなかったのでメモ。
非同期実行の例としてS3, API Gatewayを想定しています。青い矢印は正常に疎通が取れます。
![名称未設定ファイル.drawio (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882979/1db77976-0ba3-d5dd-fd2d-12ffa2bb4715.png)
# なぜこうなるのか
非同期実行でLambdaへ処理が流れてきたときに、Lambda内で並列的に同時実行されるためだと思います。要するに、流れてきたときには処理A, 処理B, 処理C, …という順序で流れてきたものが、再試行後の失敗時にはその順序が(例えば) 処理C, 処理A, 処理B, …と変わってしまっている可能性が高いためです。
そのためFIFOキューの特徴である順序を保つということが保証できなくなり、仕様上送信できないのではないかと思われます。
**※ですが、console上ではFIFOキューをDLQとし
クラウドで堂々のシェア1位!AWS(Amazon Web Services)
![aws.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2633992/fc7040ff-915a-e4de-99bd-f8262b8c4bfc.jpeg)
エスプリフォートでは積極的に新しい事を取り入れつつ、ビジネスシーンに合わせたインフラ及びシステム構成、セキュリティ、BCP対策などを考慮したご提案を心がけています。
これら磨きあげた技術力が、お客様に高いクオリティでシステムを提供する一助になっています。## はじめに
[今では当たり前!クラウドコンピューティング導入](https://qiita.com/espritfort_tech/items/4b5fc2c8b8a4b733ac88)
[新たなアプローチ!サーバーレスアーキテクチャ](https://qiita.com/espritfort_tech/items/83883ece946bf38f8bac)上記記事でご紹介した通り、クラウドサービスは今ではあらゆるシステムにとってなくてはならないサービスの一つになっていることは、既
AWS SAMでGo+API Gateway+Lambda+DynamoDBのサーバレスAPI構築をIaC化した
# はじめに
前回Goで作成したAPIの環境構築をSAMでIaC化しました。https://qiita.com/tkhs1121/items/7b193dcce19539f16761
# 環境
MacBook Air M1
開発言語 Go# 手順
AWS CLIとSAM CLIをインストールします。
“`shell
brew install awscli
brew tap aws/tap
brew install aws-sam-cli
“`AWSコンソールのIAMからアクセスキーを作成して、クレデンシャルを設定します。
“`shell
aws configure
“`前回のソースディレクトリにSAMの`template.yaml`を追加します。
https://github.com/tkhs1121/go-serverless-app-3
## ソースコード
“`yaml:template.yaml
AWSTemplateFormatVersion: ‘2010-09-09’
Transform: AWS::Serverless-2016-10-
ハイパフォーマンスLambdaエコノミクス
# はじめに
遅くれるとよくないもの、それは納期とAPIのレスポンスです。
納期はお客さんや仲間からの信頼を失い、APIのレスポンス遅延はエンドユーザを失います。
webAPI構築にLambdaを利用するシーンについてパフォーマンスを改善していくのかをお話できればと思います。Lambdaエコノミクスと謳っているとおり、Lambdaの前段にApiGatewayを配置したときのよくある構成をベースに、ボトルネックとなりなりうる箇所を紹介していきます。
![無題のプレゼンテーション_-_Google_スライド.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389053/60af2620-170b-51d3-fd75-77e33adbd0b3.png)# 対象読者層
・DynamoDB使ってみたいけど何に気をつければいいかわからない人
・RDS Proxy使ってみたいけど何に気をつければいいかわらかない人
・同じ構成でパフォーマンスがでなくて困ってる人# 負荷試験をはじめるまえに
まず、プロ
AWS TimestreamのtimeカラムをLambdaでJSTに変換する際のTips
# 問題
Timestreamにて“`time“`カラムが下記のように“`タイムゾーン無し&文字列“`として出力される場合があります。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/342722/d7f9fc4f-e0fa-2736-f51a-c3b3d9380dc2.png)
Lambdaで時間処理を行う場合、文字列では不便ですのでJSTに変換しなければなりません。
ですが、単純に“`str → date“`では変換できない事象が発生しましたので共有したいと思います。
できれば、レイヤーも追加せず簡単に行う方法かつ、python3.9に合うモダンな方法にしたい。# 解決策
そのままの状態では、dateフォーマットに合わないことがわかりました。
最初に文字列として取得できるので、**末尾の桁数を調整**することでやや力技ですが解決できました。“`python
from datetime import datetime
from zoneinfo impor
AWS SDK V3 のDynamoDBで、いくつか動作確認した話(AWS SDK V2 → V3 移行Tips)
# はじめに
https://qiita.com/Syoji_Yonemoto/items/e619d8199b7c8354248f
V3移行の動作確認の初手に、Firehoseを選んだせいかもしれないですが、V2で使ってたメソッドの互換があるか保証がないことが分かったので、普段、Lambdaで利用するAPIについては一通り、動作確認をしていっています。
今回は、DynamoDB編です。
# 結論
DynamoDBに関しては、私が普段使うメソッド群については、問題ありませんでした。
# V2 と同じ使い方で問題なく動作確認できたメソッド
+ putItem
+ batchGetItem
+ query
+ updateItem
+ updateTable# 余談
性能試験や、TTL未実装の時などには、createTableやdeleteTableも実行していた時もありましたが、日常的に使う物でもなく、その時がきたら追試をします。# まとめ
DynamoDBくらい主要どころになると、しっかり下位互換もされているようです。
引き続き、小ネタシリーズとして、
AWS SSM RunCommandを利用してlambdaからEC2インスタンスを操作する
# 目標
オートスケールで動かしているEC2インスタンス全てに対してLambda関数を実行することで、SSM RunCommand経由でコマンドを実行する# ドキュメント
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ssm.html# lambda関数の作成
ランタイム: Python3.9
アーキテクチャ: x86_64# コード
“`
import boto3
def lambda_handler(event, context):
boto3.client(‘ssm’).send_command(
Targets=[{‘Key’:’tag:Name’, ‘Values’: [‘ssm-test’]}],
Parameters={
‘commands’:[
‘touch test.txt’
],
},
Documen
Stripe WebhookイベントのデータをKinesisのCosumer(Lambda)で受け取り、何らかのデータ更新をする
## はじめに
本記事では、以下の図のようにStripeのWebhookをAPI Gateway→Lambda→Kinesisという構成で、API GatewayでWebhookを受け取り、それをKinesis Data Streamに流す、というイベント駆動の処理で、Kinesisに流れたデータを受け取り、何らかのデータ更新を行うサーバレスアプリケーション、具体的にはStripeのデータを更新するConsumer(Lambda)を開発してみたいと思う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372684/5ea06a37-dc64-3948-3eeb-e989848c1e6b.png)※上記の構成のメリットとして、KinesisのConsumer(データを受け取る側)を複数配置する事ができるので、マイクロサービスが複数あればそれぞれのマイクロサービスに関連する処理を別のサーバーレスアプリケーションを開発可能である、というのがあるだろう(図中の`Lambda→RDS Pr
Lambdaのtimeoutを検知してSlackに通知する
Lambdaのtimeoutを検知してSlackに通知する。
検知Lambdaが、検知対象のLambdaCloudwatchのtimeoutをトリガーとして、SNSを配信する。
# やること概要
* SNSを作成する
* timeout_checkのLambdaを作る
* テスト用Lambdaを作る# SimpleNoticeService(SNS)
## トピックを作成
名前と表示名 `lambda_timeout_check`
`スタンダード方式` (FIFOでも変わらないと思う)## サブスクリプションの作成
プロトコル: `EMAIL`
宛先: `Slackのチャンネルのメール`サブスクリプションを作成すると初回のみ認証メールが届くので、メール内リンク `Confirm` を押す。
# テスト用Lambda
## コード
意図的にタイムアウトするよう処理を書きます。
`hoge-timeout-tester`“`python:
import json
import timedef lambda_handler(event, context):
メトリクスフィルター設定後、自動的にCloudWatchAlarmが作成されるようにしてみた
# はじめに
こんにちは、山田です。
今回はメトリクスフィルターが設定されたら、自動的にCloudWatchAlarmが作成されるようにLambda関数を作成したので記載していきます。
よろしくお願いいたします。
# 概要図
概要図は以下の通りです。
![](https://storage.googleapis.com/zenn-user-upload/51c99428a733-20221225.png)
①:メトリクスフィルターとCLoudWatchAlarmの一覧を取得する。
②:取得した結果、CloudWatchAlarmに名前がないものに関しては、アラームを作成する。
**※前提条件※
メトリクスフィルター名とCLoudWatchAlarm名は同名とします。**
# Lambda関数
作成したLambda関数は以下になります。
“`python
import json
import boto3
import timecloudwatch_client = boto3.client(‘cloudwatch’)
logs_client = boto3.client(‘l
Lambda がマウントする EFS エンドポイントの Posix ユーザの嵌り
Lambda 関数を作成して、EFS にファイルを書き込もうとしたら、エラーになってしまう。
ちなみに、読み込みは問題なくできる。
一例では、ユーザIDを、1000にしろとか、1001 にしろとかなっているが、エラーになってしまう。何が悪いのか、設定が悪いのか、と思って確認しても、特に悪いところがない。
原因は、root がオーナーのファイルシステムに書き込もうとしていたためであった。
読み込みはできるということは、AWS 特有のポリシとかではないのは明らか。
ユーザーID を 0 にしたところ、問題なく書き込みができた。
(参考)
https://aws.amazon.com/jp/premiumsupport/knowledge-center/efs-mount-with-lambda-function/
S3 イベント通知でLambdaを実行する構築ハンズオン
## はじめに
『S3にオブジェクトが作成されると、EventBridgeを利用して後続のStepFunctionsを起動して、、、』のような案件を経験して、完全に『S3からのイベント通知の際はEventBridgeだ!』という凝り固まった偏見を持っていました。
全然そんなことはなく、S3のイベント通知には`Lambda関数`,`SNSトピック`,`SQS キュー`の方法がありますので、凝り固まらないように『S3にオブジェクトが生成されるとイベント通知を行い、Lambdaが実行される』構築を行っていきます。————
## 構成図
![](https://cloud5.jp/wp-content/uploads/2022/12/スクリーンショット-2022-12-25-9.02.14-640×250.png)————
## ハンズオン
### 構築の流れ
#### 1.Lambda作成
#### 2.S3作成
#### 上記の順番で構築を行なっていきます。
最終的には、S3からのイベント通知を受けて、Lambdaのログ(CloudWatchLo
DynamoDB テーブルに保存されている項目にLambda 関数で、アクセスしたい時
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/5cde6041-14ee-708d-00d9-ea2b22ea82f5.png)
___
__DynamoDB テーブルに保存されている項目にアクセスするLambda 関数を作成したい時に、使う項目を確認してみた。__
___AWSのサービスからAWSの別のサービスを利用する時にする事の基本は、
IAM ポリシーを作成し、IAM ロールにアタッチする。事だと、改めて、基本的な事を確認した。
DynamoDB テーブルへのアクセスを許可する IAM ポリシーを作成し、
このポリシーを Lambda 関数の IAM ロールにアタッチする。AWSのブログが、わかりやすかったので、ご紹介致します。
IAM ポリシーとロールを使用してアクセスを制御することで、認証情報をコードに埋め込む必要がなく、Lambda 関数がアクセスできるサービスを厳密に制御できます。このポリシーには、Lambda 関数が Amazon Clo
飲食店横断検索サービス「おうだん君」を作って公開してみた?
## 完成品
https://www.restaurant-search.net/出来上がったものがこちら!!
## 概要
アドベントカレンダーで色々tipsを書いていたのですが、最終成果物として1つwebアプリケーションを作ってみたのでそれの紹介## なぜ?
アプリケーションを作ろうと思ったきっかけは以下の2つ
– アドベントカレンダーを埋めるにあたって最終的に何かを目指して開発をしていったほうがネタが集まりやすそう
– 最近新しいサービスを作れてなかったから作りたかった## 「おうだん君」とは?
![スクリーンショット 2022-12-24 23.07.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83409/b3a4f08f-be58-4773-e287-7e9f6c206622.png)
おうだん君とは、タイトルに有るように**飲食店横断検索サービス**です。
皆さんお店を探す際にGoogleMapだったり食べログだったりRettyだったりいろんなサイトを見て判断の材料にして
AWS lambdaを使ったslackとDocBase連携システム作成手順
## やったこと
DocBase APIとslack WebhookURLを利用してAWS lambdaで、1日前(月曜日だけは金、土、日曜日の3日間)にDocBaseの自分が所属する事業部宛に投稿された記事を取得して、slackに通知するシステムを作成しました。## 背景
以下の記事に書かれている通り、DocBaseのオーナー管理者権限を持っていればDocBaseのWebhookURLを利用して簡単にslackと連携することができます。
今回、私は上記の権限がなかったため、DocBaseのメモ検索APIをlambdaで呼び出し、slackのwebhookURLを利用して通知するシステムを作成しました。
この先、同じようなシステムを作りたいという人が現れた際に、この記事が少しでもお役に立てれば幸いです。https://help.docbase.io/posts/13676
# 手順
## ①slackのWebhookURL発行
1.slack API( https://api.slack.com/apps )にアクセスする
2.`Create an App`を押して、`Fr
Go言語をつかった Lambda関数の開発をもっと楽にしたい〜Codespacesを添えて〜
メリークリスマス!
この記事は[朝日新聞社 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/asahi)の24日目の記事です。## TL;DR
Dockerコンテナ上で RIE と air つかってサクサク開発環境を作りましょう
サンプルは https://github.com/duck8823/sample-lambda にあります。
[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=581006091)## 今回の開発スタイル
こんな感じで開発するとしましょう。– スキーマをOpenAPIで管理したい
– Go でLambda関数を書きたい
– curl で動作確認したい
– ホットリロードほしい
– スキーマから生成されたクライアントを試したい## Lambda
UnityとAWSを無理やり繋げて物体認識アプリ作成
この記事は [NTTテクノクロス Advent Calendar 2022][Advent] 23日目の記事です。
NTT-TXの定行です。普段はARやVR関連の業務をしたり、たまにデータ解析の業務をしています。
今年もアドベントカレンダーに参加させてもらう事になりました。昨年はUnityで簡単なARアプリの実装手順の記事を書いています。今年はUnityとAWSを連携させたアプリ実装について書いてみようと思います。UnityやAWSを勉強中の人で何かアウトプットをしてみたいと思っている人は是非トライしてみてください。
今回作るアプリはこんな感じです。カメラで撮影した画像をAWSへ送信して画像に移っている物体の解析を行います。そして認識結果ををアプリ上に反映してみようと思います。
今回の構成はAIアプリをとして処理をする流れとしては最適ではなくアプリ上の表示もスムーズではありません。個々の要素を理解するためにとりあえず繋げてみたものになっています。
AWSの構築はすべて”ap-northeast-1”で行っています。
![構成.jpg](https://qiita-image
LambdaでCognitoユーザプールのSub情報からCognitoのユーザを削除する
# 概要
Lambdaでsub情報からCognitoのユーザーを削除する方法を紹介します。# 環境
– ランタイム:Python3.9
– リージョン:ap-northeast-1# Lambda関数
“`Python
import boto3cognito = boto3.client(‘cognito-idp’, region_name=’ap-northeast-1′)
user_pool_id = <ユーザープールのID>def get_cognito_user_name(sub):
response = cognito.list_users(
UserPoolId=user_pool_id,
Filter=’sub = “‘ + sub + ‘”‘
)user_name = response[“Users”][0][‘Username’]
return user_name
def delete_cognito_user(user_name):
r
【AWS CloudFormation】DependsOnでハマった話
## はじめに
はじめまして
Qiita初投稿です現在プロジェクトで初めて本格的にAWSに触れる機会を頂き、いくつか記事にできそうなネタができたので少しずつ投稿していけたらと思っています
今回はSAMテンプレートでLambdaを構築した際にリソース間の依存関係でハマった話を書きたいと思います
## 問題のテンプレート
### スタックの構成
* LambdaLayers
* LambdaFunction
* LambdaPermission
* CloudwatchLogsLogGroup“`template.yaml
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serverless-2016-10-31Globals:
Function:
Runtime: python3.9
Timeout: 180
Handler: lambda_function.lambda_handler
Architectures:
– x86_64
Layers:
【Androidアプリ開発】S3に格納した画像のPre-Signed URLを発行し、kotlinで表示する
## やりたいこと
S3においた画像イメージをLambda経由で取得しkotlinで表示する。## 問題
元々はS3に格納した画像をLambdaで呼び出し、ByteArray形式に変換してクライアント端末に渡していたのですが、Lambdaにはレスポンス6MBの制限があり、大量の画像データを扱えなくなりました。## 解決方法
S3のPre-Signed URLを使います。
Pre-Sined URLを使うと、S3オブジェクトへの限定的なアクセスを提供することが可能で、URLを渡すため、ByteArrayを渡すより格段に容量を減らせます。## 実装例
### S3
TESTバケットにsample.jpgを格納### Lambda
– 環境:AWS Lambda Python 3.9– アタッチするポリシー:
“`JSON
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “VisualEditor0”,
“Effect”: “Allo