AWS関連のことを調べてみた

AWS関連のことを調べてみた
目次

Lambda関数の古いバージョンを一括削除するスクリプト

# 背景
 AWSのSAMテンプレートを利用しており、AutoPublishAliasプロパティを使い、Lambda関数にエイリアスとバージョンを設定しています。この場合、関数を更新するたびに新しいバージョンが作られるため、これを何度も繰り返した場合、気づかないうちにLambdaのストレージの制限である75GBを超えてしまう恐れがあります。
 現状、SAMのプロパティに古いバージョンのLambdaを削除するような設定は無く、[Issues](https://github.com/aws/serverless-application-model/issues/2719)を見る限り今後も実装されなさそうであるため、独自で古いバージョンのLambdaの削除を行う必要があります。
 今回は、問題が発生した場合にすぐに戻せるよう、最新から数バージョンは残しておきつつ、それ以前の古いバージョンは削除するようなスクリプトを作成しました。

# スクリプト

“`bash:delete-lambda-old-version.sh
#! /bin/bash
# 古いバージョンのLambdaを削除

元記事を表示

Lambdaを使うときのセッション管理方法

# LambdaはStatelessアーキテクチャ
Lambda関数は通常、ステートレスなアーキテクチャで実装されます。これは、各リクエストが独立しており、Lambda関数間で状態を共有しないことを意味します。この場合、セッション管理はクライアント側で行われることが一般的です。クライアントは、認証トークンやセッションIDを使用して状態を管理し、必要に応じてそれらをリクエストに含めます。

# 外部のセッション管理サービスを使用する
外部のセッション管理サービス(例えば、Amazon CognitoやAuth0など)を使用して、ユーザーの認証とセッション管理を行うことができます。これらのサービスは、ユーザーの認証情報やセッション情報を安全に管理し、Lambda関数からそれらの情報にアクセスすることができます。

# ステートフルなLambda関数
一部のユースケースでは、ステートフルなLambda関数が必要な場合があります。この場合、Lambda関数内でセッション状態を保持する必要があります。例えば、DynamoDBやElastiCacheなどのデータストアを使用して、セッション情報を保

元記事を表示

CloudWatch アラームを Redmine のチケットに起票する

# やりたいこと

CloudWatch アラームが ALARM 状態になったら Redmine のチケットに起票したい。

なお、Redmine チケットは次のようにしたい。

– プロジェクト: **test_project**
– トラッカー: **Alarm**
– チケットの優先度
– CloudWatch アラーム名に Critical が含まれる場合は、優先度 **Urgent** とする
– CloudWatch アラーム名に Error が含まれる場合は、優先度 **High** とする

# どうやるか?

Redmine API が提供されているので、これを参考に行う。

https://www.redmine.org/projects/redmine/wiki/Rest_api

# 構成図

実際は、CloudWatch metrics のアクションとして、Lambda を指定しますが、今回は Lamda からテストイベントを作成し実行させるので、CloudWatch metrics の作成は手順から省いています。
![redmine.png](h

元記事を表示

Bedrock Studioがプレビューリリース!早速試しました!!(構築方法と機能の紹介)

Bedrockのリリースラッシュが止まりません。

プレビューだった機能がGAになり、そろそろ落ち着くかと思ったら、**Bedrock Studioが爆誕!**

構築方法は難しくないですが、ところどころつまりどころはあるような気がしました。
というか、先に試してくれている人がいます!(いつもはやい)

https://dev.classmethod.jp/articles/bedrock-studio-preview/

途中、IAMロールを作るところが一番めんどくさいので、CloudFormationテンプレート作っておきました。
どうぞご利用ください。(URLは説明中にあります)

:::note
構築手順が長くなったので、折りたたみ表示にしています。
必要なところを開いて確認してください。
:::

## 前提条件

AWS Organization配下 **ではない** 単一のAWSアカウントを使用します。(IAM Identity Center周りが色々違いそうなので)

## IAM Identity Centerを構築してユーザー作成

元記事を表示

AWS Cloud9(Django)+S3+SQS+Lambda+SNS環境構築_目次

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

この記事は自分が連載(?)している『AWS Cloud9(Django)+S3+SQS+Lambda+SNS環境を作ってS3にアップロードされた時、メール通知をする』という記事をまとめた記事となります。

# 構築する環境

以下の環境を右から順番に連携させていきます。

![aws-django01-ページ6.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/426843a2-5d28-7283-96dc-22fb1cbe3e34.png)

最終的にCloud9に構築した以下のWebアプリからS3にデータをアップロードすることを可能にし、その際に自動でメール通知が飛んでくるような環境を作っていきます。

![2024050811.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/42fe1f99-36d

元記事を表示

AWS S3/SQS/Lambda/SNSにCloud9を連携し、メール通知を行ってみる[04]

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

今回はAWS S3,SQS,Lambda,SNS環境にCloud9をベースとしたDjango環境を追加して、Django経由でS3に何らかのデータがアップロードされた際にメールが通知される環境を構築していきたいと思います。
今回が想定では最後となります。

前回の記事は以下となります。

https://qiita.com/ohtsuka-shota/items/59821498db47ecbeed7d

また、DjangoからS3にデータを送るために以前私が作った以下の記事も軽く見てます。

https://qiita.com/ohtsuka-shota/items/cdb365fe164fbc48b528

全体の流れは以下にまとめています。

https://qiita.com/ohtsuka-shota/items/db74a418dabc261d9126

# 最終的な構築イメージ
以下環境を作っていきます。今回はCloud9/Djangoを実装していきます。
![aws-django01-ページ6

元記事を表示

AWS MGN は PowerUserAccessだとパワーが足りない

# AWS MGN とは

AWSのサービスの1つであり、Application Migration Service の略称です。
参考:[AWS Application Migration Ser vice (AWS MGN) 概要](https://www.youtube.com/watch?v=HktS_jCIv9Q)

オンプレミスの仮想マシンにMGNエージェントをインストールすると、少量のCPUリソースで動作します。接続されたストレージ機器がiSCSIであろうがSANであろうが、OSがローカルディスクとして認識していれば丸々AWSにコピーして、EC2&EBSにしてくれます。
VMWareではエージェントレスの選択肢もあります。

# PowerUserAccess とは

IAMポリシーの1つです。
**パワー**の文字が付いているように、ほぼすべてのサービスにフルアクセスする権限を持っています。
このIAMポリシーをアタッチしたIAMユーザーはいろんな操作ができて、強いです。

# PowerUserAccess で AWS MGN を実行

では、PowerUserAcc

元記事を表示

初めてCDKのスタックをコンストラクタを使って構造化してみた

初めまして、駆け出し12冠エンジニアのアスカです。今回、初めてAWS CDKスタックをコンストラクタを用いて構造化してみたので、その方法を記載します。初めてだと調べても書き方に自信が持てなかったです。
# 背景
初期は以下のような構成でbackend-stack.tsに全てリソースを定義して作成していました。
“`
backend/
-bin/
-bacend.ts
-lib/
-backend-stack.ts
-nodemdules/
-test/
“`
“`typescript: bacend.ts
import * as cdk from “aws-cdk-lib”;
import { BackendStack } from “../lib/backend-stack”;
import { AwsSolutionsChecks, NagSuppressions } from ‘cdk-nag’;
import { Aspects } from ‘aws-cdk-lib’;

const app = new c

元記事を表示

暇つぶし2

## AWSWAFで検知したエラーをZabbixのダッシュボードに出力しつつ、Slackで通知を受け取りたい

### 1.ざっくりした仕組み
WAF→Lambda→Zabbix→slack

### 2.構築/設定が必要なもの
・環境構築
・WAFとトリガーの設定(WAFの料金高いので、設定方法だけ調べてトリガーだけ作成します。)
・Lambdaの作成
・Zabbixサーバーの構築と設定
・slack(前回使った自前のやつ)

### 3.手順

※日曜やります。

### 4.テスト
WAF高いので、トリガーを手動実行してテストします。

※日曜やります。

### 5.感想

元記事を表示

Amazon GuardDuty を組織単位で管理したいなら知っておきたいこと [AWS Organization / Control Tower]

## Amazon GuardDuty とは

Amazon GuardDuty は、私が個人的に AWS の好きなサービスの1つで、 AWS のリソースに対する不審なアクティビティを検知するサービスです。
単一のチャネルに全てのアカウントの上記の通知を受け取るようにすることで、ある程度の安心感があります。

https://aws.amazon.com/jp/guardduty/

## 把握しておきたいこと

GuardDuty を組織で導入する際に、既存のアカウントや新しく組織に入れたアカウントにどのような影響が及ぶかを把握しておかなくてはいけません。
そこで、私が確認しておきたかった挙動を以下にまとめ共有いたします。

1. 「GuardDuty自動有効化」 が 「新しいアカウントについて有効化」 になっている場合について
– 既存のアカウントを新しく組織に入れた場合、それは “新しいアカウント” として扱われるのか
– “新しいアカウント” として扱われるので、有効化される
2. 新しく管理対象になるアカウントで既にGuardDutyの設定がある場合、

元記事を表示

Amazon S3 + Amazon CloudFrontでのコンテンツ配信

## はじめに
Amazon S3とAmazon CloudFrontを組み合わせてコンテンツを配信することは、ウェブサイトやアプリケーションのパフォーマンスとセキュリティを向上させるための強力な方法です。
本記事では、CloudFrontのコストやメリット等を解説します。

## CloudFrontとは
Amazon CloudFrontは、コンテンツ配信ネットワーク(CDN)サービスで、静的および動的なコンテンツを高速かつ安全に配信するためのプラットフォームです。
CloudFrontは、世界中に分散されたエッジロケーションを活用して、ユーザーに最も近い場所からコンテンツを提供することで、応答時間を短縮し、パフォーマンスを向上させます。

**主要な特徴**
①高速なコンテンツ配信: CloudFrontは世界中のエッジロケーションにコンテンツをキャッシュし、最も近いエッジロケーションからコンテンツを提供することで、ユーザーに高速なアクセスを可能にします。
②スケーラビリティと信頼性: AWSのインフラストラクチャを利用することで、高いスケーラビリティと信頼性を実現し、トラフィッ

元記事を表示

diagramsコードから構成通りのIaCをChatGPTに書いてもらう

Terraformの勉強がてら、Pythonパッケージ diagrams のコードを基に IaC コードを生成AIに書いてもらおうという取り組みです。

## 作成したい環境

“`python
from diagrams import Diagram, Cluster
from diagrams.aws.compute import EC2
from diagrams.aws.storage import S3
from diagrams.onprem.client import Client
from diagrams.aws.network import Endpoint

with Diagram(“Simple Diagram”) as diag:
with Cluster(‘VPC’):
with Cluster(‘Public subnet’):
ec2_pub = EC2(‘Public Instance’)
with Cluster(‘Private subnet’):
ec2_

元記事を表示

もしも明日DB障害が発生したら、あなたはどのように復旧しますか? ~RDSとS3を連携し、PITRで損失したデータを復元するプラクティスについて~

## 概要

データベースの論理障害が発生した際に、過去時点のデータをインポートし復旧する手順について説明します。

具体的には、ポイント・イン・タイム・リカバリ(PITR)で、任意の時刻のRDSクラスタを作成し、データをS3へエクスポート、その後S3から再度インポートすることで任意のテーブル・スキーマを過去の状態に復元します。

## 手順の概要

① ポイント・イン・タイム・リカバリ(PITR)で障害発生前のRDSクラスターを作成

② RDS が S3 にアクセスするための IAM ロールを作成

③ DBクラスターパラメータグループの設定

④ **`SELECT INTO OUTFILE S3`**/**`LOAD DATA FROM S3`** でデータを復旧する

## 手順の説明
### ① PITRを使用してデータを復元する

ポイント・イン・タイム・リカバリ(PITR)でRDSクラスターを過去の時点に復元するプロセスを説明します。

**PITRとは?**
PITRでは、リソースの状態を指定した過去の時刻に巻き戻すことができます。

今回はこの機能を採用し、RDSリ

元記事を表示

diagramsを使ってAWS構成図を書こうと思ったが導入でつまずいた話

AWSの構成図をPythonパッケージのdiagramsを使って書こうと思ったのですが、意外と導入でつまずいたのでまとめます。

## 環境
– Python 3.8.10
– pip 23.3.1
– Windows 11 Pro
– WSL 2.1.5.0

## 描画用プログラム
“`python
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.onprem.client import Client

with Diagram(“Simple Diagram”) as diag:
ec2_pub = EC2(‘Public Instance’)
ec2_pri = EC2(‘Private Instance’)
Client() >> ec2_pub
ec2_pub – ec2_pri

diag
“`
中身は何でもいいのですが、ひとまず描画できることを確認するためのものです。

## 導入手順
“`
$ pip insta

元記事を表示

MQTT の Session State についてざっくり理解する

# Session とは何か
`Client Identifier`(クライアントID)で識別される、クライアントとの接続を一意に表す概念。つまり、同じクライアントIDの接続が2つ以上同時に存在することはできない[^1]。

# Session State とは何か
文字通り、`Session`の状態を指す。以下の2つの状態がある。
– サブスクライブ状態
クライアントがどのトピックをどの`QoS`でサブスクライブしているか、という情報の集合。
– 未完了のパブリッシュ・シーケンスの状態
`PUBLISH`パケットや`PUBREL`パケットを送信したが、その応答パケットが返ってきていない、という情報の集合。これは、`QoS1`、`QoS2`にのみ適用される。

ブローカーは、以下の2つのいずれかの条件を満たすとき、`Session State`を維持する。
– クライアントが接続されている
– クライアントが切断されているが、`Session State`の有効期限が切れていない

[^1]:AWS IoTのブローカーの場合、あるクライアントIDを持つクライアントAがブローカー

元記事を表示

本当のガバメントクラウド基礎~利用方式と登場人物たち~

# 内容
社内でAWSの超基礎ともう一つ、ガバメントクラウドの基礎の動画を作成して欲しいとリクエストあり。その内容を資料化したものです。

https://qiita.com/infra365/items/84c41c250b0abcccc70b

# ガバメントクラウドとは
デジタル庁が提供する政府共通クラウド基盤です。標準化対象20業務の移行先としても利用されます。デジタル庁から認定されたクラウドサービスプロバイダー(CSP)の環境が使用されます。今回は自治体がガバメントクラウドを利用する話をします。

![スライド3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/2de69c27-568e-52a1-84a9-94db939fa683.png)

色々なCSPがありますが、AWSの話をします。

![スライド4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/0f3f3995-1c3

元記事を表示

ROSAでEBSを利用する際のバックアップ・リストア戦略

# 概要
[前回記事](https://qiita.com/naras/items/c598c2187cb47602a2de)ではROSAでEFSを利用する際のバックアップ・リストアについてご紹介しましたが、本記事ではEBSを利用する際のバックアップ・リストアの選択肢とそれぞれの考慮点についてご紹介します。

# ROSAでのEBSの使われ方
## EBSはデフォルトのPVとして利用される
EBSを利用するために必要なEBS CSI DriverはROSAにデフォルトで導入されており、PVを作成するデフォルト設定はEBSが使うようになっています。そのため、EFSのように利用者自身がCSI Driver Operatorを導入する必要はありません。

> To create CSI-provisioned PVs that mount to AWS EBS storage assets, Red Hat OpenShift Service on AWS installs the AWS EBS CSI Driver Operator (a Red Hat operator) and th

元記事を表示

【AWS SageMaker】NotebookインスタンスのCPUやメモリ使用率をCloudWatchで取得してみた

# 背景
AWS SageMakerのNotebookインスタンスにて、Pythonでのマルチプロセス処理を行いたいと思った時に、NotebookインスタンスのCPUやメモリ使用率が気になったので、それらを取得してみました。

# 取得方法(概要)
AWSのこちらのサイトの方法を試してみました。
具体的には、CloudWatchエージェントをNotebookインスタンスにインストールして、CPUやメモリ使用率を取得します。

https://repost.aws/ja/knowledge-center/sagemaker-resource-utilization

 => CloudWatch を使用して SageMaker リソース使用率を表示する

# 取得方法(詳細)
※この内容は2024年4月時点のものになります。
### 1. Notebookインスタンスのターミナルにて、CloudWatchエージェントのインストールコマンドを入力
Notebookインスタンスのターミナルを開きます。

![スクショ.PNG](https://qiita-image-store.s3.a

元記事を表示

EC2を柔軟に設定するためのCloudFormation Templateの作成

# 概要
本記事ではEC2をCloudFormationで作成する際に、様々なオプションに柔軟に対応する方法をご紹介します。

GUIでEC2を作成する場合、アタッチするEBSの数は簡単に増減出来ますよね?他にもVPCやSecurityGroupをリストから選択出来たり、EC2の作成ウィザードは非常に多くの項目を簡単に設定することが出来ます。
一方で組織のポリシーとしてEC2にプリセットしたい設定がある場合(例:特定タグの付与やリソース名称の指定etc)などは、あらかじめ値を指定したCloudFormation Templateを用意・利用して作成することで実現することが出来ます。
マルチアカウント環境においてもAWS Service Catalogを使えば、メンバーアカウントに対してCloudFormation Templateを配布することが出来ますので、EC2の作成ウィザードではなくService Catalogのメニューから配布されたCloudFormation Templateを使ってEC2を作成することで組織のポリシーを満たしたリソースの作成が可能です。

![imag

元記事を表示

Slack経由でRAGにコードレビューを依頼するBotを作成 〜 AWS SAM編

## はじめに

https://qiita.com/sakes9/items/3777330b25b236ac2841

前回の記事では、リーダブルコードの原則に従ったコードレビューを自動化できないものか・・と考えた結果、『RAGにリーダブルコードの原則を取り込ませてコードレビューをしてもらおう!!』という検証をしてみました。

![デモ動画.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3087076/e3ca044c-a7bc-3014-c69b-cb06714d0f23.gif)

検証環境の構築は **AWSマネジメントコンソール** を使用していましたが、今回は **AWS SAM** を使用して、より簡単に環境構築する方法の解説を行います。

使用するリポジトリは以下になります。

https://github.com/sakes9/sam-slack-review-rag

## 事前準備

### リージョン切り替え

全ての手順は「**東京リージョン**」で実施することを前提とし

元記事を表示

OTHERカテゴリの最新記事