AWS関連のことを調べてみた2023年02月08日

AWS関連のことを調べてみた2023年02月08日
目次

Kinesis FirehoseからS3転送時の日付プレフィックスの設定

# はじめに
Kinesis FirehoseからS3へのデータ転送時に、明示的に日付の設定を行わない場合、本日日で**yyyy/mm/dd/hh**の形式なる。
Athenaなどで転送したS3プレフィックス配下に対してSQLを実行する際に、利用しやすい日付パーティションで活用できるよう、Kinesis Firehose側で日付プレフィックスの設定を行う。

# 設定方法
* S3 バケットプレフィックスへ以下の設定をすることで、本日日の**yyyy-MM-dd形式**のプレフィックスで転送できる
* また、日付以外にも**firehose1**のようなプレフィックスの指定も可能である
“`
firehose1/!{timestamp:yyyy-MM-dd}/
“`
* Kinesis Firehose側の設定
![スクリーンショット 2023-02-08 11.17.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263017/26d67165-d61d-96af-4f2b-f44241f33

元記事を表示

【AWS】SESのBounce Rate とComplaint Rate についてまとめる

## はじめに
AWSのSESの Bounces Rate と Complaint Rate についてまとめたいと思います。

## Bounce Rate とは?
– 配信されたメールのうち、受信サーバーから戻されたために届かなかったメールの割合のこと
– **Bounce** とは、日本語に訳すと「跳ね返る」「バウンドする」という意味

バウンスは、以下の2種類があります。

– **Hard Bounce(ハードバウンス)**
– 永続的なEメールの障害
– 例: ドメインそのものやメールアドレスが存在しない宛先不明の場合
– **Soft Bounce(ソフトバウンス)**
– 一時的なEメールの障害
– 例: メールボックスが容量を超えている、接続が多い、接続のタイムアウト

### Bounce Rate が高まると?
– アカウントのEメール送信機能を一時的に停止される可能性がある
– Bounce Rate が **10%** を超えた場合に一時停止される可能性がある
– AWSの推奨としては、Bounce

元記事を表示

Red Hat OpenShift Service on AWSのPersistentVolumeとしてAmazon FSx for NetApp ONTAPを使ってみた(FSx for ONTAPのデプロイ・マウント編)

# はじめに
– Red Hat社が提供するKubernetesのディストリビューションとして、エンタープライズな領域を中心によく使われている印象(やっぱり保守受けたいですよね、わかります)があるRed Hat OpenShift Container Platform(OCP)。
– そのOCPの、AWSによるマネージドサービスがRed Hat OpenShift Service on AWS(ROSA)。
– その[ROSAとAmazon FSx for NetApp ONTAP(FSx for ONTAP)との統合について紹介されているAWSブログ](https://aws.amazon.com/jp/blogs/news/scaling-container-workloads-with-shared-storage-for-red-hat-openshift-service-on-aws/)を読んで、興味が湧いてきたので自分でも試してみました。ちなみにOpenShift自体は少し触れたことがありますが、ROSA自体に触れるは全くの初めてです。
– [ROSAクラスタのデプロイ編の

元記事を表示

Lambdaのトリガーでフィルタリングを使う

# Lambda のイベントフィルタリング
Lambdaをトリガーする際、イベントに含まれるデータをフィルタリングしてトリガーを制御できる。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invocation-eventfiltering.html

# Dynamodb Streamのイベントをフィルタリング

DynamoDBに新規レコードが追加された場合、下記の3つのイベントが発生する。
– INSERT – a new item was added to the table.
– MODIFY – one or more of an existing item’s attributes were modified.
– REMOVE – the item was deleted from the table

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/APIReference/API_streams_Record.html

今回は新規登録(INSE

元記事を表示

3大クラウドベンダー試験まとめ

# この記事の内容
自己研鑽のために3大クラウドベンダー試験の取得を目指すので、資格の種類や対策、テキストや問題集などの情報を一覧化する。

## AWS資格
2023/2/1時点で以下の種類がある。
| No | 資格名 | 難易度 |
| —-:| ——- | ——– |
| 1 | Cloud Practitioner | 難易度低 |
| 2 | Solutions Architect(Associate) | 難易度中 |
| 3 | SysOps Administrator | 難易度中 |
| 4 | Developer | 難易度中 |
| 5 | Solutions Architect(Professional) | 難易度高 |
| 6 | DevOps Engineer | 難易度高 |
| 7 | Security | 難易度最難関 |
| 8 | Database | 難易度最難関 |
| 9 | Machine Learning | 難易度最難関 |
| 10 |

元記事を表示

AWS ソリューションアーキテクト(SAA-C03)の振り返り

2023年2月に、AWSソリューションアーキテクトアソシエイト(SAA-C03)に合格した。

何のために資格を取るの?と思っている方や、これから受ける方の参考になれば幸いである。

## フロントエンドでもAWSの知識は必要?

私は普段Web制作やWebアプリケーションのフロントエンドを担当している。

AWSはサーバーサイドやインフラ系の人の知識と思われがちだが、直近の案件ではGit環境がgithubではなくAWS CodeCommitだったり、デプロイ環境がAWSだったりとその存在を意識せざるを得ない環境になってきている。

社内でも勉強会が開かれ、個人的にも1年も無料枠を使ってWordpressを立ち上げたりしたが、1年を超えて意外とお金がかかることに気づいて慌ててEC2を停止したりしていた。

またDjango(フルスタックフレームワーク)のチュートリアルをすすめていたところAWSへのデプロイの方法が説明されているなどのきっかけがあり、ちゃんと知っておきたい、と思うようになった。

資格をとらなくても実践で身に付くのでは?とも考えたが、どれが無料枠でどれが課金なのかわからな

元記事を表示

ネットワーク解析ツールのBatfishを導入する

# はじめに
ネットワーク機器のConfigを自動解析するBatfishというツールの使い方を説明するための記事です。
主に同僚向けに作成しています。

# 何ができる?
Batfishというツールにより、下記ができるようになります。
・ACLの不備のチェック
・ネットワークの疎通の確認
・configの差分の確認
等など

# 構成概要
下記の構成を作っていきます。
BatfishはDocker[^1]のコンテナとして配布されており、
利用のためにはDockerコンテナを利用できるようにする必要があります。

[^1]:コンテナ型の仮想化ツールです。PC内にもう一つPCを生み出すイメージ。

# 導入方法
## 1.Dockerのインストール
https://www.docker.com/products/docker-desktop/
上記サイトからDocker Desktop Installer.exe をダウンロード&実行します。

## 2.Docker&Batfishのセットアップ
PCでTerminalを開き、
“`docker pull batfish/allinon

元記事を表示

インフラ設計者がAWS CDKに入門してみる②~構築編~

# 前提など

構築の前提や準備などは前回の[記事](https://qiita.com/nnydtmg157/items/688348b64fa8325b8f9d)を参照してください。

# 作成したコード

ひとまず完成したコードがこちらです。
L1コンストラクトで書いてます。コンストラクトについては後日書きたいと思います。
細かく設定したいのでL1を利用しましたが、L2、L3と抽象度が上がるにつれて記載するコードが少なくなっていきます。
(ファイル名は構成とずれてます、、、)

“`typescript:lib/aws-1vpc-3private-subnet-stack.ts
import * as cdk from ‘@aws-cdk/core’;
import {
CfnVPC,
CfnSubnet,
CfnInternetGateway,
CfnVPCGatewayAttachment,
CfnRouteTable,
CfnRoute,
CfnSubnetRouteTableAssociation,
VpcEndpo

元記事を表示

インフラ設計者がAWS CDKに入門してみる①~準備編~

# AWS CDK とは

AWS CDKとは、AWSが提供するAWSリソースをコードで定義するための[キット](https://aws.amazon.com/jp/cdk/)です。

# やりたいこと

AWS CDK初心者が、検証環境を簡単にデプロイするためにCDKでテンプレート化しておきたい。
特にNetwork周りの部分で簡素化できればいいなと思ってCDKにチャレンジしてみました。

出来るものは以下のリソースです。東京リージョンです。
* VPC
* 9サブネット(パブリック3つ、プライベート6つ)az-a,c,dでマルチAZ構成
* InternetGateway
* RouteTable(パブリック、プライベート1つずつ)

# 前提

* AWS自体はリソースをある程度理解している
* アプリ開発(コード開発)経験はほぼない
* 業務ではAWS開発は基本CLIかマネジメントコンソール操作

構築環境は以下の通り。
* Windows 11 Home
* VSCode
* WSL2上のUbuntu22.04
* nodejs v18.12.1
* AWS CLI v2

元記事を表示

Flutterでプッシュ通知を実装(FCM x AWS Pinpoint)。デバイストークンをpinpointのエンドポイントへ登録する方法

FCM(Firebase Cloud Messaging)とAWS Pinpointを使ってFlutterアプリにプッシュ通知を送る際問題となるのがpinpointのエンドポイントへデバイストークンを登録する事です。現状Flutter AmplifyライブラリーにはデバイストークンをPinpintのエンドポイントへ登録する機能がありません。ここではそれの解決策を記載いたします。

※認証機能としてCognitoを使用

流れ
1. Fluttter Amplify analiticsでユーザ情報をPinpointへ送信
2. AWS Signature Version 4パッケージの導入
3. 2のパッケージを利用してREST通信を行う

# ユーザ情報をPinpointへ送信
AmplifyライブラリーのAnalisticを使用してユーザ情報をPinpointへ送信。
[Amplify Dev Center](https://docs.amplify.aws/lib/analytics/identifyuser/q/platform/flutter/)

“`example_I

元記事を表示

ReactからAPI Gateway + DynamoDBのCRUD操作

## 概要
ReactからAPI Gateway + DynamoDBのCRUD操作の方法を記載します。
API Gateway,LambdaやDynamoDBの設定は、以下の記事参照ください。
>REST APIでDynamoDBのテーブルを操作
https://qiita.com/ayumu__/items/703c4bd9ca2e0e92e623

## 目次
1. ReactからAPI Gateway + DynamoDBのCRUD操作

## ReactからAPI Gateway + DynamoDBのCRUD操作
axiosではなくfetchを使う。結果はコンソールに表示する。
#### GETメソッド
– ReactからAPI Gateway + DynamoDBのGETメソッドを呼び出すためのコードは以下の通り。
– idをkeyとする。
“`javascript:GETメソッド
//getメソッド
async function getDataFromDynamoDB() {
// const API_ENDPOINT = ‘API

元記事を表示

AWSのIAMの変更イベントをLambdaで処理する

# 一般的な方法

[前記事](https://qiita.com/hayayu0/items/5d3a176a130e3221408f) の最後で言及したのですが、一般的な方法は、

【米国東部(バージニア北部)リージョンの EventBridge ルール】
  ↓
【米国東部(バージニア北部)リージョンの SNSトピック】

の2つのサービスの連携があって、そのうち、【SNSトピック】の代わりに【Lambda関数】にすれば、連携できます。

手順は、[AWSドキュメント – AWS アカウントに IAM の変更が加えられたときに通知を受け取るにはどうすればよいですか?](https://aws.amazon.com/jp/premiumsupport/knowledge-center/iam-eventbridge-sns-rule/) に記載がありますので、このリンク先に従って進めていき、SNSのところだけLambda関数にすれば実装できます。

# 別リージョンのLambda関数にイベントを渡す方法

上記の例では、Lambda関数はIAMのイベントを拾えるリージョンと同じ

元記事を表示

AWS ECS の production 環境に rails db:migrate する手軽な方法

RDSにはlocalから直接接続できるようにしておく
database.yaml などで必要な接続設定をしたらlocalからでも直接migrateを実行してしまえば良い

あくまで手軽な方法なので本番運用ではちゃんとやること
(ちゃんとの中身はまだ分からないのだが)

# コマンド例

“`
RAILS_ENV=production rails db:create
RAILS_ENV=production rails db:migrate
“`

# database.yaml の例

“`yaml
default: &default
adapter: mysql2
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000

production:
<<: *default host: *****.ap-northeast-1.rds.amazonaws.com username: username database: databasename password: passwor

元記事を表示

CodeCommitのリポジトリ作成

# 事前準備

1. HTTPS Git 認証情報の生成
– [AWS CodeCommit の HTTPS Git 認証情報を生成](https://qiita.com/ryome/items/066d2deea3e6fbe577ad)
2. Linuxコマンドが使用できる環境構築
– [wsl2にUbuntu環境を構築する【windows】](https://qiita.com/ryome/items/240f36923f5cb989da27)
– ※ MacOSの方はターミナルからLinuxコマンドが使用できます。

# CodeCommitリポジトリ作成

1.`CodeCommit` を検索する。

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/e058b03d-5ed1-cefe-d061-e48b19ab3507.png)

2.`リポジトリを作成` を押下する。

![02.png](https://qiita-image-store.s3

元記事を表示

AWS データレイク・データウェアハウス基盤:単体テスト、結合テスト、システムテストでやるべきこと

# はじめに
AWS データレイク・データウェアハウス基盤の以下構成を例とした場合、どのようにテストを実施していけばいいかを説明。
本実装はオンプレミスからRedshiftまで、日次で定期的にデータを転送するフローとする。
![スクリーンショット 2023-01-05 11.10.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263017/bcd2cea8-8124-8100-3e4d-fa9274aa5dae.png)

## 「開発環境」「本番環境」の実施について
「単体テスト」「結合テスト」「システムテスト」全てにおいて、「開発環境」「本番環境」で実施するのがベストであるが、
スタートアップ企業などの「開発環境」は、開発用の生データを用意できなかったり、「開発環境」分の工数が発生してしまうため、この場合は「本番環境」だけでも最低限実施して欲しい。

## 単体テスト
* 各AWSサービスのパラメータ値を確認
* 基本はIaCで作成のため、IaCでデプロイ後にキャプチャを取得するなりして、エビ

元記事を表示

AWS RDS に localからmysql コマンドで接続出来ない時

# チェックポイント

– セキュリティーグループでインバウンドが許可されているか
– VPCのDNS解決は有効か
– VPCでpublicなサブネットで構成しているか
– DB作成後のエンドポイント作成処理は完了しているか
– mysqlコマンドが変わり種なので注意

# コマンド例

すべての準備が出来たら以下のようなコマンドを実行する

>Amazon RDS for MySQL データベースに接続するときは、接続文字列で –enable-cleartext-plugin オプションを使用する必要があります。–enable-cleartext-plugin 構文は、認証トークンとして機能するパスワードを渡すために使用されます。

“`
mysql -u admin -P 3306 -h ***.cluster-cgklnrcdw5xr.ap-northeast-1.rds.amazonaws.com –enable-cleartext-plugin –user=admin –password=password
“`

https://aws.amazon.com/j

元記事を表示

3大クラウドのKubernetes料金を比較(AWS EKS/Azure AKS/GCP GKE)

Region: Tokyo

| |AWS EKS|Azure AKS|GCP GKE|
|:———————–|——:|——:|——-:|
| Kubernetes Cluster | $73.00| 0| 0|
| Container Registry(1G) | $0.20| $5.01| $0.05|
| Load Balancer(1G) | $22.42| $21.00| $27.76|
| NAT Gateway(100G) | $51.46| $41.40| $5.51|
| VPC | 0| 0| 0|
| Subnet | 0| 0| 0|
| Worker Node | -| -| -|

元記事を表示

[Terraform] Cloudwatch Alarmを特定リージョンに作成しようとして失敗した件

# この記事について

以下のようなTerraformコードを作成して、CloudWatch Alarmをバージニアリージョンに作成しようとした。

“`
resource “aws_cloudwatch_metric_alarm” “for_topic” {
provider = aws.virginia

alarm_name = local.alert.name
comparison_operator = “LessThanThreshold”
evaluation_periods = “1”
metric_name = “HealthCheckStatus”
namespace = “AWS/Route53”
period = “60”
statistic = “Minimum”
threshold = “1”
alarm_actions = [aws_sns_topic.to

元記事を表示

AWS WAFで海外からのアクセスのみルールを適用する

# やりたいこと
海外からのアクセスのみWAFのルールを適用する
言い換えると
日本からのアクセスは通信を通すようにする

# なぜやるか
アプリケーション内での検索クエリがsqlインジェクションルールに引っかかり弾かれてしまった
sqlインジェクションルールの詳細がブラックボックスになっているため、
穴を開ける形を取らないといけなくなった。
国内限定で使うアプリケーションなので海外からのアクセスにのみWAFを適用することにした。

# 前提
今回適用するルールは
– 日本からの通信か(allow)
– sqlインジェクション(block)
– レートベースルール(block)

albにアタッチするところまではやらない
# コード
“`main.tf
#—————————-
# WAF ACL
#—————————-
resource “aws_wafv2_web_acl” “main” {
name = “${var.app_name}-WebACL”
description = “${var.ap

元記事を表示

パラメータストアからの値の取得でハマった件

# Lambda Extension
Lambdaで処理を行う際に、将来変更が予測される値をパラメータストアにセットされていて、そこから値を取得するケースは良くあると思います
今年の10月にAWSから[Lambda Extension](https://aws.amazon.com/jp/blogs/compute/using-the-aws-parameter-and-secrets-lambda-extension-to-cache-parameters-and-secrets/)が発表され、SDKを使わずに、このLambda Extensionを使う方が多くなっているのではないでしょうか

# ハマったところ
`/` のエンコードです
パラメータストアの名称は `/` で階層化組織化を行っているかと思います
Lambda Extensionは、httpでリクエストを飛ばすので、パラメータストア名にもエンコードが必要となります
ただ、`/`は普通にUrlの区切り文字ですので、一工夫必要となりました

“`example.py
from urllib.parse import q

元記事を表示

OTHERカテゴリの最新記事