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

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

Amazon S3の各バケットの使用量一覧取得シェルスクリプト

多分こんな感じ。
リージョンは必要に応じて追記してください。

“`shell
#!/bin/sh

# 直近の値が分かれば良いので前日を指定
ymd=$(date ‘+%Y-%m-%d’ –date ‘1 days ago’)
start_time=”${ymd}T00:00:00Z”
end_time=”${ymd}T23:59:59Z”
period=86400

# 数値を人に優しくするよ
human_readable() {
# 小数で渡ってくるので整数化
num=$(echo $1 | awk ‘{printf(“%d\n”,$1)}’)

# 単位
units=(B KB MB GB TB PB EB ZB YB)

# 判定用の閾値
thresholds=(1 1024 1048576 1073741824 1099571627776 1125899906884629 1152921504606846976 1180591620717411303424)

# 処理
i=1
while [ $num -gt ${threshold

元記事を表示

CloudFormationとPyplateを使ってSecurityGroupのIngressに指定したIPアドレスを登録しよう!

## 概要
CloudFormationマクロの一つであるPyplateを使うことでCloudFormationテンプレート(yaml)内にPythonのコードを実行することができます
今回はPyplateを使ってSecurityGroupのIngressに指定したIPアドレスを登録する方法を例に解説します

## 前提
– VPCを作成済み
– 今回はPythonを使用します

## Lambdaを格納するS3バケットの作成
S3内のzipファイルからLambdaを実行するためのS3バケットを作成します
S3内のファイル群は公開したくないのでPublic Accessを全てブロックします

“`lambda-archive-s3.yml
AWSTemplateFormatVersion: 2010-09-09
Description: “S3 Bucket Stack For Account Setup”

# ————————————-
# Metadata
# ———————————–

元記事を表示

Bedrock のガードレールを日本語で確認する

Bedrock のガードレール機能なるものの振る舞いを日本語で確認していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573242/9f61fd95-39b5-9ea5-ca6e-e04ff552e5aa.png)

説明や設定は以下の記事が詳しいです!

https://qiita.com/hayao_k/items/45fef3047bf050b7ff34

# お試しプログラム

