AWS関連のことを調べてみた2021年12月27日

AWS関連のことを調べてみた2021年12月27日

Pythonでの Lambda関数共通レスポンスUtil

#目的
PythonでのLambda関数共通レスポンスUtilを作成方法を共有します。

#実装
“`response.py
import decimal
import json

class DecimalEncoder(json.JSONEncoder):
“””DecimalEncoder クラス
Decimal クラスを使用して保存された数値を出力するために使用されます(Amazon DynamoDBの数値を保持します)
“””
def default(self, o):
if isinstance(o, decimal.Decimal):
if o % 1 > 0:
return float(o)
else:
return int(o)
return super(DecimalEncoder, self).default(o)

def response_200(body, **kargs):

元記事を表示

数ヶ月AWS勉強用アカウントを運用してみて、金額のかかったサービス

# 記事を書くにあたったきっかけ

AWSを仕事で使う際に、プライベートで持っていた方が色々と便利で、そのプライベートアカウントで遊んでいたら想定以上にお金のかかったサービスを紹介します。

## ほぼ利用していないAWSアカウントなのに、 2ヶ月連続で良い額の請求書が来た

### EC2多重起動

要因はEC2を複数台起動したまま停止し忘れ、利用時間が増えたため金額が増加しました。
直接の原因としてはBIツールのCloudFromationをいくつか試しており、その中でEC2を起動するものがありました。そのCloudFormationを消し忘れていたために、性能の良いEC2を多重に起動し、起動したまま放置したため、金額が嵩みました。

![スクリーンショット 2021-11-30 16.48.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217551/f7d3fc14-aaca-a904-b32d-89b74f88f87e.png)

### プライベート証明書

EC2は先月のままサーバー停

元記事を表示

育休中にSAAを取得した話

#1.概要
どうも、ARIの名古屋支社に勤務している愛知県民です♪
(/・ω・)/

**育休中にSAA(AWS Certified Solutions Architect – Associate)の資格を取得したので、
その時の生活リズムや勉強方法などをまとめてみました。**

育休中に資格が取れるのかどうか、気になっている人の助けになれば幸いです。
ちなみに、勉強するきっかけとしては、ベビーから「取れよ」と言われた気がしたからです。(笑)

また、この記事が面白いと思った方はLGTM、ストックしていただけると励みになります♪
(*^^)v

#2.自分自身について
まずは自分自身の年齢やAWSの経験等について以下に記載します。

* 男性
* 28歳(2021/12/22時点)
* 社会人4年目(2021/12/22時点)
* ベビーは2021年8月産まれ(第一子)
* 2021年10~12月に育休取得(上司と会社に大感謝)
* AWSに関する業務経験は約半年
* 上記業務で主に使用したサービスは以下の通り
* AmazonConnect
* Lambda

元記事を表示

書籍の整理:実践的データ基盤への処方箋(概要とはじめに)

# 背景・目的
– 最近、読んだ[実践的データ基盤への処方箋](https://www.amazon.co.jp/%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%83%87%E3%83%BC%E3%82%BF%E5%9F%BA%E7%9B%A4%E3%81%B8%E3%81%AE%E5%87%A6%E6%96%B9%E7%AE%8B%E3%80%9C-%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E4%BE%A1%E5%80%A4%E5%89%B5%E5%87%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%83%BB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%83%BB%E3%83%92%E3%83%88%E3%81%AE%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6-%E3%82%86%E3%81%9A%E3%81%9F%E3%81%9D-ebook/dp/B09MSX9MQV)が、実践的か

元記事を表示

VMware Cloud on AWS ログ管理まとめ (VMware vRealize Log Insight ほか)

#1. はじめに
「[VMware Cloud on AWS](https://www.vmware.com/jp/products/vmc-on-aws.html)」のログ管理について最近調べることがあり、情報がまとまったのでこちらにも備忘録としてシェアします。VMware Cloud on AWS 自体については過去記事もご参考ください。

https://qiita.com/sanjushi/items/c62735dd22056b62c00d

#2. VMware仮想環境のログ管理って?
物理マシンや仮想マシンあるいはアプリケーションでも、トラブルシュートにはまずログを確認してみるかと思います。複数が組み合わさったシステムではログが分散していると実際のトラブルシュートは困難を極めるのではないでしょうか。たとえログが一箇所にまとまっていても、時系列も形式もバラバラなデータの羅列では全体感の把握もままなりません。
このように一般的なログ管理の考え方はVMware仮想環境でも同様です。前置きが長くなりましたが、VMware社によるマネージドサービスであるVMware Cloud

元記事を表示

AWS Certified Security – Specialty 合格しました

先日、AWS認定セキュリティ専門知識の試験を受験し、合格しました!
その記録を残しておきます。

今回の受験は、前回のSysOps Administratorの1週間後です。AWSの資格としては8個目、今月(2021年12月)は3個目です。

2021年12月の受験履歴 (リンク先は合格体験記)

– [データアナリティクス専門知識](https://qiita.com/suzuki-navi/items/936741e02a5869856ad8)
– [SysOpsアドミニストレータアソシエイト](https://qiita.com/suzuki-navi/items/ebfde17bfed3eec97261)
– セキュリティ専門知識 (今回)

# 勉強方法

今月3つ目の試験ですので、慣れてきたものです。まずはBlack Beltを読みます。あとは公式の模擬試験を解きました。BenchPrepってやつで、20問あります。前回受験後の1週間ぐらいかけて毎日夜に少しずつBlack Beltを読み、前日に模擬試験を解きました。模擬試験は解説もあるので、1問ずつ解いて、解説を読んで、分

元記事を表示

WordPress + AWS WAF設定時の注意点

#はじめに
Wordpressサーバーを運用するにあたり、セキュリティー対策として、AWS WAFを導入する機会があったのですが、思わぬエラーが出たため、書き留めます。

#環境構築図
![スクリーンショット 2021-12-26 19.04.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/cc2a87b5-5b60-6732-e289-d8768365038b.png)

#WAFの概要

https://blog.serverworks.co.jp/2020/12/30/090000

#流れ
1. WAFの導入
1. 導入直後、サイト閲覧
1. 導入後、画像アップロード時、エラー
1. uploadのパスのみ、コアルールセットを適用しない方法
1. 導入後、問い合わせフォームでのエラー
1. ログの保存方法

#WAFの導入
WAFの導入方法についてはこちらの記事を参考にしてください。

https://www.cybermatrix.co/blog/waf/aws-w

元記事を表示

【CloudFormation】AWS Secrets Managerを使いRDS Proxy経由でRDSに接続する方法

#やること
EC2やLambdaからRDSにダイレクトに接続させるのではなく、間にプロキシサーバを挟んでRDSに接続させる方法をとる
同時にCloudFormationで環境の自動構築も行う。

#なぜそうするのか

当初の構成では以下の通り、RDSに対してダイレクトで接続を行なっていました。

Lambda → RDS
EC2 → RDS

このようなRDSに直接接続する構成には問題があるので、間にRDSプロキシを挟む構成にしたいと思います。

![スクリーンショット 2021-12-26 19.19.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1186674/1821ce28-6193-5454-0062-af4b3fd1fff4.png)

Lambda → RDS Proxy → RDS
EC2 → RDS Proxy → RDS

RDSProxyには以下のような特徴があります。

>
RDS Proxy を使用すると、データベーストラフィックの予測不可能なサージを処理でき

元記事を表示

[AWS認定試験対策]AWS Skill Builderを強火で布教する

#はじめに
お疲れ様です。yuki_inkです。

**Skill Builder、使ってますか??**

本稿は、先日AWS認定DevOps Engineer-Professional の対策として初めてAWS Skill Builderを利用した筆者が、その教材のクオリティの高さに驚愕し、これは広めなければ‼︎という謎の使命感に駆られ、Skill Builderを強火で推していく記事です。(早口)

本日無事DevOpsに合格し、五冠を達成しました。
勢いそのままに推していきます。

#AWS Skill Builderとは
一言で言えば、AWS公式の学習ポータルサイトです。
[2021年11月18日に発表されたプレスリリース](https://prtimes.jp/main/html/rd/p/000001397.000004612.html)を引用します。
>AWS スキルビルダーは、200 以上の国と地域で新しいデジタル学習体験を提供します。今年新たに追加された約 60 のクラウドコンピューティングクラスを含め、500 以上の無料オンデマンドコースに迅速かつ簡単にアクセスで

元記事を表示

AWSデータベースの可用性について整理する

# 背景・目的
– データベースごとの可用性について整理する。

## 前提
– 一部埋められていない(調べられていない)箇所がある。後ほど更新する。

# 内容
## 一覧
– ここで説明する可用性は、システムが停止することなくサービスを提供し続けることを指す。
– 可用性を高めるための考え方として、以下を整理する。
– AWSインフラの機能として、マルチAZ、マルチリージョン
– データベースサービス機能として、プライマリ、セカンダリインスタンス
– なお、仕組みが異なるものは、同一データベースサービス内でもエンジン別に切り出して整理している。
– ここでいうレプリカは、スタンバイレプリカを指しており **リードレプリカ**とは異なる。(Auroraだけは異なる。)
– 以下に整理した内容を記載する。

データベース 配置可能なロケーション コンピュートとストレージの分離

AWS CodePipeline と AWS CodeBuild で Amazon ECS デプロイを試してみる

「[株式会社じげん Advent Calendar 2021](https://qiita.com/advent-calendar/2021/zigexn)」 23日目を担当します、ゆいです。

# 背景
この1年間で、CI/CD の構築に携わる機会や AWS のサービスに触れる機会が増え、デプロイの仕組みやデプロイフローへの理解が進んできました。
次のステップとして、本番環境やステージング環境だけでなく、プルリクエストごとの検証環境を立ち上げたいと考えているときに、AWS Code シリーズを知ったので、まずは触ってみることにしました。
また、業務で AWS ECS を使用しており、ECS のアプリケーションデプロイプロセスと CodePipeline の親和性が高いということで実際に試してみることにしました。

# AWS CodePipeline
継続的デリバリーサービスを提供し、デプロイの全体を仕切る CI/CD プロダクトです。
他の AWS サービスやサードパーティのツールと統合して、開発スタイルに沿ったデプロイパイプラインの構築が可能です。

# AWS CodeBui

presignedurlでファイルサイズを制限したい皆様に贈るpresignedpost [boto3]

# 結論まで言ってしまった。
そう、presignedpostを使えばできる。

# はじめに
私がはじめてpresignedurlと出会ったのは、apigatewayやlambdaのペイロードの容量制限(それぞれ10MBと6MB)によって、lambdaのreturnからs3のファイルを取得することができなかったとき。
こんな時みたいに大きい容量のファイルをダウンロードやアップロードする際に便利なのがpresignedurlだ。便利で使い勝手がいい。だってどんなに大きいファイルでもポンポンs3にぶち込めてしまうだもの。

でも、このurl、入力サイズに制限がない。だからめちゃくちゃでっかいサイズのファイルをs3に直接アップロードできてしまう。そのurlを知っている人なら誰でもね。

そうなのだ、もしそのurlが漏洩してしまったら巨大なファイルをアップロードする攻撃が可能になってしまう。チョットコワイ。

そんなあなたに贈るものが**presignedpost**である。presignedurlの機能をほぼそのままに、ファイルサイズ制限をつけることができる優れものなのだ。

#

PackerでMoleculeテスト環境用のAWS EC2ゴールデンイメージを作成する

この記事は [Ansible Advent Calendar 2021](https://adventar.org/calendars/6737) 2日目の記事になります。

Ansible Moleculeでテストを実行する時にテスト対象になるAWS EC2のゴールデンイメージの作成方法について解説します。

今回はPackerを用いてAWS EC2 AMI(Amazon machine image)へVMイメージを登録するまでになります。

## なぜテスト環境用のVMイメージを作成、登録するのか?

* CIの実行時間を短縮するため
* コードの記述量を減らしメンテナンスしやすくする

これらの理由が考えられます。

### CIの実行時間を短くする

Moleculeの機能から言えばMolecule実行時にMoleculeのシナリオprepareなどでテスト環境をセットアップする事は可能です。しかし例えば毎回OSをアップデート、再起動するなどの処理をしているとCIの実行時間が長くなってしまいます。

### コードの記述量を減らしメンテナンスしやすくする

テスト環境用のセ

VPCFlowLogsにCloudWatchLogsのAlarmを設定する(コンソール編)

# はじめに
EC2等から想定外の場所へのデータ流出を検出するため、VPC内のトラフィックにアラームを設定する環境を、コンソールから構築する方法を調べました。
備忘録として記事にしました。

# 目的
機密情報を扱う環境として、「決められた場所以外へのデータ送信(以下、不正トラフィック)を検出できる環境」の構築を目的としました。
悪意ある内部ユーザが、個人情報等を他のサーバにコピーしたらすぐにメール通知が飛ぶ、という環境がゴールのイメージです。

## GuardDutyではダメ?
GuardDutyは、AWS環境やAWSアカウントに対する攻撃を検知するもので、内部ユーザの悪意ある行動を検知することはできないようです。

## これだけでは不十分
これは外部へのデータ流出を検出するだけであり、流出自体を防止するわけではないです。他のセキュリティ対策と併用する必要があります。

– アウトバウンドの制限
– 制限すると、外部のパッケージ等をインストールするのが難しくなるため、要注意。
– セキュリティ教育

# やったこと
コンソールから以下のことを行いました。

1. 送

【SAP-C01試験対策】ハイブリットクラウドのまとめ

# はじめに

AWSのハイブリットクライドを学習したので内容をまとめます。

https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/VPC_VPN.html

# 背景
本記事はAWSソリューションアーキテクトプロフェッショナルに合格するために、[Udemyの模擬試験](https://www.udemy.com/course/aws-53225)を解いて分からなかった部分を勉強してまとめるものです。

試験対策用のため、分からない知識を補足したり試験で問われなさそうなところを省略したりしながらまとめています。
なるべくわかりやすい記載を心がけますが、最終目的は自己学習用であるということをご容赦ください。

# プライベート接続の三種類
– Client VPN:クライアントPCに暗号化ソフトをインストールしVPNでAWSのエンドポイントに接続
– Site-to-Site VPN:ネットワーク機器で暗号化しAWSのエンドポイントに接続

【SAP-C01試験対策】デプロイ方式のまとめ

# はじめに
AWSのデプロイ方式について公式ドキュメントを参考に学習したので内容をまとめます。

https://d0.awsstatic.com/whitepapers/overview-of-deployment-options-on-aws.pdf

https://docs.aws.amazon.com/ja_jp/whitepapers/latest/overview-deployment-options/aws-cloudformation.html

# 背景
本記事はAWSソリューションアーキテクトプロフェッショナルに合格するために、[Udemyの模擬試験](https://www.udemy.com/co

外部ライブラリのLambda Layerを生成するAPIをLambdaで作ってみた【Python】

もはやクリスマスが終わってしまいましたが、Advent Calendarの24日目です。
直前に書き始めた+文量があるので、読みにくい箇所があったらすいません!(何部作かに分けるべきだったか、、)

## 0. はじめに
この記事では、「Lambdaで確実に動くコンパイル済みライブラリが欲しいなら、Lambda自身に作らせてしまえばいいのでは?」というアイデアから始まり、AWS LambdaとAPI Gateway、S3を使ってLambda Layer用のPythonライブラリをLambda自身が生成してくれるAPIを作って素晴らしく快適なLambda生活が送れるようになったライフハック(?)を紹介します。

– M1 Macなどarm64アーキテクチャの上のDockerではx86_64用のLayerが作れない(逆も然り)
– 複数のライブラリを1つのLayerにまとめて、Layerの数を抑えたい
– 最新だけでなく、任意のバージョンのライブラリを使いたい
– Klayersでは、自動で旧バージョンのレイヤーが削除されて使えなくなってしまうため、Layerを自己管理下に置きたい
– 宗

グラフDBで構成情報を可視化したい:neo4j篇

* 本記事は2021/12/12のアドベントカレンダー原稿を落とした私が後日追加した記事です

以前、仕事の必要に迫られてシステムのNW構成を把握するためにneo4jを使う機会があったため、また使い始めてみようと改めて触りました。
ローカル環境のJupyterLabから同じくローカル起動のneo4j serverにクエリすることで、AWS構成情報のグラフ化を試しました。

## はじめに
冒頭からなんですが、但し書きです。
本記事を作成する中で断念したことは次の通りです。

– [aws/graph-notebook](https://github.com/aws/graph-notebook)のウォークスルーをJupyterLab環境で動かす
– JupyterLabではなくJupyterノートブック前提のnbextensionであり、拡張機能に互換性がなさそうだったため中止しました
– Neo4jのWebコンソール同等の可視化グラフ
– グラフ構造の可視化にあたっては色々と実装上の調整が必要だったため、触りだけ確認しました
– その辺りの操作性だけ先に確認し

待望の新サービス Redshift Serverless に触ってみた。

# はじめに
この記事は、[datatech-jp Advent Calendar 2021](https://qiita.com/advent-calendar/2021/datatech-jp)の25日目の記事となります。

AWS re:Invent 2021で Reshift Serverlessが発表されました。
このサービスは、すでに大規模なデータ基盤をゴリゴリ使って価値を生み出しているぜ!という方には、うま味が少ないかもしれませんが、
これからデータ基盤を作っていきたいという0 → 1フェーズの方には、ぜひ利用を検討してほしいサービスです。

## Redshift Serverlessの特徴
詳しくは公式ページを見るとよいのですが、

一番の特徴は、クエリの実行に費やしたコンピュート時間のみに課金されるようになったことでしょう。
それにより従来のRedshiftのように24時間365日コンピュートを稼働させなくてよくなったのは非常にありがたいです。

また、半構造化データのサポート、データ共有、機械学習機能、Amazon S3データレイクへのクエリ、フェデレーションクエ

Terraformで最新のAMIをEC2に設定する

# はじめに
EC2をTerraformで作成する際にとりあえず最新のAMIを設定したいと思ったので調査しました。

# 目次
[1. Terraformの記述(結論)](#1-Terraformの記述(結論))
[2. AMI名エイリアスの導出方法](#2-AMI名エイリアスの導出方法)
[3. 参考](#3-参考)

# 1. Terraformの記述(結論)
dataブロックでAWS Systems Manager Parameter Store(以下、AWS SSM)を利用して最新のAMIを取得します。

“`terraform:常に最新のAMIを取得するEC2の設定
data “aws_ssm_parameter” “amzn2_latest” {
name = “/aws/service/ami-amazon-linux-latest/amzn2-ami-kernel-5.10-hvm-x86_64-gp2”
// カーネル 4.14 の場合
name = “/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-