AWS関連のことを調べてみた2020年07月04日

AWS関連のことを調べてみた2020年07月04日
目次

AWS SAA対策メモ(EC2, IAM編)

SAA対策の自分用のメモ。
どんどん更新して加筆修正していく予定。

## EC2
インスタンス起動時にパブリックIPアドレスを自動振り分けするか、無効にするのか選べる
パブリックIPアドレスはECインスタンスを再起動すると変わる
EC2の課金はrunningの時のみ

プライマリプライベートIPアドレス
最初に付与するプライベートIPアドレス
指定しなくても自動割り当て
EC2インスタンスを削除しない限りずっと同じ

セカンダリプライベートIPアドレス
ENI(Elastic Network Interface)をEC2にアタッチすることで、を割り当てることができる。
取り外し自由であり、他のEC2インスタンスにも付け替え可能

オンデマンドインスタンス デフォルト。初期費用などなし。従量課金。
リザーブドインスタンス 1 or 3年間、最大75%引き、全額/一部前払いか前払いなしで割引率は変わる。
 スタンダード リージョンやAZを指定、その中でなら配置転換可能。他へは手続きが必要。
 コンバーティブル インスタンスファミリーの変更が可能。割引率は低い

スポットインスタンス 最大

元記事を表示

CDKでLambda作ってSAMでローカルで動作確認したメモ

最近仕事でCDKを触り始めたので、個人でも適当なSlack botでも作ってみようとかと思って触ってみてます。デプロイがとてもラクとはいえ、Lambdaを動作確認しながら作っていくのに毎回デプロイするのはつらみです…

調べてみると、CDKで作ったLambdaでもSAMを使ってローカルで動かす方法があるようなので、スタックの作成からLambdaのローカル実行まで一通り試してみました。

# 環境

* OS
* Windows10 WSL(Ubuntu 18.04 LTS)
* macOS Mojave
* CDK 1.46.0
* SAM 0.53.0
* Docker 19.03.11
* VirtualBox上のUbuntu 18.04 LTS

# CDKでLambdaの作成

## CDKインストール

npmでインストール。