“`Python:guardrail.py
import boto3
import json
import streamlit as st

st.title(“ガードレールのテスト”)
guardrailIdentifier = st.text_input(“ガードレールのIDを入力してください”)
use_model = st.selectbox(“使用するモデルを選択してください”,(“Sonnet”,”Haiku”))
system_prompt = st.text_input(“

元記事を表示

Apache のアクセスログを CloudWatch Logs Insights で分析する

# やりたいこと

Apache のアクセスログを CloudWatch Logs Insights を使ってステータスコード毎に集計する。

# 前提

Apache のアクセスログは次の通り、CloudWatch ログに記録されているものとする。

“`
127.0.0.1 – – [14/May/2024:12:57:09 +0000] “GET / HTTP/1.1” 200 5 “-” “curl/8.3.0”
“`

Apache のアクセスログログを CloudWatch ログに吐き出す方法については本題ではないため、以下のページを参考にさせていただきました。

# CloudWatch Logs Insights で集計する

https://qiita.com/suuu/items/8387df88f134348f22c7#クエリ構文について

クエリ構文については以下のページを参考にさせてもらいました。

**

元記事を表示

RDS AuroraMySQL の VolumeBytesUsed の削減

データベースには2GBくらいしかデータが入っていないのに VolumeBytesUsed が130GBもあったため、調査&解消したので、メモを残します

## 結論
“`
OPTIMIZE TABLE <テーブル名>
“`
上記コマンドを実行し、VolumeBytesUsedが削減された

## なぜ VolumeBytesUsed に記録されているデータ容量より多く表示されていたか
VolumeBytesUsed には、記録されているデータ容量以外に、フラグメンテーションによる開放されていないストレージ容量を含んでいる

## データの開放余地のあるデータ容量を確認する方法
データベース名:information_schema
テーブル名:tables
の data_free の項目に未開放の容量が記録されている
以下のコマンドで確認可能
“`
SELECT
table_schema AS `Database`,
table_name AS `Table`,
ROUND(data_free / 1024 / 1024 / 1024, 2) AS `Da

元記事を表示

【Terraform】AWS ECR・ECSを使用して仕組みを理解する

# 今回の意図
Terraformとコンテナに対する知識が曖昧なためハンズオンを実施してより知識を深める。

## 参考資料
https://catalog.us-east-1.prod.workshops.aws/workshops/7ffc4ed9-d4b3-44dc-bade-676162b427cd/ja-JP
※この構成をTerraformを使用して作成、操作する

## 今回の構成図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3557022/e2d332f8-0d9c-1ac3-557b-6d2af6139fc1.png)
※cloud9→Terraformを使用して作成
## 基本設定
今回は東京リージョン(ap-northeast-1)で実施

## terraformでDockerを扱うために(環境準備)
AWS CLI のインストールと設定
Terraform のインストール
Docker のインストール

## AWS CLIの設定(設定済みであれば不要)

元記事を表示

[AWS] スイッチロール先のECRにローカルで作成したイメージをpushしよう(試行錯誤編)!!

# はじめに
:::note info
– この記事は紆余曲折し、エラーを解消しながらゴールまで突き進む物語です
– 最短の手順だけを述べたものではありません
– 少しでも皆さんのデバッグのヒントになればと思っております
:::

# 前提
– アプリケーションのdockerfileを作成済み
– IAMユーザー作成済み
– スイッチロール先の環境で操作を行います

# ECR(Elastic Container Registry)とは
Amazon Elastic Container Registry (Amazon ECR) は、セキュリティ、スケーラビリティ、信頼性を備えた AWS マネージドコンテナイメージレジストリサービスです。
Amazon ECR は、AWS IAM を使用するリソースベースの許可を持つプライベートリポジトリをサポートします。
これは、指定されたユーザーまたは Amazon EC2 インスタンスがコンテナリポジトリとイメージにアクセスできるようにするためです。
任意の CLI を使用して、Docker イメージ、Open Container

元記事を表示

よく使うAWS CLI

# 権限設定

“`shell
$ aws configure –profile {example-profile}
“`

# S3 一括ファイルダウンロード

“`shell
$ aws s3 cp s3://{example-bucket}/ ./dist –recursive –profile {example-profile}
“`

# S3 一括ファイル同期アップロード

“`shell
$ aws s3 sync ./dist s3://{example-bucket}/ –exact-timestamps –delete –profile {example-profile}
“`

# オプション

“`shell
–dryrun (空実行)
“`

元記事を表示

Cognito(Amplify v6) + React.jsで作るログイン・ソーシャルログイン機能

自分の備忘録、アウトプットの意を込めて。
超初心者なので間違ってる部分はご指摘いただけると大変助かりますm(__)m

## この記事でわかる事
– [Cognitoの概念について](#概念のお勉強)
– [React環境下でのCognito(Amplify v6)の実装方法](#react環境下でのcognitoの実装方法)
– [Googleアカウントでのソーシャルログイン方法](#ソーシャルログイン)

## 各種環境
**npm**
“`
10.5.0
“`

**node**
“`
v21.7.2
“`

**react**
“`
^18.2.0
“`
**aws-amplify**
“`
^6.3.0
“`

# 概念のお勉強
– [そもそもCognitoって何?](#そもそもCognitoって何?)
– [認証と認可の違い](#認証と認可の違い)
– [ユーザープール](#ユーザープール)
– [アイデンティティプール](#アイデンティティプール)

### ・そもそもCognitoって何?
> #### Amazon Cognito とは
>Amazon

元記事を表示

S3へアップロードされたことをトリガーに実行されるLambdaをCloudFormationで構築しよう!

## 概要
今回はS3へzipファイルがアップロードされたことをトリガーにzipファイルをLambdaで解凍する時に使用するS3とLambdaをCloudFormationを使って構築していきたいと思います

## 前提
– VPCを作成済み
– 今回はLambda用のPrivate Subnetを使用するのでNATゲートウェイを構築済み

## Lambdaを格納するS3バケットの作成
S3内のzipファイルからLambdaを実行するためのS3バケットを作成します
S3内のファイル群は公開したくないのでPublic Accessを全てブロックします

“`lambda-archive-s3.yml
AWSTemplateFormatVersion: 2010-09-09
Description: “S3 Bucket Stack For Account Setup”

# ————————————-
# Metadata
# ————————————-
Metadata:
AWS::

元記事を表示

ZoneIdとZoneNameの異なる組み合わせが見たかった

下記のページにあるとおり、AWSのアベイラビリティゾーンの実態であるデータセンターには物理的実体を示すアベイラビリティーゾーンID があり、AWSアカウントにより アベイラビリティゾーン名 と アベイラビリティーゾーンID は異なる組み合わせである可能性がある

https://docs.aws.amazon.com/ja_jp/ram/latest/userguide/working-with-az-ids.html

