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

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

Aurora Blue/Green DeploymentでINT型のカラムをBIGINTへ変更した話

# 1. 背景
あるECプロジェクトで、AWS Aurora MySQLを利用しています。テーブルの主キー(IDカラム)を`INT`型の`AUTO_INCREMENT`に設定していましたが、購買履歴テーブルのレコード数が`INT`型の上限(2,147,483,647)に迫る状況に直面しました。
この上限に達すると、新規レコードの追加ができなくなり、サービス停止という重大な事態につながる可能性があります。そのため、カラムの型を`INT`型から`BIGINT`型に変更し、上限を引き上げる必要がありました。
本記事では、Aurora のBlue/Green Deploymentを用いて`INT`型のカラムを`BIGINT`へ変更する過程で直面した課題とその解決策についてまとめます。この経験が誰かの役に立てば幸いです。
なぜINTからBIGINTへの変更は大変なのか?については以下の記事をご参考ください。

https://qiita.com/dennis_wang/items/ba869fd0ffb81993516d

# 2. INTからBIGINTへの変更を行う案の概要
当初は以下の2種

元記事を表示

AWS DOP合格(更新)記(2024/8/26投稿)

# はじめに
この度AWSのAWS Certified DevOps Engineer – Professional認定試験を受験してきましたので、勉強した内容と受験した感想を書いておきます。
今回は更新目的の受験になります。

前回は3年前の12月に受験していました。

https://qiita.com/handy-dd18/items/3166f949b84bc15371a7

