- 1. CircleCIでElasticBeanstalkデプロイしようとしたら、タイムアウトエラーになった
- 2. AWS Lambdaを使用してGlueジョブをトリガーし、SNS通知を送信する方法
- 3. 【AWS】terraformでSQSのメッセージをlambdaで処理してDynamoDBに保存する
- 4. [AWS #14] EBS
- 5. IAM Role Anywhere の AWS CLI設定
- 6. 【ディズニーランド】AWS summit行ってみた
- 7. S3とLambda、SESを用いてお問合せフォームを作成した話 2
- 8. 【AWS】Iot Coreで吸い上げたデータを別アカウントのSQSにルーティングする
- 9. AWS CLIでECRにログインする時にハマったこと。
- 10. AWS Transit Gateway の基本概念
- 11. EC2のキーペアを紛失してしまった時
- 12. GenU (Generative AI Use Cases JP) のアップデート方法
- 13. AMIに紐づけられていないsnapshotを削除する
- 14. 【雑】AWS Summitのアーカイブを見る
- 15. AWS上でWebアプリを個人開発する場合の注意点
- 16. 【AWS Summit】AWS Summit Japan 2024に参加してきました
- 17. 成功する基幹システムの刷新:AWS でZ会の迅速・柔軟な教育サービス提供を実現
- 18. 【AWS】Azure OpenAIをAWS Lambdaで呼び出そう!
- 19. awscli で ECS のログを CloudWatch Logs から取得する
- 20. Lambda(Node.js)からDynamoDBに接続したときに502(getaddrinfo EBUSY dynamodb.ap-northeast-1.amazonaws.com)が出たときの対処法
CircleCIでElasticBeanstalkデプロイしようとしたら、タイムアウトエラーになった
## エラー内容
`$ aws elasticbeanstalk update-environment –region ap-northeast-1 …..`
コマンドを実行したところ、デプロイはできているっぽいなんですが、以下のエラーが発生しました。
“`text
WARNING: terminal is not fully functional
Press RETURN to continue
….….
Too long with no output (exceeded 10m0s): context deadline exceeded
“`## 解決方法
CircleCIの設定ファイルに、`AWS_PAGER`を空文字に設定することで解決しました。
“`diff_text
deploy:
environment:
AWS_DEFAULT_REGION: ap-northeast-1
AWS_PAGER: “” # aws-cli v2で有効になったページングプログラムを無効にする
docker:
–
AWS Lambdaを使用してGlueジョブをトリガーし、SNS通知を送信する方法
## はじめに
この記事では、AWS Lambdaを使用して、特定のS3イベントに応じてGlueジョブをトリガーし、その結果をSNSで通知する方法を紹介します。コード例には、すべてダミーの情報が含まれています。## はじめに
AWS Lambdaは、イベントドリブンなサーバーレスコンピューティングサービスです。これにより、インフラストラクチャの管理を行わずにコードを実行できます。AWS Glueは、ETL(Extract, Transform, Load)ジョブを実行するためのマネージドサービスであり、AWS SNSは通知サービスです。
以下のコードでは、S3にファイルがアップロードされると、LambdaがトリガーされてGlueジョブを開始し、結果をSNSで通知します。
## コードの詳細
### 必要なライブラリのインポート
“`python
import boto3
from urllib.parse import unquote
import logging
import time
“`– `boto3`: AWS SDK for Python。AWSサービ
【AWS】terraformでSQSのメッセージをlambdaで処理してDynamoDBに保存する
## 概要
terraformでSQSのメッセージをlambdaで加工してDynamoDBに保存する
例として’deviceID’ と ‘createdAt’というカラムがあるデータの処理を実施する## ポイント
– SQSのメッセージはエンコードされているので受け取るlambda側でデコードが必要
– lambdaのソースコードはS3に入れて管理する## 構成
“`
.
│ backend.tf
│ data_transfer.tf
│ variables.tf
│
└─lambda_function
│ lambda_function.py
│
└─output
functions.zip
“`## ファイルの中身
`backend.tf`
“`
terraform {
required_providers {
aws = {
source = “hashicorp/aws”
version = “~> 5.0”
}
}
cloud {
org
[AWS #14] EBS
## はじめに
こんにちは
今回はコンピューティングサービス分野の **「EBS」** についてご紹介いたします。
:rolling_eyes:これもどこかで見たことあるようなサービスですね
:upside_down:とあるAWSの**ストレージサービス**になります。## Amazon EBS
EBSとは **「Elastic Block Store」** の略称です。
EC2インスタンスにアタッチして使用するAWSの**ストレージサービス**になります。
※Elastic → 弾力がある、伸縮性がある(用途に合わせて**柔軟な使用ができる**特徴):rolling_eyes:ストレージは確か **「データを保管するもの」** でしたよね
:upside_down:パソコンやスマホ、ゲーム機器などでよく耳にしたり目にしたりするかと思いますね。:::note info
EBSは、EC2の**インスタンスのデータを保管**しておくことができ
IAM Role Anywhere の AWS CLI設定
IAM Role Anywhereの構築を行ったあと、AWS CLIの設定をする際にWindowsの証明書ストアにある証明書をつかうまでに少し悩んだのでその設定方法を書いておきます。
具体的には `.aws/config` の書き方および `aws_signing_helper` のオプションです。
以下の記事にあるように `aws_signing_helper` が証明書ストアをサポートしたので証明書ストアから読み込んでAWS CLIで使います。https://aws.amazon.com/jp/about-aws/whats-new/2023/07/iam-roles-anywhere-credential-helper-os-certificate-stores/
証明書ストアのサポートは `1.0.5` からのようですが、今回設定したのは `1.1.1` です。
参考になれば幸いです。今回 CA は ADCS です。クラスメソッドさんの記事が参考になりますが、aws_signing_helperが証明書ストアを使用できるようになったため、証明書テンプレートでエクス
【ディズニーランド】AWS summit行ってみた
# 異様な京葉線
朝の京葉線は、ディズニーランドに行く人々が多くを占めていました。
ウッディの帽子をかぶった少年と目が合い、私はこう思いました。———ぼくもディズニーランドに行くんだ。
# 舞浜で下りずに
舞浜でディズニーに行くお客様方は全員降車されます。
すると、車内の状況は一変。パソコンな雰囲気になりました。
ウッディたちはいなくなり、さながら、そこはAWSの資格試験のテストセンターの待合室に一変しました。
# 海浜幕張
サマーソニック以来に来ました。
Beckではなく、Jeff Bezosを見に来ています。到着は初日は10時半、二日目は9時半でしたが、
両日ともに、無料のお弁当はもう無くなっていました。# 【覇気】基調講演はアツい
立ち見推奨な気がしました。
というのも、立ち見することで、映像ではなく、実際に講演している人をその目で見ることができるからです。(もちろん良い席に座れれば見れますが)AWSに君臨する方々の生の声、身振り、それで覇気が伝わり、モチベーションになりました。
>高度な技術は魔法と見分けがつかない
こういう「盛って
S3とLambda、SESを用いてお問合せフォームを作成した話 2
前回の続きになります!
今回はHTMLの更新とAPIをたたくJSをS3にのせて実際にメールが送信されるか確認します。
前回記事はこちらhttps://qiita.com/sakura11054/items/47bba94339cb62f037ef#api%E3%81%AE%E4%BD%9C%E6%88%90
S3でサーバーレスなHPを立てるお話はこちら
https://qiita.com/sakura11054/items/0b5e8603d6d4f92ac746
https://qiita.com/sakura11054/items/a29741cf124ba315d892
# S3のファイルを更新
## HTML
今あるindex.htmlを以下のものに変更します。
何の変哲もない、単純な入力フォームですね。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/273072/4f3d8d9c-666f-1de6-d3ae-574f8aceaa7b.png)
“`html
【AWS】Iot Coreで吸い上げたデータを別アカウントのSQSにルーティングする
## はじめに
Iot Coreで吸い上げたデータをルールエンジンを使用して別アカウントのSQSにルーティングする方法を説明します。
### アーキテクチャ
1. **AWS IoT Core**: デバイスからのメッセージを受信し、ルールエンジンで処理。送信元アカウントになる
2. **Amazon SQS**: メッセージをキューイングし、異なるアカウントに配信。送信先アカウントになる![](https://storage.googleapis.com/zenn-user-upload/3ad723012f2e-20240625.png)
## 実装手順
### 前提条件
– AWS アカウントがある (送信元と送信先)
– AWS CLI の設定が済んでる
– AWS Iot Coreに対応したIoT デバイスがある### SQS キューの作成
送信先アカウントに Amazon SQS キューを作成します。
“`bash
aws sqs create-queue –queue-name MyQueue
“`
※SQSのURLを後ほど使うので記録します
AWS CLIでECRにログインする時にハマったこと。
レガシー環境の更新をしていて、awscli周りでハマったので残します。
## TL;DR
– AWS CLIのバージョンがv1だった
– Dockerのバージョンが17だった## AWS CLIv1からv2へ
既存システムはこのように書かれていました。
“`sh
aws ecr get-login –region ap-northeast-1
“`AWS CLIをv2に上げたことによって非推奨になった書き方を変える必要がありました。
(今はv1でも非推奨になっているらしい。。)
https://dev.classmethod.jp/articles/aws-cli-v2-ecr-get-login-password/
“`sh
aws ecr get-login-password –region ap-northeast-1 | docker login –username AWS –password-stdin https://.dkr.ecr.ap-northeast-1.amazonaws.com
“`ここで`unkn
AWS Transit Gateway の基本概念
Transit Gateway (以降、TGW と表記) について、個人的に押さえておきたいところを書きました。
## TGW で良くなること
– VPC 間の接続が多数必要な場合に VPC Peering と比較して管理が楽になる
– VPC Peering の場合は通信したい VPC 同士をすべて Peering する必要があるので、VPC が増えるにつれて構成が非常に複雑になる
– TGW なら、通信させたい VPC をすべて TGW に繋げばよい
– 設定次第では、TGW に接続したすべての VPC/VPN 間で通信させることができ、この構成の場合は非常に簡単に設定することができる例えば 4 つの VPC を相互に通信させたい場合、VPC Peering だと下記のように、非常に複雑な構成になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3769407/c6403bca-5854-8081-f72e-53720bf0ea52.png)
これが TGW
EC2のキーペアを紛失してしまった時
EC2のキーペアを、.sshディレクトリの中に保管するべきところを別のディレクトリに入れたままにして、誤って消してしまったことはありませんか?(私はありました…焦りまくりました…:fearful:)
もしかしてEC2の構築の最初っからやらないといけないの…と戦慄していましたが、心配ご無用です。なんと方法があります!私はこれにて無事でした。同じ境遇になってしまった方に届けば幸いです。
環境
linux/MacOS 使用# 1.新しいキーペアを作成
まずは焦らず新しくキーペアを作成していきましょう。
他に既存のキーペアがあり、そちらを利用する場合はこの工程はスキップしてもらっても大丈夫です。【手順】
**マネジメントコンソール**
→**EC2** コンソールへ移動
→左側メニュー内 **ネットワーク&セキュリティ**
→**キーペア**![スクリーンショット 2024-06-25 0.35.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822835/41d1a798-f0be-8
GenU (Generative AI Use Cases JP) のアップデート方法
# はじめに
GenU (Generative AI Use Cases JP) のアップデート方法を毎回忘れちゃうので、備忘録的にまとめます。アップデート方法は好みによってまちまちだと思いますが、自分は git reset –hard でローカル側の変更をすべて捨てる方法を採用しています。
というのも、`cdk.json` しか基本的に変更しないので、コンフリクトを考えるよりは、差分を手元にメモするだけで済むシンプルな手順で実行しています。
# 注意事項!
この手順は、ローカル側の変更を `cdk.json` のみ変更している前提です。たくさんのファイルを変更している環境の場合は、このアップデート手順は難しいこともあるので、適宜環境によって判断してください。
# cdk.json の差分を確認する
GenU の git clone している ルートフォルダに移動します。
“`
cd
“`git diff コマンドで cdk.json の変更差分を確認します。
“`
gi
AMIに紐づけられていないsnapshotを削除する
# 概要
バックアップ目的でAMI(とそれに紐づくsnapshot)を作ったはいいものの、AMIだけを削除してsnapshotを削除し忘れることはよくあるかと思います。
これらの忘れが積もりに積もって「EC2 その他」として請求が来てから気づくことがあります。そんなときに使える、AMIに紐づいていないsnapshotをすべて削除するスクリプトです。
# コード
“`
import boto3
import datetimeec2 = boto3.client(‘ec2’)
# AMIに紐づけられているスナップショットを取得
def list_used_snapshot_ids(ec2):
response = ec2.describe_images(Owners=[‘self’])
res = []
for image in response[‘Images’]:
snapshot_ids = get_snapshot_ids_from_image(image)
res += snapshot_ids
ret
【雑】AWS Summitのアーカイブを見る
AWS summitのアーカイブを見て、メモだけ残す
見たいものまとめたら23個になっちゃった、、、
5日までに見切れる気がしない、、、見たものから随時メモしていく
# サーバーレス開発のベストプラクティス ~より効果的に、より賢く使いこなすために~
[アーカイブ](https://japansummit.awslivestream.com/aws-30/live/)# AWS で実現する生成 AI データ分析基盤構築のベストプラクティス
[アーカイブ](https://japansummit.awslivestream.com/aws-31/live/)# AWS Amplify と Amazon Q Developer を活用した生成 AI アプリケーションの作り方
[アーカイブ](https://japansummit.awslivestream.com/aws-32/live/)# チームのつながりを Infrastructure as Code でデザインする
[アーカイブ](https://japansummit.awslivestream.com/aws
AWS上でWebアプリを個人開発する場合の注意点
# 0.はじめに
Webアプリを作って公開して終わり、ではなく、安全に運用し続けるためにはどうすればよいか。
調べた結果をまとめたいと思います。先日、とあるWebアプリを個人で開発し、AWSにデプロイしました。
インターネット上にWebアプリを自作して公開する資料が多数あり、参考にしていたところです。
しかし、セキュリティ面の対策について併記されている資料ばかりではなかったため、
最低限、注意しておくべきことを以下にまとめます。# 1.SSHのポートについて
EC2にRemoteSSHを利用してアクセスし、EC2上のデータを編集するというやり方が多く公開されています。
SSHの利用には22番ポートをAWS上で使えるようにする必要がありますが、
ここでインバウンドルールを **「0.0.0.0/0」にするのは危険な行為です。**![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3695614/8da65422-98d4-73a1-f3c7-d35d2380f64b.png)
【AWS Summit】AWS Summit Japan 2024に参加してきました
# AWS Summit Japan 2024 レポート
## はじめに
AWS Summit Japanは、Amazon Web Services (AWS)が主催するクラウドコンピューティングの最新トレンドや技術情報を学ぶことができる年次のイベントです。
2012年に日本で初のAWS summitが開催され、今年はなんと12回目の開催となります。AWS Summit Japanの講演は7月5日までオンデマンド配信されているので、会場に足を運べなかった方や、当日オンライン視聴ができなかった方は以下のリンクより、ぜひ視聴してみてください。
※視聴には無料の会員登録が必要となります。[AWS Summit Japan公式ページ](https://aws.amazon.com/jp/summits/japan/)
![IMG_4311 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3776083/76ca78f2-8313-493c-d082-d2a0f060be57.jpeg)
成功する基幹システムの刷新:AWS でZ会の迅速・柔軟な教育サービス提供を実現
# はじめに
受講セッションの個人的な所感と、メモです。
メモの内容は、誤字脱字などあるやもしれませんが、ご了承ください。# 概要
> Z会では質の⾼い教育サービスの迅速、柔軟な提供という近年の需要により、データを活⽤した個々の学習者への最適な対応が急務となりました。現在 IBM との共創を通じた基幹システムの刷新を進めています。コンテナ基盤として実績のある AWS によりスリムでクラウドネイティブな基幹システムを構築し IT とビジネス両⽅の柔軟性を向上させ、将来の成⻑に向けてシステム規模の拡⼤やデータ量の増加に備えることが AWS 選定の理由です。本講演ではZ会と IBM の取り組み事例を通して、成功する基幹システム刷新⽅法のコツを解説します。# 所感
教育分野、とりわけ子供たちへの、DXというのは多分我々大人社会のDXとは違ったものがあるんだろうなと、漠然と思っていました。
多分、子供達よりも、この今の環境で、どんな体制で、どんなデバイスで、どんな教育をするのか、大人の方が戸惑うことの方が多いんだろうな。小学校でも、GIGA端末を用いて自宅学習とか行われていますが、
【AWS】Azure OpenAIをAWS Lambdaで呼び出そう!
### はじめに
Azure OpenAIをAWS Lambdaから呼び出したい!
マルチクラウドっぽく、AzureのサービスをAWSから呼び出したかった。
さらに、Azure OpenAIもAWSから呼び出せたらいいですよね。
しかしながら、呼び出しまでにいろいろつまずいたのでエラーメッセージとともに対応方法を共有します。### 構成
構成はこんな感じ:point_down:です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3288944/53c3f70f-4476-b9a5-3bb8-068104a8ce79.png)
### やること
1. Azure OpenAIを作成、モデルをデプロイする。
2. AWS Lambdaを作成する。
3. AWS Lambdaレイヤーを作成、レイヤーの追加をする。
3-1. AWS Lambdaレイヤーを作成する。
3-2. レイヤーを追加する。
**4. AWS LambdaでAzure OpenAIを呼び出す
awscli で ECS のログを CloudWatch Logs から取得する
[warp]:https://www.warp.dev/
[filter-log-events]:https://docs.aws.amazon.com/cli/latest/reference/logs/filter-log-events.html毎回調べるのが面倒なので、自分用の雑メモです。
:::note
最近は GPT とか [warp] とかも出てきているので、こういうメモも不要になりそうですね👌
:::# やりたいこと
私の職場では ECS のログを CloudWatch Logs に送信して保存しています。
(ここはケースによって異なると思いますが) 下記の様なログを想定します。
* CloudWatch Logs の JSON 形式ログ。 `message` キー値にログ本文が入る
* ログ本文は ECS の JSON 形式ログで、エスケープされている。 `log` キー値にアプリケーション (コンテナ・プロセス) の標準出力ログが入っている“`json
{
“events”: [
{
“logSt
Lambda(Node.js)からDynamoDBに接続したときに502(getaddrinfo EBUSY dynamodb.ap-northeast-1.amazonaws.com)が出たときの対処法
# 事象
Lambda(Node.js) → DynamoDB に接続するがブラウザテストではうまくいく。
しかしJMeterでスレッド1~10で数分間負荷をかけると、最初のほうが良いが、しばらくすると 502エラー(getaddrinfo EBUSY dynamodb.ap-northeast-1.amazonaws.com)が断続的に発生する。# 対策(AWSからの回答)
handler内でAWS SDKのサービスクライアントを生成すると発生するとのこと。↓エラーになるコード
“`
import { DynamoDBClient } from “@aws-sdk/client-dynamodb”;export const handler = async (event) => {
const client = new DynamoDBClient({}); <==== handler関数の中で new DynamoDBCLientしているのがダメっぽい // 処理 }; ``` ↓対策済コード ``` import { DynamoDBClient