- 1. 【AWS EC2】SavingsPlans・リザーブドインスタンスとは何か?(なんとなくわかった気になるための説明)
- 2. GraphQL caching ③プロダクションリリースまでに解決した課題、導入による効果
- 3. GraphQL caching ②AWS Prototyping program を利用した開発
- 4. GraphQL caching ①導入の背景と目的
- 5. Amazon S3 セキュリティとバックアップのベストプラクティス
- 6. AWS 構成図作成ツール diagram.net (旧draw.io)
- 7. 【AWS】クラウドインフラの基本設計を構築してみた【ALB】【Route53】【ACM】
- 8. インスタンスメタデータ とは
- 9. Cloud Watchで請求アラームを設定する
- 10. WindowsのVirtualbox上にAWS localstackを自動構築
- 11. コンテナイメージを利用した簡単なLambdaを作成する
- 12. Google Cloudの資格をほぼ1ヶ月で全制覇した話
- 13. [Rails] ec2上でcronを使ってrakeタスクを定期実行
- 14. スポットインスタンス もう少し詳しく調べてみる
- 15. AWS初心者は必ず読むべき!必見!AWSの基本③Webサーバー構築(EC2作成)
- 16. Flaskで立てたサーバーが外部からアクセスできない場合に確認すべきこと
- 17. AWS Glue DataBrew とは
- 18. AnsibleをAWS Systems Managerから実行するCI/CDを構築する。(その2:CodeCommitの準備)
- 19. aws cloudformation パラメータ設定の際に、CommaDelimitedList にはまった
- 20. PythonでDynamoDBの単一テーブル設計を扱う
【AWS EC2】SavingsPlans・リザーブドインスタンスとは何か?(なんとなくわかった気になるための説明)
# はじめに
はじめまして、Webエンジニア2年目の28歳です。
AWS運用担当にもなって約半年、EC2のリプレイスに伴い、運用費の検討(SavingsPlansの内容確認)が必要になりました。
そこで「SavingsPlans とは」で色々調べてみたんですが、自分の理解力不足もあり、当初、全く理解できませんでした、、、
なんとか色々な記事・動画を参照することでようやく「これは理解できたかも?」という状態になりました。
しかし、かなり苦労してしまったので、僕のような初心者でも「とりあえず、なんとなくわかった気になれる」ような説明がほしいな!と思い、この記事を書きました。# 説明
早速ですが、「とある会社で、社用車をレンタカーで借りる状況」になぞらえて説明します。## リザーブドインスタンスとは?
– 車種や台数を指定して1年間または3年間借りる契約をすることで、通常(数時間や数日だけのレンタル)より割引になるプラン。
– 利用場面
– 例:「直近1年間で、この車種が何台必要」と具体的に決まっている場合。(1年間または3年間、車種や台数の変更がない想定)
– 支払方法
GraphQL caching ③プロダクションリリースまでに解決した課題、導入による効果
# はじめに
本記事は以下の三本立てシリーズの三本目の記事です。[①導入の背景と目的](https://qiita.com/datahaikuninja/items/f22fde98e76602f12691)
[②AWS Prototyping program を利用した開発](https://qiita.com/datahaikuninja/items/e3c5302602c38b6a8b71)
③プロダクションリリースまでに解決した課題、導入による効果本記事では、以下のトピックを扱います。
– ASL(Amazon Software License)について
– GraphQL cachingの仕組み
– プロダクションリリースまでに解決した課題
– 導入による効果# ASL(Amazon Software License)について
本記事で紹介する GraphQL cachingのLambdaコードは、AWS Prototyping programを利用して開発したものです。このプログラムで開発した成果物は、ASL(Amazon Software License)に従
GraphQL caching ②AWS Prototyping program を利用した開発
# はじめに
本記事は以下の三本立てシリーズの二本目の記事です。[①導入の背景と目的](https://qiita.com/datahaikuninja/items/f22fde98e76602f12691)
②AWS Prototyping programを利用した開発
[③プロダクションリリースまでに解決した課題、導入による効果](https://qiita.com/datahaikuninja/items/d00316226910f3df2eb8)本記事では、以下のトピックを扱います。
– GraphQLとCloudFrontの相性
– AWS Prototyping program
– 技術選定# GraphQLとCloudFront の相性
実はGraphQLとCloudFrontの相性は良くはありません。「GraphQL」「caching」「CDN」等のワードを組み合わせてGoogle検索をすると、別のCDN製品に関するいくつかのBlogが見つかりますが、CloudFrontでキャッシングしたという事例はありませんでした。CloudFront以外のCDNについて
GraphQL caching ①導入の背景と目的
# はじめに
GraphQL cachingとは、GraphQL APIのレスポンスをCDNでキャッシュすることにより、GraphQLサーバーの負荷をオフロードし、APIを高速化するキャッシュ層です[^1]。Amazon CloudFrontを使用して、ALB+ECSで構成されるGraphQLサーバーのレスポンスをキャッシュする仕組みを、[LOWYA](https://www.low-ya.com/)という自社ECサイトへ導入したので、以下の三本立てのシリーズで記事を書いていきたいと思います。
①導入の背景と目的
[②AWS Prototyping program を利用した開発](https://qiita.com/datahaikuninja/items/e3c5302602c38b6a8b71)
[③プロダクションリリースまでに解決した課題、導入による効果](https://qiita.com/datahaikuninja/items/d00316226910f3df2eb8)本記事は、①導入の背景と目的 の記事です。
なお、本記事を含む三本立ての記事の公開には、JA
Amazon S3 セキュリティとバックアップのベストプラクティス
# はじめに
**AWS内にデータを保管**する際、多くのケースで**S3が第一の選択肢**となるかと思います。一方で、データ保管には**セキュリティやバックアップの設定が不可欠**であり、適切に設定しないと**データの窃取・消失リスクが増大**してしまいます。
本記事では、上記リスクを下げるために役立つ**S3のセキュリティとバックアップ機能をまとめ**た上で、[**公式ベストプラクティス**](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/security-best-practices.html)**の実践方法を整理**しました!
「S3を何となく使っているけど、適切に設定できているか不安」という方に、ぜひご一読頂ければと思います。
# 概要
AWS 構成図作成ツール diagram.net (旧draw.io)
diagrams.net(旧draw.io※)でAWSの構成図を手軽に描いてみる。
※draw.ioはセキュリティ上の理由から2020年にdiagrams.netに名称変更
https://www.diagrams.net/blog/move-diagrams-net—
diagrams.netにアクセスし「Start」を選択。
https://www.diagrams.net/![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651099/32214657-8e77-2c89-0246-3b17109fee58.png)
「新規ファイルを作成する」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651099/2dce2caa-9053-d720-1652-0aa6caaeb64f.png)「白紙ファイル」を選択し「作成する」をクリック。
(画面上部の「ファイル名」
【AWS】クラウドインフラの基本設計を構築してみた【ALB】【Route53】【ACM】
お疲れ様です。以前AWSの構築のタスクにちょっとだけ関わることができました。そこで復習を兼ねてマルチAZ構成の基本的な設計を構築してみました。
・VPCの作成
・ルートテーブルの設定
・RDSの構築
・ALBの作成とリダイレクトの設定
・Route53のホストゾーンとドメイン登録
・ACMの作成構築を進めていく上でわからないところを調べ上げ改めて気づきになった学びをアウトプットしてみました。
構成としてはこのような設計で作ります。
![スクリーンショット 2022-10-02 8.42.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1828177/58831609-f80a-fcff-39de-c31a0265988b.png)
# VPCの作成
まずはAWSの基本、VPCを作成します。VPCの説明については「AWSで基本的なネットワークを構築してみた」の記事をご覧ください。
(コピーしてCtrl +Fで画面内検索すれば一番下の参照記事に飛びます!)![スクリーンショット 2022
インスタンスメタデータ とは
## 勉強前イメージ
EC2の情報が入ったやつ?
## 調査
### インスタンスメタデータ とは
EC2のインスタンス内からのみアクセスが可能なインスタンスに関するデータです。
アクセスできるユーザであれば誰でも確認することが出来ます。### アクセスしてみる
EC2インスタンスにログインして以下コマンドでURLにアクセスしてみます。
これを打つと、どんなデータが取得できるかのメタデータ一覧が取得できます。`curl http://169.254.169.254/latest/meta-data/`
“`
$ curl http://169.254.169.254/latest/meta-data
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
events/
hostname
identity-credentials/
instance-action
instance-id
instance-life-cycle
instance-type
local-hostname
local
Cloud Watchで請求アラームを設定する
マネコンにログイン
http://console.aws.amazon.comリージョンをバージニア北部に変更する。
請求データとそのアラームはバージニア北部で表示・管理。
リージョンを変えておかないと後々で警告が出て設定できないのでここでやっておく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651099/33da2ae6-8da4-8998-a4fc-8425e3849013.png)Cloud Watchに移動し、左メニューから「請求」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651099/f84c8e0a-667b-b65d-5177-eb9bb16d55a8.png)画面下方の「アラームの作成」を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6
WindowsのVirtualbox上にAWS localstackを自動構築
## 目的
WindowsPC上に、Docker Desktopを使わずにAWS localstack環境を構築する。
構築したlocalstackは、ホストのWindowsPCや別のVirtualBox上の仮想マシンからもアクセスできるようにする。## 作業環境
– Windows 10
– Virtualbox 6.1.14
– Vagrant 2.3.1ここに、Vagrantとansible_localを利用して
【Virtualbox + Ubuntu + Docker Engine + localstack】
の環境を自動構築する。仮想マシンのネットワークは、NAT(eth0)+ホストオンリーアダプタ(eth1)で構成する。
ネットワークの説明は [こちらの記事](https://qiita.com/feifo/items/0fde474005589afcff68) がわかりやすかった。
・仮想マシン⇒インターネットはNAT(eth0)
・ホストマシン⇔仮想マシン、仮想マシン⇔仮想マシン間の通信はホストオンリーアダプタ(eth1)
を通ることになる。
locals
コンテナイメージを利用した簡単なLambdaを作成する
コンテナイメージを使用したLambdaを作る必要があったので、pythonで簡単なHello worldを表示させるだけのLambdaの作り方をメモ。
# 0.作成手順
1.各ファイルの準備
2.ECRリポジトリの作成
3.ECRへイメージをプッシュ
4.Lambda関数の作成
5.Lambda関数のテスト# 1.各ファイルの準備
Dockerfileとpython処理を記述したapp.pyを準備して同じディレクトリに置く。app.pyにはHello worldを返すだけの処理を記述。
“`python:app.py
def handler(event, context):
return ‘Hello world!’
“`Dockerfileはドキュメント:[Lambda コンテナイメージの作成](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images-create.html#images-create-1)を参考に作成。
“`Dockerfile:Dockerfile
FROM public.ec
Google Cloudの資格をほぼ1ヶ月で全制覇した話
# はじめに
はじめまして!
とあるセキュリティエンジニアです。
**約1ヶ月でGCPのほぼ全ての資格を取得するという偉業**(?)を達成したので皆さんにもその話をシェアしたいと思います。勉強法にも触れていますので、今後GCP資格の取得を目指す方にとっての参考になると嬉しいです。
![](https://storage.googleapis.com/zenn-user-upload/a0d09238357f-20220930.png)# 経歴
本題に入る前に、簡単に自分の経歴を載せておきます。
– 2020年入社(新卒3年目)
– 入社直後は**ネットワーク設計**の部署(とある大手証券会社の大規模営業店ネットワークを設計)
– 1年でセキュリティの部署に異動し、現在はゼロトラスト推進のプロジェクトに参画(今のロールは**セキュリティエンジニア**)
– パブリッククラウドの業務経験は若干
– **APN ALL AWS Certifications Engineer 2022**
# パブクラ資格を取り始めたきっかけ
経歴を読んで、セキュリティエンジニアがなぜ?と思わ
[Rails] ec2上でcronを使ってrakeタスクを定期実行
## 実現したいこと
ec2にデプロイしたrailsアプリケーションでrakeタスクを定期実行したい。
あまりいい記事が見つからなかったのでまとめました。## 前提
2022年10月現在
ruby 3.1.2
Rails 6.1.6
whenever
ec2
capistranoを使ってデプロイ## 手順
1. Capistranoを適用する
2. schedule.rbを編集する
3. crontabをupdate
4. タイムゾーンを変更する
5. ec2上でエラーログを確認する方法## 1, Capistranoに導入
capfileとdeploy.rbを編集する。
“`capfiel“`
“`ruby
require ‘whenever/capistrano’
“`
“`deploy.rb“`
“`ruby
set :whenever_roles, -> { :app }
“`## 2, schedule.rbを編集する
確認すべきポイントはrakeタスクの環境がproductionになっているか。
そしてec2はbashなので、zshを
スポットインスタンス もう少し詳しく調べてみる
## 勉強前イメージ
スポット的に買ったりするやつ?
オンデマンドより安いイメージ## 調査
### スポットインスタンス とは
スポットインスタンスとはEC2の空いているキャパシティを活用して
オンデマンドインスタンスより安く使用するインスタンスの購入方法を指します。元々EC2のインスタンス購入方法には以下の3種類あります。
– オンデマンド
使用した分だけ支払いをするインスタンスで、EC2を普通に利用しようと起動するとこちらになる。
EC2の定価で支払いをします。– リザーブド
1年や3年使用するというコミットがある代わりに安く使用できる方法です。
インスタンスタイプを変えられたり、インスタンスファミリーの中で変更できたり細かく決められています。
詳細は [こちら](https://qiita.com/miyuki_samitani/items/41fa570054568bbbac5f) をごらんください– スポット
今回のタイトルになってるインスタンスの購入方法。
空いているインスタンスを安く購入できるが、空きがなくなると停止される可能性がある。
AWS初心者は必ず読むべき!必見!AWSの基本③Webサーバー構築(EC2作成)
# この記事でやること
パブリックサブネットの中にWebサーバーを設置します。# 注意
時期によって画面などが変わったりするのでご了承ください。# EC2とは
AWSのクラウド上の***仮想サーバー***のことです。
***インスタンスはEC2からたてられたサーバー***です。
時間または秒単位の従量課金制で、サーバーの追加、削除、マシンスペック変更も数分でできます。
OSより上のレイヤーは自由に設定できるみたい柔軟なサービスです。### EC2作成の手順
***1 AMIの選択***
***2 インスタンスタイプの選択***
***3 ストレージ追加***
***4 セキュリティグループの追加***
***5 SSHキーペア設定***## AMI(Amazon Machine Image)とは
**インスタンス起動に必要な情報が入った、OSでサーバーのテンプレ的な存在***です。
自前のカスタムAMIが作成でき、***カスタムAMIから何台でもEC2インスタンスが作成可能***です。## インスタンスタイプ
***サーバーのスペックを定義***したものです。
イン
Flaskで立てたサーバーが外部からアクセスできない場合に確認すべきこと
# 外部からアクセスできない場合に確認すべきこと
flaskでサーバーを立ち上げたときにlocalhostからは通信が可能だが、外部から通信ができない場合に確認すべきことについてまとめました。先日ひどいめにあったので。
flask関係なく通信エラー時に確認すべきことも含みます。## サンプル
一番シンプルなサンプルコードを載せます。
flaskコマンドではなくpython側で実行してるので、flaskコマンド使用者はうまく読み替えてください。
問題ない方はここは読み飛ばしても構いません。“`python
from flask import Flaskapp = Flask(__name__)
@app.route(“/”)
def hello_world():
return “Hello, World!
”
def main():
app.run()if __name__ == ‘__main__’:
main()
“`こちら実行すると、以下のような出力になります。アクセス時の出力も出てます。
“`she
AWS Glue DataBrew とは
## 勉強前イメージ
AWS Glue とはまた別?お友達?
## 調査
### AWS Glue DataBrew とは
フルマネージドのETLサービスになります。
ETLとはExtract(抽出) Transform(変換) Load(書き出し) の頭文字を取ったもので
基本的にはデータウェアハウスに保存する前処理として行われる処理になります。
詳細は [こちら](https://qiita.com/miyuki_samitani/items/8f7008e1c457e1b9add8) をごらんください。元々データウェアハウスにデータを入れる際は、↑のETLのサイトにも書いてますが
大規模なデータの抽出を行って、適切な型に変換をして、データウェアハウスに書き込みをする という工程があります。
機械学習やデータ分析などは更にデータ量が多くなったりするため、それぞれの工程でスケールアップできるような仕組みを行う必要がありました。
その為、ETLの開発者やインフラエンジニアが大規模なパイプラインを構築する必要があり対応が難しい状態になります。
またデータ分析などを進めていくに
AnsibleをAWS Systems Managerから実行するCI/CDを構築する。(その2:CodeCommitの準備)
# はじめに
前回は`Systems Manager`の`RunCommand`機能を使って`Ansible`を実行してみました。今回は`Ansible`の`Playbook`等を格納するGitリポジトリを`CodeCommit`を使用して作成&アップロードしてみようと思います。
– 【前】[AnsibleをAWS Systems Managerから実行するCI/CDを構築する。(その1:Systems ManagerからのAnsible実行)](https://qiita.com/sakai00kou/items/5604b94dd2c87922538f)
# CodeCommitとは
`CodeCommit`は`AWS`で提供しているGitリポジトリとなり、他の`AWS`サービスと連携がしやすくなっているサービスとなります。# CodeCommitの作成
`CodeCommit`のGitリポジトリの作成は簡単で、マネジメントコンソールから「`AWS CodeCommit`」→「**リポジトリを作成**」でリポジトリを作成します。![Monosnap_20220914
aws cloudformation パラメータ設定の際に、CommaDelimitedList にはまった
## 表題の通り、はまったのでメモ
#### cloudformation で可変長の変数を使用するために文字列のリストを使用しようと思ってハマったのでメモ
“`yaml:yaml
AWSTemplateFormatVersion: ‘2010-09-09’
Parameters:
Valueinclude:
Type: CommaDelimitedList
Description: Values included.
Default: “a,b,c”・・・
“`– 上記のようにパラメータに、文字列のリストを指定しようとしたら、以下のエラーが出た。
“`py:!Ref でパラメータを取得しようとした場合の error
Property validation failure: [Value of property {/Environment/EnvironmentVariables/9/Value} does not match type {String}]
“`“`py:!Sub でパラメータを取得しようとした場合の error
T
PythonでDynamoDBの単一テーブル設計を扱う
PythonでDynamoDBを単一テーブル設計で使うためのライブラリを作りました。
https://github.com/medaka0213/DynamoDB-SingleTable## 概要
DynamoDBは高パフォーマンスでサーバーレスなNoSQLデータベースですが、テーブル設計が大変なのが難点です。
単一テーブル設計を使えば、一個のテーブルと数個のGSIを用意するだけで、一個のサービスの全てのデータモデルを効率的に管理することができます。## 使い方
### インストール
“`
pip install ddb-single
“`### テーブルを作る
DynamoDBのテーブルを作ります
DynamoDB-Localを使う場合、`endpoint_url=”http://localhost:8000″` でローカルのエンドポイントを設定できます。“`python
from ddb_single.table import Table
from ddb_single.query import Querytable = Table(
ta