# 前提
* AWSのCICD周りのサービスは過去に業務で扱ってました
* AWS認定は全て取っています(詳細は[こちら](https://qiita.com/handy-dd18/items/d21d914bf1c475d777f2))
* PASは[こちら](https://qiita.com/handy-dd18/items/18e8a856906f97bbb964)
* DEAは[こちら](https://qiita.com/handy-dd18/items/cd9410fc2c02a28b4c1d)
* AZ-900/DP-900/AI-900/AZ-104/AZ-204/AZ-

元記事を表示

[AWS]猫でもわかった気になるRedshifts Serverless(更新系限定) 追加情報

## はじめに
### 記事内容について
[NTTテクノクロス株式会社](https://www.ntt-tx.co.jp/)の[メガクラチーム](https://www.ntt-tx.co.jp/products/aws/)に所属している加藤です。AWS関連の業務をしています。

この記事は私が2024年8月[JAWS-UG朝会 #60 セッション枠]()において発表した「[更新系限定]猫でもわかった気になるRedshift Serverless」おいて時間の関係で省略した内容について補足する記事になります。

### 目次
+ JAWS-UG 朝会 #60 セッション枠発表資料の抜粋+簡単な説明
+ セッション枠発表から漏れた内容(本記事の主たる内容)
+ Redshift Serverlessスナップショットの別リージョンコピーについて
+ Redshift Serverless DR環境構築について

### 記事の元ネタ
本情報は、私が2023年11月から2024年3月まで担当したプロジェクトで得たRedshift Serverlssの更新系処理に限定したノウ

元記事を表示

DDNS Now でドメインを取得してAWS Route53にネームサーバーを設定、EC2と紐づけしてみた

# 目的
勉強用にドメイン取得し、Route53を使ってドメインを登録、webページにアクセスできるようにします。

# 前提
– EC2にて簡単なWebページ(Hello Worldレベル)は作成済み。
– IPv4アドレスでWebページにアクセスし、表示できていること。
– Webページの作成方法は説明しませんので、予めご了承ください。

# 無料のドメイン取得方法
お名前.comとかもありますが、勉強用のため完全無料が良いと思い、**DDNS Now**を使用しました。

– DDNS Nowはこちらから
https://ddns.kuku.lu/index.php

# DDNS Now登録方法
メールアドレスなどの登録も不要で、パスワード設定のみですぐに取得できるため大変簡単です。
また、DDNS Nowで使用できるドメインは**f5.si**です

![DDNSNow1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3676304/218dfb8c-43c4-5979-6903-8da4b

元記事を表示

TFLintのAWSルールセットを導入する

# はじめに
AWS環境構築で terraform を利用するにあたり、TFLint というのが環境チェックに有効そうだったので検証してみました。
今回は AWS のルールセットを導入して試してみました。

# 概要
・Terraformのコードをチェックすためのフレームワーク
・プラグインとして利用

https://github.com/terraform-linters/tflint-ruleset-aws

# 導入方法
* .tflint.hclファイルの作成
“`hcl:tflint
plugin “aws” {
enabled = true
deep_check = true
version = “0.31.0”
source = “github.com/terraform-linters/tflint-ruleset-aws”
}
“`

* tflint –init の実施

# 検証
### ディレクトリ構成
“`bash:ディレクトリ構成
$ tree
.
├── modules
│ └── ec2

元記事を表示

Lookout for Metricsのアラート設定について

## はじめに
Lookout for Metricsで異常(Anomalie)検知した結果を、他のサービスと連携させて通知出来るようにしたいと考えました。
本記事ではAmazon SNS と連携してみます。
## 前提
・AWSアカウントがあること
・Lookout for MetricsでDetectorがActivate済みであること
※今回はLookout for Metricsのconteniousモードで作成したDetectorに連携させますが、Backtestモードでも設定方法は同じです。

## やること
今回はLookout for Metricsの異常(Anomalie)結果をAmazon SNS に連携しますので
以下の手順で設定を行います。
1.SNSトピックスとサブスクリプションの作成
2.ロールにSNSポリシーをアタッチ
3.Lookout for MetricsメトリクスのAlertの設定
## 1.SNSトピックスとサブスクリプションの作成
まずAmazon SNSでトッピクスを作成します。
SNSトピックスとは、メッセージを配信するための論理的なチャネ

元記事を表示

【AWS IAM】EC2を利用可能なユーザグループの作成手順

# 1. 概要
この記事では、 IAM IAMでEC2を利用可能なユーザグループを作成する手順を記載しています。

**<作成するもののイメージ>**
![ab.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3837534/924e745d-97ad-4c00-18ba-2f318a118368.png)

**<イメージ内の用語説明>**
※括弧つきは既に用意されたものを使います。
**IAM**
| 作成するもの | メモ |
|———-|———-|
| user1 | EC2サービスを利用できるユーザ |
| user2 | EC2サービスを利用できるユーザ |
| DeveloperGroup | u

元記事を表示

GitHubActionsでデプロイするAWS環境を簡単に変更したい

# はじめに
今回はGitHubActionsにて、同じCFnテンプレートを複数のAWS環境にデプロイすることとなり、それを記事として残していきたいと思います。
S3を例にGithubActionsの作成からCFnでの構築までを記述します。

# 目次
・GitHubActions
・CloudFormation
・最後に
・参考

# GitHubActions
GithubActionsが下記になります。
{AWSAccountId_A},{AWSAccountId_B},{IAMRole}は、任意の値を変更してください。

`on:`にて`environment`を追加することで、環境を選択するように設定します。
defaultを`dev`にすることで間違えて本番環境を選択するリスクを下げることをしています。

また、`aws-deploy`でAWS環境設定をする前に変数設定で、AWSアカウントを環境毎に変更したり、CFnに上書きするパラメータを変更しています。

“`yaml:Deploy-s3.yaml
name: Deploy-s3

on:
workflow_di

元記事を表示

SQL(Structured Query Language)の基本的な内容を整理してみました。

## はじめに
SQL(Structured Query Language)は、リレーショナルデータベース管理システム(RDBMS)でデータを操作するための標準的な言語です。SQLを使用すると、データベースに対してデータの挿入、更新、削除、検索などの操作を行うことができます。今回は、SQLの基本的な内容を整理してみました。

## 目次
1. [基本的な構文](#基本的な構文)
1. [高度な構文](#高度な構文)
1. [主キーと主キー制約](#主キーと主キー制約)
1. [主キーとユニークキー](#主キーとユニークキー)

### SQLの実行環境
SQLは多くのデータベース管理システムでサポートされています。
– MySQL
– PostgreSQL
– SQLite
– Microsoft SQL Server
– Oracle Database
– Amazon RDS(リレーショナルデータベースサービス)
– Amazon Redshift(データウェアハウスサービス)

## 基本的な構文

#### 1. データベースの作成
“`sql
CREATE DATABASE

元記事を表示

AWS Lambda(Node.js 18.x)でwkhtmltopdfを使用するまでの流れ

# wkhtmltopdfを使用することになった背景
## Puppeteerでは大容量ファイルに対応できなかった
私が開発しているLaravelのWebサービスでは書類をPDF生成するという機能があります。
今まではAWS Lambda上でPuppeteerを使用してPDF生成を行っていましたが、最近になってHTMLファイルの時点で65MBという巨大なファイルをPDF生成するケースが発生し始めてしまい、実行途中でブラウザのタイムアウトや切断が発生するようになってしまったため、緊急で他の方法に入れ替えなければならなくなりました。

## 他の選択肢の検討
最初に検討したのはLambdaを使用することを辞めて、[barryvdh/laravel-dompdf](https://github.com/barryvdh/laravel-dompdf)をWorker上で動かす運用でしたが、大きいHTMLファイルの処理に非常に時間がかかるため断念しました。
wkhtmltopdfはパフォーマンスに優れているのと、Lambda関数上でPuppeteerを使用している部分を入れ替えるだけで済むので、

元記事を表示

S3 Presigned URLを使ってハマった話

社内システムでアバター機能を作る必要があり、s3を利用して実装することにした。

## tl;dr
以下の点で躓きました。
1. ローカルとデプロイ環境では設定が異なる
→ ECSが自動的に環境変数を処理してくれる
2. CORS設定
→ AWSコンソールで設定する必要あり
3. 署名方式
→ クライアントで送るとき複合化をする必要があった

## なんでpresigned url?
### クライアントで直接送りたい
サーバーで画像の処理を行うと、何台しかない状態でオーバーヘッドの起きる可能性がある。
その反面、クライアントはユーザーの数ほど存在するため、画像の処理をクライアントに任せたいと考えた。

### 外部からs3にアクセスする方法
調べると、以下のような選択肢があった。
1. Public
→ 誰でもアクセスできてしまう。今回は社内システムなので外部に公開したくない
2. AWS SDK
→ IAM権限を持っているユーザーだけ
3. AWS CLI
→ IAM権限を持っているユーザーだけ
4. S3サイトホスト
→ 静的サイトを作っているわけではない
5. C

元記事を表示

AWS Well-Architected Frameworkについて詳しく見てみる【持続可能性の柱】

# 前段
Well-Architected Framework自体はよく聞くワードですが、その分量の多さ(とAWSドキュメントあるあるの若干の読みにくさ)にしっかりと読む機会がなかなかなかったため、ここで改めて自分なりに落とし込もうと思いました。

 Well-Architected Frameworkを読んで、「直訳過ぎて、何を言っているかわからないなぁ」となった時に見ていただけるような記事を目指しています。

※解釈に誤りがある場合はご指摘ください。
※ドキュメント本文そのままではないため、個人の解釈が入っている部分があります。 

**関連記事**
> ・[AWS Well-Architected Frameworkについて詳しく見てみる【運用上の優秀性】
](https://qiita.com/bonjiko/items/ce4202384e7e04dcc323)
> ・[AWS Well-Architected Frameworkについて詳しく見てみる【パフォーマンス】
](https://qiita.com/bonjiko/items/6111262b25c854d01dc

元記事を表示

CloudFormation 2024/08の更新(IaC ジェネレーターでのリソース検出とテンプレートレビューの機能強化)

# AWS CloudFormation IaCジェネレーターの更新
IaCジェネレーターで下記2つの機能が強化されました。
1. [スキャンされたリソースの概要](#1-%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%B3%E3%81%95%E3%82%8C%E3%81%9F%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%81%AE%E6%A6%82%E8%A6%81-%E8%A1%A8%E7%A4%BA) 表示
1. [テンプレート表示にAWS Application Composerを利用](#2-%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E8%A1%A8%E7%A4%BA%E3%81%ABaws-application-composer%E3%82%92%E5%88%A9%E7%94%A8)(参照のみ)

AWSの更新情報 [What’s New with AWS?](https://aws.amazon.com/new/?nc1=

元記事を表示

【AWSハンズオン】Bedrockエージェントにプレゼン資料を作らせよう!

# この記事は何?

生成AIブームは終わりが見えませんが、そろそろRAGは十分試したよという方も多いのではないでしょうか。次のトレンドと目されているのが、人間の代わりに自動で仕事してくれる「AIエージェント」です。

https://xtech.nikkei.com/atcl/nxt/column/18/00001/09497/

AWSクラウドの生成AIサービス「Amazon Bedrock」には、そんなエージェントを簡単に作れるマネージドサービス **「Agents for Amazon Bedrock」** という機能があります。

これを使えば、難しいPythonのコードをたくさん書かなくても、AWSのマネジメントコンソールでGUIをポチポチやるだけで賢いエージェントが作れてしまいます。

### 今回作るアプリ

![スクリーンショット 2024-08-25 12.13.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/dcb365f1-1a31-b5f4-b399-d9

元記事を表示

API GatewayでLambdaを呼び出してCORS対応する方法

# はじめに
こんにちは、もちもちMAXです。
今回はAPI Gatewayでプロキシ統合したLambdaを呼び出す時にCORS対応する方法を説明します。作成するのはREST APIで適当なパラメータをbodyに格納してPOSTできるところまでをやっています。

# 手順
ざっくりとした手順は下記の通りです。
1.API GatewayでLambda関数を紐づけたREST APIを構築
2.Lambda関数にCORS対応を追加
3.CORS対応確認

# Lambda関数の作成
各手順の説明の前に、今回呼び出すAPIの実体であるLambda関数を作成します。
![image (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463753/97bb1fea-bbf5-6d0b-9f3c-f46a575f60f2.png)

Lambda関数のコードは下記の通りです。
“`Python
import json

def lambda_handler(event, context):
# OPT

元記事を表示

AWS Peacock Management Consoleの機能を拡張してショートカットリンクをワンクリックで取得できるようにしてみた

# AWS Peacock Management Consoleの機能を拡張してショートカットリンクをワンクリックで取得できるように。

* AWS IAM Identity Centerを利用しているユーザがconfigにサブドメインを設定しておくことで開いているAWSリソースの[shortcut link](https://docs.aws.amazon.com/singlesignon/latest/userguide/createshortcutlink.html?icmpid=docs_sso_console)をピン留めした拡張iconをワンクリックすることで取得できるように機能拡張してみました。

* 参考:[ショートカットリンク](https://dev.classmethod.jp/articles/iam-identity-center-shortcut-links-aws-access-portal/)
* レポジトリ:https://github.com/MaSuCcHI/aws-peacock-management-console-fork/tr

元記事を表示

S3 上のログファイルを Glue, Athena を使ってクエリ検索可能にする

# はじめに
アプリや Nginx などのログを集約している S3 Bucket はあるのだが、分析するための環境がなく、S3 からローカルに落としてゴニョゴニョするか、サーバーに接続して `grep` コマンドなどを駆使するという辛すぎる運用があり、どうにかして欲しいと依頼があったため作成したものの記録。
※ここで使用する AWS サービスそのものの説明は割愛する。

# 目標
– 兎にも角にも Atnena でクエリ検索ができる
– LTSV や JSON 型のログファイルをいい感じに整形してクエリ検索しやすくする
– なるべく高速なクエリ検索
– 既存のリソースには手を加えない
– コストをあまりかけない
– Terraform で構築する(まずは手動構築、Terraform 化は後々。。。)

# 先に構成図
![S3 に出力されたログを Athena で検索する.drawio のコピー.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1131391/274be6bf-e612

元記事を表示

Amplify Gen2 でLambdaを定義したらesbuildされてソースがコンソール上で見えなくなる

## はじめに

Qiitaのアカウントを初めて作成してみて、投稿記事第一号です。
関西の製造業で働いてAWSを勉強中のエンジニアのヤタクマと申します。

今回、Amplify Gen2 を触り始めてAPI GatewayやLambdaといったバックエンド環境をTypeScriptで定義できるというのは便利だなと思い、触ってみたときのメモです。

もともと、Lambdaをpythonで構築していた過去がありSAMを使うとローカルと同じソースがコンソールでも展開されているのでそれと同じ感覚で Amplify Gen2によりCDKでLambdaを定義して試していたら勝手が異なっていたため自分なりに調べていたことのメモです。

## 環境情報

* AWS Amplify Gen2
* Lambda (Nodejs 20)
* 使用言語 TypeScript

## やったこと

1. Amplify Gen2 のチュートリアルの手順したがって、amplify-next-templateのソースをgithub上でとりこみ、Amplify上でデプロイを行いました

https://docs.a

元記事を表示

Cognito + React でメアド検証を行い、ユーザーを登録する

# はじめに
cognitoを使ってユーザー管理をしたい!と思ったのでreactと組み合わせて実装してみます。

## Cognitoユーザープールを作成する

Cognitoユーザープールを作成します。

![cap01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/3b445401-4e2d-2be4-6c2e-470cd7138c6e.png)

参考:

https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/cognito-user-identity-pools.html

### ユーザープール作成 ステップ1
サインインオプションを指定します。
今回はEメールアドレスとパスワードで認証したいので、
ここではEメールを指定しておきます。

![cap02.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/4f8

元記事を表示

数百の文章からAWS生成AIで話題を取得してみた(その1)

# 背景
少し盛っているタイトルとなり、すみません。
行ってみた事は下記になります。

* 数百の文章が保存されているcsvファイルを取得
* AWSのBedrockのtitanを使って、それぞれの文章を1536次元ベクトルに変換
* それぞれの変換した1536次元ベクトルを、umapで適当な次元に次元削減
* それぞれの次元削減したベクトルを、hdbscanでクラスタリング
* 同じクラスターに所属する文章を、AWSのBedrockのclaudeに投げて、話題を取得

イメージとしては、
「クラスタリングの結果、どのような話題かは分からないけれど、似た話題の文章でクラスターが構成されていると仮定して、それぞれのクラスター毎に属する文章をclaudeに「これらの文章の話題は何?」と投げれば、クラスターの数の話題を、数百の文章から取得出来るのでは?!」
になります。

数百の文章を直接claudeに投げる事も考えましたが、トークン数が多くてAPIリクエストの制約に抵触したり、「Garbage In, Garbage Out」ではありませんけれど、c

元記事を表示

OTHERカテゴリの最新記事