“`sh
# CDKインストール
npm install -g aws-cdk
/home/hotaru/.anyenv/envs/nodenv/versions/12.16.3/bin/cdk -> /home/hotar

元記事を表示

初めての共同執筆で学んだことと失敗談

縁あって会社の同僚と技術本を共同執筆することになりました。
全員執筆は初めてだったのでてんやわんやになりながらもなんとか無事書き終えはしましたが、「ああすればよかったのかな」と思う事もそれなりにありました。
これから技術書の執筆にチャレンジする方や、次の機会(といっても今のところ予定はなし)のためにメモを残します。
これから執筆にチャレンジされる方の参考になれば嬉しいです。

## 執筆時の心情とやったこと
### 執筆準備期間
執筆の話が出たのが昨年の夏頃で内容は AWS 関連の入門書でした。
まずは、出版社の方と大綱スケジュールと執筆内容の認識合わせを行い、大まかな計画(本の章などをどうするか)をたてます。
僕らは年末に re:Invent が控えているので年明けから本格的に書き出す計画でそれまではかるく作業をすすめることにしました。
振り返るとこのあたりで決めごとをきちんと抑えずにふわっと始めたのが後半のバタバタに繋がった気がします・・

### 執筆初期
re:Invent の影響を受けなさそうなところから執筆していく。
.md 形式で執筆してファイルを GitLab のリポジ

元記事を表示

[AWS] AWS 利用費 の変遷をふり返ってみる

# はじめに
\_s\_\_o\_ です。

2019 年 1 月頃から (個人的に) AWS 利用 (運用) を開始しました。今月 (2020 年 7 月) で約 1 年半。費用としては、現在は、だいたい「6 \$ 強/月」におさまっています。自身の備忘も兼ねて、初期から今までのコスト変遷を追うとともに、コスト変動タイミングで何をしたか、少し振り返っていきたいと思います。

# AWS 利用の動機
そもそも、なぜ AWS 利用をしようと思ったのか。理由は主に下記 3 点です。

– 2018 年 11 月末に結婚。妻と家計を共有できる Web アプリが欲しかった
– 2018 年 12 月時点、AWS 絡みの案件にアサインされる目処が立っており、自己研鑽をしたかった
– サーバ運用も生業としていたので、仕事勘を養いたかった

一番上の理由が主です。夫婦間でしか利用しない Web アプリのため、サービス (サーバ) の要件は下記程度でした。

– 簡単な Web アプリが動く程度のスペックで OK
– 夜間帯は停止していて OK
– 何かあっても、最悪 1 日前に戻せれば OK
– で

元記事を表示

転職2日目

## はじめに
転職生活2日目は、1日目に依頼を受けていたHPの[CloudFront](https://aws.amazon.com/jp/cloudfront/)への移行作業の準備を行いました。

## つまずいた事
– CloudFrontの利用方法
– CloudFrontを利用するにあたり、S3へアップロードをする際のコマンドがわからなかった
– S3のディストリビューションの設定がうまく行かなかった

[CloudFront](https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/Introduction.html)自体初耳だったので、教えてもらった事を端的に書いていくと以下です。

## CloudFront
– スピードと安全性の高さが魅力の「高速コンテンツ配信ネットワーク機能」である
– 静的ホームページを配置する事で、今まで払っていたサーバー代等のコストダウンに繋がる
– 静的ホームページの場合、index.htmlを配置しておくことで、フレームワークを利用しなくても簡単に

元記事を表示

Email 配信にまつわる諸問題

最近、自分が担当しているプラットフォームで、メールが届かない事象が頻発した。備忘録も兼ねて、記録を残しておく。

## 前提
– 対象システム:EC platform (B to C)
– Eメール送信数: 3,000通/日 程度

## 補足(というか、言い訳)
当該環境は海外のベンダーにより管理されており、十分な設計ドキュメントが整備されていなかった。また、Postfix のログ取得すら依頼が必要で、詳細を細部まで完璧に把握することは困難。そのため、こちらでの分析・調査は専らWindowsのコマンドプロンプトとGmailのメールヘッダ、各種Webサービスで行った。

## 環境
– Cloud platform : AWS
– メール送信サーバー : EC2 インスタンス
(Commerce solution の BackOffice server に Postfix が同居)
– Global側との様々なコミュニケーションから、妄想でざっくりの構成を想像するに以下のような作りになっていると思われる。
Overview.p</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>AWS</div>
<div class='tag-cloud-link'>EC2</div>
<div class='tag-cloud-link'>postfix</div>
<div class='tag-cloud-link'>メール送信</div>
<div class='tag-cloud-link'>spamhaus</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/kanmei/items/efb46de4e89be0aafb23'>元記事を表示</a></div>
<h3 id=AWS SAA対策メモ(ストレージとDB編)

SAA対策の自分用のメモ。
どんどん更新して加筆修正していく予定。

## インスタンスストア(エフェメラルディスク)
ホストコンピュータに物理的にくっついているものなので、インスタンスを再起動すると、別のホストコンピュータで起動されてしまし、データは消えてしまう。

## EBS
ブロックストレージ
EC2インスタンスとは独立しているため、再起動してもデータは残る
汎用SSD

プロビジョンドIOPS SSD
ハイパフォーマンス、汎用SSDではできないミッションクリティカルな低レイテンシー高スループット向け
EBS最適化推奨
高スループットなアプリや大規模DB(RDSやNoSQL)で使用

スループット最適化HDD
高スループット低コスト、ビッグデータやデータウェアハウス、ログ処理向け

コールドHDD
アクセス頻度の低い大量のデータ用

スナップショットによるバックアップは増分のみ,
EBSボリュームを別リージョンでも使いたい時は、スナップショットを作成し、別リージョンで復元、そのEBSボリュームを新しいEC2にアタッチする

## S3
スタンダード
標準邸頻度アクセス
1ゾ

元記事を表示

Amazon Transcribeを使って音声ファイルを文字越しする

Amazon Transcribeが日本語に対応していたので使ってみたかった。
Terraformスクリプト全体は[こちら](https://github.com/nittyan/transcribe)にあります。

# 全体概要
音声ファイルをS3のバケットにアップロードすることをトリガーにして、S3がLambdaを実行し、LambdaはS3にアップロードされたファイル名をキーにしてTranscribeを呼び出す。

![Google.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65020/364e3a58-febe-0578-acb0-2c0e3529b46f.png)

# Terraformのディレクトリ構成
以下のようにディレクトリをきっている。
terraformのディレクトリの切り方はいっつも迷う・・・・

“`
root
┣ iam # 権限まわり
┣ lambda
┗ s3
main.tf
variable.tf # これは各自作る
“`

#

元記事を表示

【AWS】AWS SDK for PHPを使ってSESでメールを送信する

## はじめに
PHPでSESを使ってメールを送信したいが、ちょっとAWSの認証まわりが面倒くさかったり、
検索しても以前の情報とかがヒットしたりするので書いておきます。
認証まわりは色々やり方がありますが、AWS認証情報用のiniファイルを作成して実行する方法です。

## 送信用のポリシーを作成する
SES送信用のポリシーを作成してください。

“` JSON
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: “ses:SendEmail”,
“Resource”: “*”
}
]
}
“`

## SES認証用のユーザーを作成して、iniファイルを作成する
AWSのIAMでSES認証用のユーザーを作成してください。
ポリシーは上で作ったやつ。
作成すると、「Access key ID」、「Secret access key」が表示されるので、それを元に以下のiniファイルを作成してください。

“`aws_crede