組み合わせを確認するために `aws ec2 describe-availability-zones` が使えるとのことなので、自分がアクセスできるAWSアカウントを全部確認してみたが、全部以下の結果だった。
リージョンを指定していないが `.aws/config` デフォルトのリージョンを指定しているためで、全部 東京リージョン(ap-northeast-1) だ

“`
$ aws ec2 describe-availability-zones –profile | jq ‘.AvailabilityZones[] | “\(.Zo

元記事を表示

AWS LambdaをDocker化する際の注意点と学びの備忘録

## はじめに
AWS Lambdaを使ってデプロイするときに、
Dockerイメージを使って、デプロイしたいケースがありました。

すでに、動いているLambdaをLambda Dockerへ変更する際に、
つまずきポイントがあったので、備忘録として、残しておきます

## Lambdaでコンテナイメージを利用とは?

Lambdaには、通常のLambda(ソースコードのみを記述するタイプ)と
Dockerイメージを利用するパターンが存在する
※Dockerイメージは、ECRから参照し、Lambda上で実行が出来る

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3747609/161d2b17-1359-8461-61be-afac9ba916b7.png)

### なぜDockerイメージを使うのか?
通常のLambdaとLambda Dockerには、仕様の一部に違う部分が存在している

今回、Lambda Dockerを利用したいと考えたのは、
通常のLambdaよりも、大き

元記事を表示

実は誰でも簡単にNotion のウィジェットを作れちゃう(勤怠管理ウィジェット in Notion)

# 初めに
タイトルの通りNotionのウイジェットって誰でも作れるんです!作ってみたら意外とウケが良かった!でも作り方知られてないみたいだし、ネットにも転がってなかったので記事書く!

### 背景
以前AWSの勉強も兼ねて、チームの勤怠管理を作った([その1](https://qiita.com/waiiioss/items/6c2ca747a55d3dca9224)、[その2](https://qiita.com/waiiioss/items/f35c1729bb3d17cfbc9e)、[その3](https://qiita.com/waiiioss/items/29a51fb8b8d63bd173c3)の三段に分けて記事にしたので良かったらみてください!)

### 問題点
必要システムとして作ったけど、実際に使うようになって感じた問題点を列挙すると
1. 勤怠を登録するために勤怠管理ページを開くのがめんどくさい
1. めんどくさいが故に忘れがち
2. 可視化意外と誰もみてない

機能だけしっかり作っても**体験してほしいUX**を考えられていないとこうゆう問題点が出てきがちで

元記事を表示

Amazon Monitronを自宅の金魚用エアーポンプにつけてみる

# はじめに

同僚がMonitron一式を私物(なんという気概)で持っていたので借りて検証してみました。

Monitronセンサーは自宅の金魚(虫かご水槽)のエアーポンプに乗せてみました。
まるで黒い象にまたがる太った象使いのようでなんだか偉そうなMonitronセンサーですが、養生テープでしっかり安定して嬉しそうにも見えます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538058/372b6f83-3aa7-4774-19c4-a0ada54039ec.png)

我が家において、センサーが汚損しない(借り物なので)屋内で、常に振動していて、それなりに熱を発しているものといったら、これしか思いつかなかったのです。

家電製品はMonitronの適用対象ではないのですが、まぁ検証なのでデータの取得ができればOKとします。

## Monitronってなんぞ?

Amazonが提供する産業機器用のセンサーデバイスとモニタリングサービスの総称で、振動と温度センサーを元に故障の予

元記事を表示

Cloud Formation IaC generator で既存環境を自動でテンプレート化してみた

## 最初に
今回はCloudFormation Template を作成したものの、インポートしてスタックを作成するところまでやってません。
### 参考にした投稿者様
取り組むにあたって以下の投稿を参考にしています。
リリース直後に投稿してくださる投稿者様、いつも大変感謝しております。
https://qiita.com/kanuazut/items/bcc648e33181db35cc6b
## 業務的な背景
 私はAWS上にサービスを構築して数年間運用しており、たびたび検証環境など類似環境構築の機会があります。
 ただしサービスのインフラはコード化されておらず、構築のたびに手順書を使ってAWSコンソール上でポチポチと作業していました。
 これが非効率な上に既存環境との差異も分かりづらく、同じことの繰り返しであるため知識としても得るものは薄いです。
 IaC化した方がいいとは思っていたものの、スケジュールの都合もありノウハウのない私がチャレンジするにはハードルが高くて悩んでいました。
## Cloud Formation IaC generatorとは
 2024年1月末にCl

元記事を表示

【AWS Storage Gateway】オンプレミスとクラウドのストレージを連携させる

# はじめに
AWS Storage Gatewayは、**オンプレミスとクラウドのストレージを連携させるためのフルマネージド型のハイブリッドクラウドストレージサービス**です。本記事では、**AWS Storage Gatewayの特徴と4つのゲートウェイタイプ**について解説します。

# AWS Storage Gatewayの特徴
### 標準ストレージプロトコル
Storage Gatewayは**NFS、SMB、iSCSI、iSCSI-VTL**などの標準的なストレージプロトコルに対応しているため、既存のアプリケーションを修正することなくAWSクラウドストレージを導入できます。

### フルマネージドキャッシュ
ローカルのゲートウェイアプライアンスが最近読み書きされたデータをキャッシュすることで、AWSに保管されたデータへの**低レイテンシーアクセスを実現**します。

### 最適化されたセキュアなデータ転送
Storage Gatewayは***SSLを使用してデータ転送を暗号化し、セキュリティ機能とアクセス制御をサポート**します。また、マルチパート管理、自動バッ

元記事を表示

SUUMOにて割安賃料物件を見つけよう_モデル作成編

![suumo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2664262/abb34c4e-889e-71ee-7a36-257fedaa8146.png)
# 概要
SUUMOにて割安な賃料物件を探しました。

#### 調査の流れ
調査は以下の3つに分割しました。
1. データ基盤構築編
2. モデル作成編(今回の記事)
3. アプリ作成編

# モデル作成

### 使用データ
1. SUUMOからスクレイピングしたデータ
2. 地価公示データ(https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L01-v3_1.html)

https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L01-v3_1.html

### データ探索

# 予測

# 次回の記事
スクレイピングしたデータを使って賃料予測モデルを作成します。

元記事を表示

【Python x AWS】「botocore.exceptions.ClientError…….is not authorized to perform: sts:AssumeRole」エラーの原因と解決法

# 概要

IAMユーザーでboto3を使ったら以下の権限エラーになりました。
解決できたので原因と解決方法を紹介します。

> botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::xxx:user/taro is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::xxx:role/xxxxx

# 原因と解決方法
エラーメッセージから、IAMユーザー`taro`に`sts:AssumeRole`操作を行う権限がないことがわかります。`sts:AssumeRole`操作は、一つのIAMエンティティ(ユーザー、グループ、ロール)が別のIAMロールを「引き受ける」ために必要なもの。

`Role`という名前が入っているのでややまぎわらしいですが、これ自体はIAMロールではありません。「アクセスキー」、「シークレッ

元記事を表示

【AWS】CloudWatch Syntheticsで模擬モニタリングを始めよう

# はじめに
Amazon CloudWatch Syntheticsは、AWSのサービスの一つで、**アプリケーションやウェブサイトの模擬モニタリングを行う**ことができます。本記事では、CloudWatch Syntheticsの基本的な概念と使い方について解説します。

# CloudWatch Syntheticsとは
CloudWatch Syntheticsは、スケジュールに沿って実行される設定可能なスクリプト(Canary)を作成し、**エンドポイントやAPIをモニタリングするサービス**です。Canaryは、実際のユーザーと同じ動作を模擬し、**アプリケーションの可用性やパフォーマンスを継続的に検証**します。
Canaryを使うことで、ユーザーが問題を発見する前に、問題を検出することができます。これにより、アプリケーションの信頼性を高め、**ユーザーエクスペリエンスを向上させる**ことができます。

# Canaryの特徴
Canaryは、以下のような特徴を持っています。

– Node.jsやPythonで記述されたスクリプト
– HTTPとHTTPSの両方のプロト

元記事を表示

Step functions でDynamoDBのテーブルを増分エクスポートする

# はじめに
Step functionsを利用してDynamoDBのテーブルを増分エクスポートするための方法を残します。

# 方法
– 以下のワークフローを作成。
– [このリンク](https://blog.usize-tech.com/dynamodb-export-job/)を参考にするとエクスポートの処理をStep functionsから呼べるが、増分エクスポートの場合はパラメータの設定にエラーが発生し実現ませんでした(解決方法があればどなたか教えてください)。エラーは下記に記載しています。

## CallExport (Lambda): 増分エクスポートの処理を呼び出す
Lambdaで下記のコードを書きました。
“`python
import json
import boto3
from datetime import datetime

def lambda_handler(event, context):
try:
fromTime = datetime(2024,5,15,10,0,0)
toTime = datetim

元記事を表示

OTHERカテゴリの最新記事