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

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

AWSの無料枠使用アラートが来たので確認してみた

#無料分使用のアラートがくるまで
勉強用にアカウントを作成し、EC2を作成。作成して数日程で登録してあるメールアドレス宛に以下のアラートメールが来た。
##EC2インスタンス
・「EC2インスタンスの稼働時間の85%を使用したよ」という内容。インスタンスをしばらく立ち上げっぱなしにして置きアラームがどう出るか確認した。
無料使用時間が750時間なので月末近くになって通知。
![アラート2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594936/61fdfe52-8156-6e75-f322-b68ab76ef247.png)

##S3
リクエストの85%を使用したよという内容。
S3を設定して1~2日で来たので少し焦った。。あれこんなに使った覚えないけどという感じだった。
![アラート4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/594936/f0183ae6-7769-cbc8-9b5d-2ab1922042

元記事を表示

VPCでネットワークを構築してみる

今回はAWSでVPCを作りながら、ネットワークの基礎を学んでいく!

#VPC作成
マネジメントコンソールでVPCを検索
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/f190a78a-686c-c763-8a4a-0474ffdccd42.png)
VPCの画面右上の地域の東京にする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/2d404f9b-7f8f-28d6-ff07-d4df4517b3ff.png)
左側のメニューからVPCを選択し、VPC作成を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/13719c79-f12d-cb9f-4629-73553263ff81.png)
以下の入力項目を設定し、右下の作成を選択。
![ima

元記事を表示

投稿機能でS3に画像をアップロード機能

##投稿機能の動作確認
今回は以下のことができるアプリとします。先に全ての投稿がうまく行くことを確認しましょう。もし不具合があるときの原因は「ローカルでの開発より後に行った作業」にあるので本番環境に上げる作業を確認してください。
①テキストのみの投稿
②画像のみの投稿
③テキストと画像両方の投稿
まず最初に、S3を使用する上でどうなると被害が出るのか確認します。
悪意を持ったユーザーにAWSのIDとパスワードが漏れてしまうことで被害が発生します。
AWSは従量制のサービスのため、他人がなりすましでログインして膨大な処理を行うと、それに対する支払いが発生してしまいます。
そのため以下の方法で手段で防ぎます。
AWS
①パスワードだけではログインできないようにする「二段階認証」
②ログインできたとしても機能をあまり使えなくする「IMAユーザー」
GitHub
③誤操作でIDやパスワードをpushしないように設定する「git-secrets」
があります。
##二段階認証
二段階認証は、あるサービスにログインする際に、通常パスワードに加えて、別の方法でも認証されないとログインできないようにす

元記事を表示

SQLとNoSQL(Amazon DynamoDB)

# 概要
* Amazon DynamoDBの入門として、まずNoSQLとSQLの違いは何か、またDynamoDBでの仕組みはどうなっているかについてまとめました
* 対象読者は、RDBは経験があるけどNoSQLとかはちょっとよくわかっていなくて気になっている方です。

# SQLとNoSQL(Amazon DynamoDB)の比較
## SQLとNoSQL概要
Oracle、DB2、SQL Server、MySQL、PostgreSQLなどのリレーショナルデータベースで使用するリレーショナルデータモデルへのアクセスにSQLが用いられてきた。2000年代半から後半にかけて他のデータモデルが採用され始め、これらの新しいクラスのデータベースとデータモデルを区別し、分類するためにNoSQL(Not only SQL)ができた。

以下では、SQLデータベース(リレーショナルデータベース)とNoSQLデータベース(とAmazon DynamoDB)の違いを示した。

## 最適なワークロード
### リレーショナルデータベース
トランザクショなるで強固な一貫性をもつオンライントランザクション

元記事を表示

Amazon Aurora MySQL 5.7 互換版で Comprehend 感情分析を試してみる

昨年の **[JAWS-UG 名古屋 AWS re:Invent2019 大復習(+忘年会)](https://jawsug-nagoya.doorkeeper.jp/events/100999)**で**「RDS / Aurora 関連アップデート」**と題して LT 登壇をしたのですが、その中で表題の内容についても触れました。

– **[RDS / Aurora 関連アップデート \[4-1\] Aurora Machine Learning](https://speakerdeck.com/hmatsu47/aurora-guan-lian-atupudeto?slide=11)(Speaker Deck)**
– スライドのページタイトル、Typo してて恥ずかしい

本日、JAWS DAYS 2020 オンラインライブ視聴の裏側で**「[JAWS DAYS 2020 [オンラインハンズオン] はじめての自然言語処理(NLP) powered by LINE API Expert](https://jaws-ug.doorkeeper.jp/events/105090

元記事を表示

CDKでS3バケットポリシーを設定する

CDKでS3のリソースを作成する際にバケットリソースを設定する実装コードのメモ
今回はFirebaseで作成したHostingアプリと特定のIPからのみAWSのS3バケットのオブジェクトを取得できるようにポリシーを設定します。

“`typescript:cdk-stack.ts
import cdk = require(‘@aws-cdk/core’)
import iam = require(‘@aws-cdk/aws-iam’)
import s3 = require(‘@aws-cdk/aws-s3’)

export class TestStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props)

// S3
const testBucket = new s3.Bucket(this, ‘test-bucket-id’, {
bucketName: ‘t

元記事を表示

JAWS DAYS 2020エンジョイ・オンライン!!~アウトプットしよう!~

今までQiitaは読むだけで記事を書くことはありませんでした。
しかし、初めて投稿してみようと思います。

きっかけをくれたのは、本日開催された、
[『JAWS DAYS 2020 ~サメの恩返し』](https://jaws-ug.doorkeeper.jp/events/105155)というオンラインイベントです。

このイベントは[JAWS-UG(AWS User Group – Japan)](https://jaws-ug.jp/)という、
AWSユーザのコミュニティーのメンバによって開催されました。
今年で10回目の開催とのことですが、私は初参加です。

#■私とAWSの出会い
私とAWSの出会いは2019年10月のことでした。
「顧客がAWSを希望しているので勉強して提案して」
との指示を上司から受けたのです。

私はインフラエンジニアでしたが、
AWSどころかパブリッククラウドについて全く知識がなく、
えっAWS?アマゾン?のような状況でした。

これは、ヤバイ、と思い勉強をはじめましたが、
私がインフラエンジニアとして問題と感じていた事が、
AWSで大きく改善でき

元記事を表示

AWS SNS から送られてくる POST リクエストは text/plain なので body パラメーターをパースするときは注意する

# 概要
AWS SNS から来る POST リクエストの body パラメーターをパースしようとしたときに、上手く行かなくてはまったので、解決策を共有します。

# 解決策
AWS SNS は HTTPS POST リクエストでアプリケーションにメッセージを送信してくれます。
参考記事: [受信者が HTTP/S エンドポイントの場合のシステム間メッセージングに Amazon SNS を使用する](https://docs.aws.amazon.com/ja_jp/sns/latest/dg/sns-http-https-endpoint-as-subscriber.html#SendMessageToHttp.prepare)

その際に、body パラメーターにメッセージの内容が入っているのですが、Rails の params メソッドを使用してもパラメーターの中身を取得できませんでした。

“`ruby
class SnsController < ApplicationController def message params # メッセージがない end e

元記事を表示

AWSでネットワーク入門

# はじめに

(学習メモです。)
私のように、令和になってから独学でプログラミングを学び始める人間にとって、圧倒的に不足しがち(だと思う)のはいわゆる「インフラ関係」の知識です。

そこで、今回の目的は、

– **AWSを実際に動かしながら、ネットワークの構築やそれに関わるサーバー、データベースの接続など、一通り全体を把握してみること**

です。

## 謝辞

今回の学習に当たってはudemyの*「[AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得](https://www.udemy.com/course/aws-and-infra/)」*が非常に参考になりました。

初学者の方に本当におすすめです。価格もボリュームの割に安価ですので、ぜひご覧ください。

加えて*AWS公式「AWSome Day」*の動画もおすすめです。

# 目標の成果物

– 「AWS:VPC」を利用し、クラウド上に仮想ネットワークを構築する
– 仮想ネットワーク上に「AWS:EC2」を利用しサーバーを立ち上げる
– 仮想ネットワーク上に「

元記事を表示

Capistranoを利用した自動デプロイ

##Capistrano
Capistranoは、自動デプロイツールと呼ばれるものの一種です。
自動デプロイツールのメリット
自動デプロイツールを利用することによって、デプロイ時に必要なコマンド操作が1回で済むようになります。これにより、手動でデプロイする場合に起こりがちな下記の問題を解消することができます。
1. コマンドの打ち間違い、手順の間違いが発生する可能性がある
2. 手順が多く、煩わしい
Capistranoを利用すれば、サーバにログインする必要はありません。ローカルのターミナルからのコマンド1つで、これらの作業をいっぺんに完了することができます。
また、一度Capistranoによるデプロイが成功してしまえば、打ち間違いによるデプロイの失敗は起こらなくなります。
##Capistranoの導入
まずは、必要なGemをインストールします。
Gemfile

“`
group :development, :test do
gem ‘capistrano’
gem ‘capistrano-rbenv’
gem ‘capistrano-bundler’
gem

元記事を表示

無料ドメインを使ってAWS上のアプリケーションをHTTPS化(上げ直し)

# 流れ
freenom(ドメイン取得)

Route53(DNS管理)

ACM(証明書作成)→SES(メールでドメイン認証)

Beanstalk(HTTPS化したアプリケーション)

# 無料ドメイン取得
## freenom
下記サイトで無料でドメイン取得できます。
https://www.freenom.com

私は.tkを使っています。
太平洋の島?かどこかのドメインらしいです。
詳しくは下記参照。
https://qiita.com/hanbaga324/items/da0c4f6fa8d365db10c9

## アカウント作成
freenomのアカウントを作成します。

## ドメイン取得
メニューバーのServicesからRegister a new domainを選択。
image.pngAWS上にRedmineを構築してSESで通知メールを送信(上げ直し)

# 前提
SESにドメイン、アドレスを設定済み。
SESでメールの送信制限を緩和済み。

# メール送信設定
## サーバ作成
MarketplaceのAMIを使って、EC2インスタンスを起動。
インスタンスの設定はよしなにやってください。動かすだけならデフォルトで問題ないです。
image.png

## SMTPサーバの設定
作成したインスタンスにSSHでログインして、設定ファイルを編集。

“`
vi /opt/bitnami/apps/redmine/htdocs/config/configuration.yml
“`

“`
email_delivery:
delivery_method: :smtp
smtp_settings:

address: “SESで確認

元記事を表示

aws-shell を dockerでクリーンに動かす

# TL;DR
https://github.com/hiroga-cc/docker-images/blob/master/aws-shell/Dockerfile

# 詳細

`aws-shell` の調子が良くないので、dockerでクリーンに実行します。

aliasでdockerを動かし、かつ `~/.aws` をボリュームとしてマウントする、という構成です。

“`Dockerfile
# alias aws-shell=’docker run –rm -it -v “$HOME/.aws:/root/.aws” hiroga/aws-shell:latest’
FROM python:3.7.7-alpine3.11

RUN pip install –upgrade pip;\
pip install –upgrade aws-shell
ENTRYPOINT [ “aws-shell” ]
“`

# 今後の改善点

* できれば毎度イメージを作るのを避けたいので `start` を利用したいのだが、 startにprofileオプションを渡す

元記事を表示

Lambda Layersを作成する時はdocker-lambdaやyumdaが便利

## はじめに

docker-lambda のビルドイメージで各ラインタイムバージョンに対応した Layer が作れる!

“`shell-session
$ docker run –rm -v $(pwd):/var/task lambci/lambda:build-python3.8 \
> pip install -r requirements.txt -t python/lib/python3.8/site-packages/
“`

AWS Lambdaで 実行したいソフトウエアパッケージは yumda で Layer 化できる!

“`shell-session
$ docker run –rm -v $(pwd)/git-layer:/lambda/opt lambci/yumda:2 yum install -y “`

## 一からやると環境準備は結構大変
AWS Lambda や Lambda Layers のよくある注意点としてネイティブバイナリの扱いがあります。
Lambda 実行環境は、特定の Amazon Linux 環境と

元記事を表示

AWS SSOプロファイルでもTerraformやSAM-CLIを実行する方法

# AWS SSOとAWS CLI V2

AWS CLI V2ではAWS SSOのプロファイルを書くことができます。

* [AWS CLI v2 が一般利用可能となりました \| Amazon Web Services ブログ](https://aws.amazon.com/jp/blogs/news/aws-cli-v2-is-now-generally-available/)

これにより秘匿情報(secret key)を `~/.aws/credentials` へ書く必要がなくなりました。
それだけではなく複数のAWSアカウントをAWS SSOで集中管理している場合は個別のAWSアカウントでIAMユーザーを作る必要もありません。
AWS SSOでAWSマネージメントコンソールとaws cliの実行権限を一貫した方法で一挙に管理することができます。バンザイ!

# AWS SSOの問題

ところが、この新しいプロファイルの方式はaws cli v2以外のツールではほとんどサポートされていません。

| ツール | issue |
|—–|—–|
| terrafo

元記事を表示

本番環境でDjangoサーバーの静的ファイルをAWS S3に配置するまで

Djangoサーバーを開発環境から本番環境に移行した時の話。

本番用のサーバーインスタンスをEBSで起ち上げ、CircleCIの構成をちょこちょこっといじってハイ終わり!と思っているとCSSが全く読み込まれない自体に。

理由を探してみるとDjangoのドキュメントで以下の内容を発見

“`
Serving the files

In addition to these configuration steps, you’ll also need to actually serve the static files.
During development, if you use django.contrib.staticfiles, this will be done automatically by runserver when DEBUG is set to True (see django.contrib.staticfiles.views.serve()).
This method is grossly inefficient and probably insecure, s

元記事を表示

AWS DevOps Engineer Professional 合格記録

# この記事

**AWS Certified DevOps Engineer Professional** を取得したので
どんな勉強をしたのかを記録します。

また、今回漸くAWS認定5冠を達成したので、全体の感想なども載せます。

# about me

**インフラエンジニア**で、AWS関連のインフラ構築は2年くらい経験しています。

現在もCloudFormationなどをベースに日々AWS環境の構築や運用をしています。

AWS資格は、
Solution Architect Associate (7月)
SysOps Administrator Associate (9月)
Solution Architect Professional (11月)
Developer Associate (12月)
DevOps Engineer Professional (3月)
という順で取得しました。

# about DOP試験

AWS 認定 DevOps エンジニア – プロフェッショナル
https://aws.amazon.com/jp/certification/cer

元記事を表示

AWS LambdaでCloudWatchLogsをS3に出力する (Pythyon ver)

AWS Lambda (ランタイムはPython)を使って、CloudWatchLogsをS3に出力するソースコードを書いてみました。
ちなみに、Lambdaの実行は、手動でするなり、CloudWatchEventで定期的に実行するなり考えられると思います。

## ポイント
### 1. ログ出力のAPIは非同期で動く
boto3の場合、

logs = boto3.client(“logs”)
response = logs.create_export_task(**kwargs)

でログ出力が動きますが、create_export_taskが非同期で実行されるので、処理の終了を確認しないで、次のログ出力を行った場合、エラーになる可能性があります。
なので、複数ログ出力をするときは、必ずログ出力が終了したかを確認するために、

logs.describe_export_tasks(taskId = response[“taskId”])

の処理を挟みましょう。

### 2. 環境変数
環境変数の値は以下の通りです。

| 変数 |値
|—|—
|BUCKET_NA

元記事を表示

Nginxの導入と設定

##Nginx
Nginx(エンジン・エックス)とは、Webサーバの一種です。ユーザーのリクエストに対して静的コンテンツの取り出し処理を行い、動的コンテンツの生成をアプリケーションサーバに依頼します。
まずはターミナル(ローカル)からターミナル(EC2サーバ)に入ります。
次に、Nginxをインストールしていきます。
ターミナル(ローカル)

“`
$ ssh -i [ダウンロードした鍵の名前].pem ec2-user@[作成したEC2インスタンスと紐付けたElastic IP]
(ダウンロードした鍵を用いて、ec2-userとしてログイン)
“`
ターミナル(サーバ)

“`
[ec2-user@ip-172-31-25-189 ~]$ sudo yum -y install nginx
“`
ターミナル(EC2サーバ)

“`
[ec2-user@ip-172-31-25-189 ~]$ sudo vim /etc/nginx/conf.d/rails.conf
“`
でターミナル上でファイルを開き、以下のように編集します。

“`rails.conf
upstre

元記事を表示

【SRE/AWS Aurora】特定の時点に DB クラスターを復元

## 手順
– 復元したいクラスターを選択
– 特定の時点へ復元

主に参考にした記事
[特定の時点への DB クラスターの復元](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/USER_PIT.html)
[Amazon Aurora(Postgres)におけるデータ復元方法について検討してみた – Qiita](https://qiita.com/aucfan-engineer/items/38e9da9868dc38ffad93)

またスナップショットからの復元は下記でまとめています。
[【SRE/AWS Aurora】スナップショットでDBを復元する – Qiita](https://qiita.com/sanoyo/items/a3bcc8901e234aecc936)

## 特定の時点への復元
今回の復元手順の最終アウトプットは、**新しいDBクラスターが1つになります。**
なので、本番用データベースとは別で DB クラスターが1つ作成されます。

### 復元したいクラスターの

元記事を表示

OTHERカテゴリの最新記事