元記事を表示

Private subnet内でNAT gatewayを介さずにlambdaからlambdaを呼び出す

###はじめに
 だいぶ特定領域の話になりますがとあるプロダクト開発にあたってちょっとした知見を得たので後学のために残しておきます。

###構成
 まずは今回の構成を一部分だけピックアップしたものが以下のものになります。
![qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53020/b3bb5d94-27c4-a3d5-75a7-3e672c810782.png)
 要件としては、プライベートサブネット内で動いているサービス(今回であればECS上で動かしています)からマイクロサービスとして切り出した同じくプライベートサブネット内のlambdaを呼び出し(invoke)、さらにそのlambdaから別のlambdaを呼び出す。
ただし、lambdaからVPC内のリソースにアクセスするためにlambdaをVPC内に置く必要があると言った具合です。
 この場合同じVPC内なため、セキュリティグループを適切に設定すればECSからlambdaを呼び出すことはうまくいきますが、lambdaから別のlam

元記事を表示

ESCにtargetGroupを2つ登録する際にコンソールからだとできないのでメモ

ESCにtargetGroupを2つ登録する際にコンソールからだとできないのでメモ

“`
aws ecs create-service \
–cluster api \
–service-name api \
–launch-type FARGATE \
–load-balancers ‘[{“targetGroupArn”:”arn:aws:elasticloadbalancing:ap-northeast-1:xxx:targetgroup/pro-api/xxx”,”containerName”:”nginx”,”containerPort”:80},{“targetGroupArn”:”arn:aws:elasticloadbalancing:ap-northeast-1:xxx:targetgroup/pro-api-internal/xxx”,”containerName”:”nginx”,”containerPort”:80}]’ \
–desired-count 2 \
–task-definition pro-api:1 \
–network-co

元記事を表示

InfoScale Enterpriseを用いたSAP HANAの可用性向上と災害対策【AWS編】

# はじめに
企業がパブリック クラウド上に SAP HANAを導入する過程で、その可用性要件に対処する事が重要です。そのために、HANA データベース フレームワークは、組み込みの高可用性 およびシステム レプリケーション (HSR) 機能を提供します。ほとんどの障害をカバーしますが、幾つかの障害イベントが発生した場合、復旧の際に手動のオペレーションが必要になります。
本記事では、InfoScale Enterprise を使用して AWS クラウドにデプロイされるSAP HANA および SAP NetWeaver/ S/4HANA 環境の可用性を向上させるために必要な技術情報を説明しております。
# InfoScaleによって、AWS上のSAP HANA の可用性が向上するユースケース
以下の図は、InfoScale for SAP HANA でサポートされる可用性の構成シナリオを表しています。本番環境で SAP HDB インスタンスに障害が発生した場合、InfoScale は障害を検出し、そのインスタンスを開発ノードまたはテストノードに移動します。 InfoScale Ente

元記事を表示

CodeCommitにcommit/pushしたらLambda経由でSlackにcommentつき通知を飛ばす

AWS CodeCommit上で管理しているリポジトリに、誰かがcommit/pushしたらSlackで通知を受け取りたいと思って試行錯誤したときのメモになります。Lamda関数はNode.jsで記述しています。

# 前置き

* CodeCommitやLamda、Slackの細かい話は書きません。
* Lamda関数のNode.jsのサンプルコードや注意点だけを書きます。
* 以下はすべてAWS Console上からの操作です。

# 処理の流れ

CodeCommit → トリガー → Lambda → Slack Incomming WebhookのURLにPOST → Slackからスマホアプリ等に通知が飛ぶ

# Lamda関数

適当な名前でLamda関数を作成します。以下のサンプルコードをindex.jsに上書きします。`options`のIncomming WebhookのURLと、中程にあるSlack上に表示するメッセージのBlock Kitテンプレートはお好みに合わせて修正します。

“`js:codeCommitToSlackWebhook
const AWS

