- 1. DynamoDBのテーブルのレコード数をカウントし、CloudWatchでメトリクス表示する
- 2. LambdaでDataSyncのタスクの実行を自動化させる
- 3. Lambda→SNS→Chatbot→Slackへの通知がうまくいかない
- 4. 分散していたLambda関数をECS Task (Fargate) に移行する Tips (編集中)
- 5. Goを使ってDynamoDBに一括書き込み
- 6. ガロア群を計算するアプリケーション
- 7. 【AWS】API Gateway+Lambdaの構成にX-Rayを有効化
- 8. AWS CodeBuildを使ってSPAのフロント側を強制リロードする
- 9. AWS Lambdaを使って特定ログを通知する
- 10. AWSで実現した不動産新着物件情報のサーバレス巡回通知システム
- 11. Reactでaxiosを使用してAPI Gateway連携済みのLambda(Python)からOpenWeatherMap APIをFetchする
- 12. Lambda + DynamoDB を利用したサーバレス構築ハンズオン
- 13. SageMathコンテナをLambdaで実行する
- 14. boto3 APIで実装するAssumeRole(Python)
- 15. Private環境でパスワード認証(SecretManager + Lambda)のTransfer Familyを使ってEFSにファイルをアップロードしてみた(FTP)
- 16. AWS SDK V3 のSNS(Simple Notification Service)で、いくつか動作確認した話(AWS SDK V2 → V3 移行Tips)
- 17. AWS LambdaでSSM RunCommandを実行する(AWS SDK for JavaScript v3)
- 18. 【iOS】【AWS】はじめての個人アプリ(iOS+AWS)で開発からリリースまでやった話(苦戦あり)
- 19. Step Functions Distributed Mapで超高速な並列処理を実行してみた
- 20. 【AWS】動的Webサイト構築の備忘録
DynamoDBのテーブルのレコード数をカウントし、CloudWatchでメトリクス表示する
2023年1月現在、DynamoDBのレコード数を確認する
CloudWatchメトリクスがないためこの記事を投稿しました。# 全体の流れ
![画像4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1046178/99f54a83-933d-7ebb-1bd0-0c2ef9e88ca2.png)# 構築するリソース
・DynamoDB 適当のもの ・Lambda ランタイム: Python3.9 ・EventBridge 1分ごとにLambdaをトリガーするスケジュール ・IAMロール/IAMポリシー Lambda実行ロールとEventBridgeがLambdaを呼び出すロール
# 0. まずはじめに
手順1以降のコピー&ペーストを行いやすいように、AWSアカウントIDを変数に割り当てる“`shell:CLI
ex
LambdaでDataSyncのタスクの実行を自動化させる
# 概要
AWS DataSyncで作成したタスクをコンソール上ではなく、イベント駆動型でAmazon S3からAmazon EFSにデータ転送を行います。具体的には下記の流れを想定しています。
1. Amazon S3にファイルをアップロードします。
2. それがトリガーとなってAWS LambdaがAWS DataSyncを実行します。
3. AWS DataSyncでアップロードされたファイルをAmazon EFSに同期します。
4. Amazon EC2上でマウントされたEFSファイルシステム内を確認します。
![datatranfer.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429912/1af07d1c-190b-4cb3-9044-ba69cc08ea83.png)
# 注意事項
* AWSサービスに知見のある方を対象にしていますが、そうでもない方にも試して頂けると嬉しいです!
* 一つのリージョンでリソースを構築します。今回は東京リージョンで作成しま
Lambda→SNS→Chatbot→Slackへの通知がうまくいかない
## はじめに
Lambdaで取得した内容をSlackへ通知させようとしたときの話です。
以前、CloudWatchアラームをSlackへ通知させるために「SNS→Chatbot→Slack」の構成で実装した経験があったため、今回もその構成を使用したのですが、Slackへ通知されない、エラーも出ない、という状況に陥りました。## 原因
原因調査のために色々と調べていたところ、こちらの記事を発見しました。* [Amazon SNS から AWS Chatbot を経由した通知がうまくいかない原因と対処方法](https://dev.classmethod.jp/articles/tsnote-support-chatbot-launch-001/)
Chatbotは、[ドキュメント](https://docs.aws.amazon.com/chatbot/latest/adminguide/related-services.html)に記載しているサービスからの通知のみサポートしているとのことで、Lambdaがそのサービスの中にないことが原因と判断しました。
## 対処方法
分散していたLambda関数をECS Task (Fargate) に移行する Tips (編集中)
Step Functionで動かしていた複数のLambda関数を一つのECS Task(Fargate)に移行した時のメモ.
Lambda関数を使った実装はわかりやすいので今回は説明をパス.
主にECSにおけるタスクとサービスの違いや, タスク定義やランタイム環境でのつまづきポイント, AWS上での権限周りについてのメモ.##
## 実装したもの
GithubAPIをたたいてIssueのラベル分布の割合をmatplotlibで可視化した後にS3上に保存していくコンテナ(ECS Task)
### Fargateで動かすコンテナイメージのDockerfile
“`Dockerfile
FROM python:3.9.0RUN set -xe && \
pip install matplotlib \
boto3 \
PyGithub \
# matplotlibで日本語を使うためのライブラリ,
japanize-matplotlib &
Goを使ってDynamoDBに一括書き込み
aws-sdk-goを使ってDynamoDBを操作するメモです。
こちらの[リンク](https://docs.aws.amazon.com/ja_jp/code-library/latest/ug/go_2_dynamodb_code_examples.html)を見ながら基本的なCRUDは一通りできたのですが、一括処理はうまくできませんでした。
一括書き込みの箇所についてデモを作成しようと思います。### 環境
`go version 1.17.2``aws-sdk-go v1.44.180`
### 前提
DynamoDBにユーザ情報を一括登録する想定です。
ユーザ情報はHTTPリクエストボディから受け取ります。
Lambda上で受け取ったデータを構造体に変換し、DynamoDBに書き込みます。### 構造体を定義
ユーザ情報を表現する構造体を定義します。“`go:main.go
type User struct {
ID string `json:”id”`
Name string `json:”name”`
}
“`### リクエストボディか
ガロア群を計算するアプリケーション
# 初めに?
SageMath を使ってガロア群を計算するアプリケーションを作りました。?
– SageMath とは
https://www.sagemath.org/
– リポジトリはこちら
https://github.com/oiz-y/sage-lambda-container-app
# URL?
### https://www.galoisapp.com/
– 例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/619ae679-2bf5-745e-84dc-034c6de5659d.png)
# 開発?
バックエンドは AWS Lambda というサーバーレスサービスを使っています。
– AWS Lambda とは
https://aws.amazon.com/jp/lambda/
– システム構成図はこちら
![image.png](https://qiita-image-store.s3.ap-northeast-1.am
【AWS】API Gateway+Lambdaの構成にX-Rayを有効化
# はじめに
DVA試験対策でAPI Gateway+Lambda構成にX-Rayを有効化して挙動を確認しました。
本記事では、この構成にX-Rayを有効化する方法を記載します。# X-Rayとは
API GatewayやLambda等、各サービスの処理時間を記録するサービス
処理時間をコンソール上で可視化
どの処理でボトルネックが発生しているかを特定できる
Lambdaでは、X-Ray SDKを使用することで、Lambda内のAWSサービスへのリクエスト処理時間も記録# 構成
API Gateway+Lambda+DynamoDBの構成です。
Lambdaでは、DynamoDBテーブルにクエリし、返ってきたデータを返します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485934/8f6df9f8-3165-8462-8c46-087649d37b8e.png)・使用言語
Python(Lambdaでは3.9をランタイム環境として使用)・開発環境
OS
AWS CodeBuildを使ってSPAのフロント側を強制リロードする
# やりたいこと
– フロントエンド側をデプロイした後に、画面を開き続けてるユーザを強制的にリロードさせたい
– バージョン管理はできるだけ自動化したい# 作ったもの
1. AWS CodeBuildのbuldspec.yml
– 自動でバージョンを採番する
– バージョンをビルドしたモジュールに埋め込む
– 最新のバージョン情報をAWS S3にファイルとして保存する
1. バージョンを比較するAWS Lambda
1. 強制リロードするフロントエンド[![Image from Gyazo](https://i.gyazo.com/302304d16e665505f60ea5a381b865db.png)](https://gyazo.com/302304d16e665505f60ea5a381b865db)
# AWS CodeBuildのbuldspec.yml
`${CODEBUILD_RESOLVED_SOURCE_VERSION}`でCodeBuildが把握しているソースのバージョンを取得できます。([詳細](https://docs.aws
AWS Lambdaを使って特定ログを通知する
# Index
1. [挨拶&背景の話](#1-挨拶–背景の話)
1. [構成](#2-構成)
1. [実装](#3-実装)
1. [感想](#4-感想)# 1. 挨拶 & 背景の話
こんちには、アプリケーションエンジニアで働いてます。キムでございます。
この前、運用してるアプリケーション内で発生するとあるエラーを検知する処理を入れたことがあります。
そこまで素晴らしい構成ではないが、この構成を作るときに、なかなか私と似てる状況の例文がなくてここに少しでも似てる悩みがある方に役に立てれば…と思って記録して残します。# 2. 構成
#### 前提条件
– Cloudwatch Logsを使う
– FILTER機能はすでに別処理で動いてる
– 必ずリアルタイムでキャッチアップする必要はない
– 1日1回のアラームぐらいでも構わない要するに、Filterがすでに他のもので機能してるので、追加でなにかしたくて今回の構成を作りました。
正直Filterをもう少し汎用的に改善して運用することもいい案になったかもしれませんが、このような使い買ってもどうかなと思います。![i
AWSで実現した不動産新着物件情報のサーバレス巡回通知システム
# 不動産新着物件情報のサーバレス巡回通知システム
![名称未設定.drawio (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042708/6e32da1e-6d82-777c-646a-f8cb90416f03.png)
[掲載元](https://github.com/PGtanuki/reproject)
AWS各サービスを連携させ、SUUMOの検索結果を巡回して新着物件情報を通知します。
https://suumo.jp/
※requestsを用いたクローリングは直接的に利用規約違反にはなりませんが、負荷をかけることは禁止されています。どうやら新着物件情報は(SUUMOの場合は)1日に何度も頻繁には更新されないので、1時間以上に1回か、朝昼晩くらいの感じにしましょう。AWS無料枠の範囲に抑える観点からもそのほうが適しています。## 本システムを利用するメリット
+ 不動産サイト各社にはメール通知サービスはあるが、同一物件が通知されない保証はないのと、何社もメールを登録する個
Reactでaxiosを使用してAPI Gateway連携済みのLambda(Python)からOpenWeatherMap APIをFetchする
## 概要
タイトル長いですが、タイトル通りのこと実現するための手順を記載します。
それぞれの技術の深掘りはしません。
これを経ることで、最終的に東京の天気を開発者ツールのコンソールログで出力させることができます。## 目次
– 全体の構成
– OpenWeatherMapでAPIキーを発行する
– AWS Lambda(Python)でOpenWeatherMap APIをたたく
– Amazon API GatewayにLambdaを連携させてAPIをデプロイする
– ReactでAPI通信を可能にするライブラリ(axios)を使ってデプロイしたAPIをたたく(現在の東京の天気を出力)## 全体の構成
システムの全体構成は以下のようになっています。
※この構成を組んで何度かAPIを叩くくらいならAWSのコストは発生しない想定です
![lambda_api.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/754596/15968fa8-b376-8c59-36bf-a5294a846160.pn
Lambda + DynamoDB を利用したサーバレス構築ハンズオン
## はじめに
普段DynamoDBをあまり使用しないので、CFnの練習がてら構築していきたいと思います。学習に利用した教本は、[AWS Lambda実践ガイド 第2版 (impress top gear) 著:大澤文孝](https://www.amazon.co.jp/AWS-Lambda%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%E7%AC%AC2%E7%89%88-impress-gear/dp/4295013307/ref=asc_df_4295013307/?tag=jpgo-22&linkCode=df0&hvadid=553954433678&hvpos=&hvnetw=g&hvrand=2164190274868650654&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009299&hvtargid=pla-1599229625688&psc=1&th=1&psc=1)
を利用しています。
GUI及び、SAMによる構築はありましたが、CF
SageMathコンテナをLambdaで実行する
# 初めに
[SageMath](https://www.sagemath.org/) の [Docker イメージ](https://hub.docker.com/r/sagemath/sagemath)を [AWS Lambda](https://aws.amazon.com/jp/lambda/)で実行する方法を書きます。
## 課題
記載した手順で一応コンテナ実行はできます。しかし Lambda 関数自体の実行はエラー終了します。解決方法についてはまだわかっていません。
# 手順
## 1) Dockerfile、sage スクリプトを作成する
### 1.1) Dockerfile、sage スクリプトを作成する
ディレクトリ構成は以下のようにします。
“`
/home/ec2-user/sage-demo
|—Dockerfile
|—run.sh
|—hello.sage
“`以下 3 つのファイルを作成します。
“`docker:
boto3 APIで実装するAssumeRole(Python)
## AssumeRoleとは
現在のIAMの権限から、異なるIAMロールへ権限委譲するときに利用するAWS API名。
本記事では、Lambdaに付与しているIAMロールからAssumeRole先のIAMロールへ権限委譲するための実装を後述。
![スクリーンショット 2023-01-13 11.04.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263017/3ca07396-fb58-9a97-f3dd-d3dcb2e38fad.png)
## IAMロールの構築
Lambdaに付与するIAMロールを作成
![スクリーンショット 2023-01-13 11.06.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263017/659edbd3-e797-91a7-a5eb-ab4b8420069d.png)AssumeRole先のIAMロールを作成(添付画像の信頼関係の設定必須!)
![スクリーンショット
Private環境でパスワード認証(SecretManager + Lambda)のTransfer Familyを使ってEFSにファイルをアップロードしてみた(FTP)
# 概要
Private環境でパスワード認証のTransfer Familyを使ってEFSにファイルをアップロードしたいと思い、色々ぐぐって調べてみました。その結果、以下のような記事がクラメソさんから上がっていて非常に助かったんですが、残念ながら記事ではPrivate環境用ではなかったので、Private環境用に直した流れを記載します。
[参考にしたクラメソさんの記事](https://dev.classmethod.jp/articles/upload-files-directly-to-efs-via-sftp-using-transferfamily-for-vpc-internet-key-password-authentication/)# 構成
構成は以下の通りです。PrivateなEC2からVPCEndpoint経由でEFSにファイルをアップロードします。Transfer Familyはパスワード認証なので、ユーザ名やパスワードをSecrets Managerに持たせて、Lambdaで認証します。
![名称未設定ファイル-ページ3.drawio.png](http
AWS SDK V3 のSNS(Simple Notification Service)で、いくつか動作確認した話(AWS SDK V2 → V3 移行Tips)
# はじめに
https://qiita.com/Syoji_Yonemoto/items/f96a4d10b05715e95d1c
引き続いて、今度は、SNS(Simple Notification Service)についても確認しました。
と言っても、それ程、確認したメソッドは多くありません。# 結論
SNS(Simple Notification Service)に関しては、私が普段使うメソッド群については、問題ありませんでした。
やはり、Firehoseだけが罠だったのでしょうか、、、# V2 と同じ使い方で問題なく動作確認できたメソッド
+ subscribe
+ publish# 余談
subscribeが、「何故あるのか?」というネタ話。その昔、SNS(Simple Notification Service)にLambdaをsubscribeするのに管理コンソールからは、「一覧に表示された100件の中からしか選択できない。」というイケてないUIだった時代があって、LambdaからARNを指定して、subscribeを追加するという運用をしていた時期が
AWS LambdaでSSM RunCommandを実行する(AWS SDK for JavaScript v3)
# 概要
LambdaからSSMのRunCommandを実行する処理の作成方法について記述します。言語は`JavaScript`でSDKのv3(バージョン3)で書いてあります。v3では、サービスのインスタンスを作成して、非同期で`send`メソッドを呼び出すというのが全サービス共通の書き方になります。`send`メソッドはPromise型を返します。何のアクションを行うかは`send`メソッドの引数の型によって判断されます。
## 公式ドキュメント
https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/
# サンプルプログラム
## 処理の流れ
SSMClient生成 → SendCommandCommand生成 → send実行 → ListCommandsCommand生成 → send実行 (RunCommandが終了するまで繰り返し) → send実行 → send実行 → …
注意点としては、RunCommandを実行した後その処理がサーバーで正常終了したのか異常終了したのかすぐにわからない点です。R
【iOS】【AWS】はじめての個人アプリ(iOS+AWS)で開発からリリースまでやった話(苦戦あり)
## 概要
2023年1月1日に、はじめて個人アプリをリリースしたので
開発からリリースまで苦労だらけだったので
同じようなところに苦戦するような人がいたり、参考になれば嬉しいです。
今回は全体感の話なので細かいところは別記事で追記していこうと思います。## なぜ個人アプリを作ろうと思ったのか
コロナで1週間何もせず寝込んでいた時に
よく使っていたアプリ自体の更新が止まっていて不便な思いをしたので
自分で新しいアプリを作ろうと思ったのがキッカケ## どういうアプリを作りたかったのか
FF14のまとめ記事と動画などを検索せずに見れるアプリ
最新情報が探しづらいし情報が古かったりするから最新情報だけ欲しいアプリを目指す。
![アプリレビュー説明資料.001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215997/7cf71fe5-538b-1523-4a20-bf5b55a9ea05.png)## バックエンド AWS開発編 (試しながら1〜2週間)
バックエンドは
Step Functions Distributed Mapで超高速な並列処理を実行してみた
## この記事で紹介していること
以前、投稿した[Lambda×Stepfunctions の繰り返し処理](https://qiita.com/yuken/items/36ca91c345919752fa4d)を環境へ展開した矢先、
re:invent2022で**Step Functions Distributed Map**が発表されました。(あと少し早ければ、、、)
この記事では、噂の新機能に関して紹介します!– Distributed Mapとは?
– どんな処理が向いている?
– やってみた体験レポート![Untitled (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2956558/0d9b63fa-3dca-cb15-15f8-e29c8ca9db0b.png)
## Distributed Mapとは?
Mapフローは以前からStep Functions にありました。
これまでのMapとの違いについてはAWS公式ドキュメントがわかりやすくまとめてくれています。
【AWS】動的Webサイト構築の備忘録
## はじめに
初心者の入門編として、AWSを用いて、動的Webサイトを構築する。
https://aws.amazon.com/jp/cdp/midscale-webservice/
## システム概略
システムダイアグラムは以下の通りである。![Frontend3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483556/c73ad07c-0dd5-362e-22be-17441cfbde05.jpeg)
使用したサービスは以下の通りです。
– フロントエンド
– AWS EC2
– AWS Route 53
– AWS Elastic IP
– [Let’s Encrpyt](https://letsencrypt.org/ja/)(無料のSSL認証書発行局)
– [お名前.com](https://www.onamae.com/)(日本最大級のドメインレジストラ、ドメイン取得サービスサイト)
ICANN(ドメイン、IP、ポートの