元記事を表示

プロキシに阻まれながらAWS CLIをEC2インスタンスから動かしたときの話

# この記事の概要
プロキシがある環境下でAWS CLIをEC2インスタンスから使う方法を書きます。
その中でハマったポイントがあったのですが、ハマったことにより知見が深まったのでQiitaに投稿します。
主に**AWS CLI周り**の話と**Squid**の話となります。

使ったツール・プロダクト等は以下です。

* Squid(Windows版)
* AWS CLI
* Direct Connect
* IAM
* EC2
* S3(あまり本題には出てきませんが)

# 背景
弊社には他の多くの会社さんと同様、インターネットへ接続するためのプロキシ(通称「社内プロキシ」)が存在しています。
そんな弊社に所属する私は業務上の事情でAWS CLIでS3上の操作を行う必要が出てきました。
しかし、先日開発用端末を変えたことにより、その端末にAWS CLIがインストールされていないのです。
セキュリティの観点からアクセスキーは発行したくないし、端末にAWS CLIをインストールする以外の方法を検討しました。
そこで、IAMロールをEC2インスタンスにアタッチすることでアクセスキーを発

元記事を表示

【Laravel × Redis】No connections available in the pool…の原因と対処法

# はじめに
Laravelにて開発中、以下のようなエラーが発生したため、その原因と対処法を簡単に記します。

“`php:laravel.log
No connections available in the pool {“exception”:”[object] (Predis\\ClientException(code: 0): No connections available in the pool at /var/www/application/vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php:337)…
“`

エラーメッセージより
>Redisの接続に異常がある

と見当がつく。

# 原因
Redisへの接続情報に誤りがあった。
具体的には、Redisのホスト名が誤っていた。
根本原因は、AWS Systems Managerのパラメータストアで管理していた、Redisのホスト名に関する変数の値が古いままとなっていた。

# 対処法
1. Laravelの.envを確認。
2. Redi

元記事を表示

Amazon Simple Email Service が、アジアパシフィック (東京)リージョンで利用可能に!!!!!!

#[Amazon Simple Email Service が、米国東部 (オハイオ)、アジアパシフィック (シンガポール)、アジアパシフィック (東京)、およびアジアパシフィック (ソウル) リージョンで利用可能に](https://aws.amazon.com/jp/about-aws/whats-new/2020/07/amazon-ses-available-ohio-singapore-tokyo-seoul-regions/)

このリンクだけで話が終わってしまうんですが。

何が凄いって、もうこれで他のサービスは全部東京リージョンなのに、SESだけバージニアとかいう提案書を書かなくてもいい…楽。
~~たまにother serviceとか書いて、リージョン外に置いてる人見かけるけど顧客がグローバルサービスと勘違いするからやめて欲しい~~

ちゃんとap-northeast-1になってる!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536700/fea819fb-b0c5-

元記事を表示

aws-lambda-redshift-loaderでS3とRedshiftを連携する

# 概要

https://github.com/awslabs/aws-lambda-redshift-loader を利用してS3とRedshiftを連携する時の手順についてのメモです。これを用いる事で、S3にCSVファイルを置くだけで、自動的にRedshiftにそのCSVをINSERTしてくれるようになります。基本的に上記のREADMEを読んで、実行していけば良いだけなのですが何点かつまづいたのでそれをメモしておきます。今後同じ事をする際に参考になれば幸いです。

# 前提

今回の例では既にVPCやサブネットがある状態で構築していきます。またCloud Formationで環境を構築しますが、実行するユーザーは必要な権限が与えられている(具体的にはAdministratorAccessが付与されている)状態で行ってます。利用したaws-lambda-redshift-loaderのバージョンは2.7.3になります。また途中でnode.jsを利用する部分があり、ローカルでnode.jsの最新が動くようにセットアップされており、ローカルからAWS CLIを実行できるように設定済み

元記事を表示

EC2、RDSを利用してRailsアプリをデプロイする [NGINX + puma + PostgreSQL + Rails 6]

# 目標:AWSのEC2、RDSを利用してRailsアプリをデプロイする

– Railsチュートリアルをより実践的な環境、Ultimate Hard Modeで挑みたい
– NGINX, puma, PostgreSQL, Rails 6で開発〜デプロイ
– ローカル開発環境へ移行
[はじめてのDockerでRails開発環境構築 [NGINX + Rails 5 (puma) + PostgreSQL] – Qiita](https://qiita.com/daddy_hacker/items/66d8fd40ce01d1aeea02)
– 脱Herokuで模擬CI/CD環境を取り入れたい(この後自動デプロイまでいきたい)
– AWSを利用した、より実践的な本番環境構築のウォームアップ

このような目的のため、とりあえずAWS上でアプリが動くことを目標にしています
そのためセキュリティ面で本来必要そうな手順(環境変数定義や、SSL対応)を排除して進行しております

備忘録的に記録を残しておりますので、
思い出したことや、不備あれば随時訂正いたします

# 気づき

– 環境

元記事を表示

最短でAWS初心者(未経験含む)がソリューションアーキテクトアソシエイト(SAA)を取得するためにやること2選

こんにちは、みきおです。
タイトルの通り、初心者(未経験)だけどとにかく効率的にソリューションアーキテクトアソシエイト(SAA)を取得したい人の養分になればと思います。

# 対象
– 初心者(未経験)だけどSAAを取得したい人
– とにかく効率重視でSAAを取得したい人
– SAAを取得したい人
– Black Belt?なにそれ?だけどSAAを取得したい人
– 他の人がどんな勉強をしたか参考にしたい人

# はじめに
SAAを取得するためにやるべきことは大きく3つのステップに分けられます。

– AWSサービス群の全体の把握
– 各サービスの詳細の把握
– 試験対策

上記のうち、各サービスの詳細の把握と試験対策についてだいぶ被るので一つにまとめます。

# 1. AWSサービス群の全体の把握

元記事を表示

Forward Security Hub Findings to Slack featuring Cross-Account Cross-Region

![computer_keibiin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486518/27e73535-67c3-026e-08fd-589a6cfad293.png)

AWS Security Hub という便利なサービスがあります
今回はこのサービス自体の解説は省きます。簡単に言えばセキュリティが専門外の人間にもフレンドリーな心強い味方というところでしょうか[※1](#note)。
想定読者の方が [複数アカウント、複数リージョンに同サービスを有効化](https://github.com/awslabs/aws-securityhub-multiaccount-scripts) できていること、またはかかる前提知識があるものとして、そこから先のことをやります

## 動機

こいつはいちリージョン毎にセッティングしていく必要があります。それがまあ頑張ってできたとしましょう。
[マネジメントコンソール](http://www.youtube.com/watch?v=HsWtPG_rTa

元記事を表示

OTHERカテゴリの最新記事