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

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

AWSのEC2(+RDS(+S3))でDjangoアプリケーション(+MySQL)を公開するまで

AWSのEC2インスタンスとRDSインスタンスがある状態からどうすればDjango+Apache(+mod-wsgi)+MySQLでWebアプリを公開できるかです.Webアプリプログラムはあるものとします.なお,情報は2020/1/1時点です.

また,pyenv+Anacondaを使っていますが,この辺はPythonをyum installするとか今時Pipenv使うでしょとかは各自の宗教に合わせてください.

# 使用したバージョンなど
## Python関係
– Python 3.7.4 (anaconda3-2019.10 使用)
– pyenv 1.2.15-9-gac246e16
– Django 3.0.1
– django-el-pagination 3.2.4
– django-maintenance-mode 0.14.0
– django-storages 1.8
– mod-wsgi

元記事を表示

iPhoneから1タップするだけでAWS上のプログラムをON/OFFする方法

#はじめに

常にクラウドでプログラムを走らせておいて、
自分の気の向くままに、どこでもいつでも手軽にプログラムを停止、再起動したい時ってありませんか・・?
私はあります!

わざわざon/offするだけなのに外出先にノートPCを持ち歩きたくない、
**iPhoneひとつで、もしくはAppleWatchからポンと押すだけで実行・停止できる。**
なんかかっこいい、、

**iPhoneや、AppleWatchに「ヘイ Siri! ホゲをつけて」**
と言うだけでAWSプログラムを起動できます。
ナンカ、カッコイイデス。

「したいもの&カッコいいものは作ればいい」ということで早速作ってみました。

##仕様条件
– クラウドはAWSのEC2
– 実行停止するプログラムはNode.js
– 自宅にネット接続されたラズパイが常駐している事
– Apple HomeKit環境を自宅で設定できること
– iPhoneユーザーであること

##概要
早速、ネタバラシします。
AppleにはIoT家電を制御する環境としてHomeKitがあります。
[Apple HomeKitの説明](https:

元記事を表示

M5StackでAmazon FreeRTOSを使用する5(shadow編)

# はじめに

Amazon FreeRTOSでデバイスを管理しましょう。シャドウ(AWS IoT Device Shadows)を使用してデバイスの状態を参照できるようにしてみます。Amazon FreeRTOSをインストールしたM5Stackの、ファームウェアのバージョンと最後にネットワークに接続した日時が参照できるようにしてみましょう。

今回は、起動時にAmazon FreeRTOSで提供されているHTTPSライブラリーを使用して、HTTPでntpサーバーから時刻を取得してみます。ntpは [国立研究開発法人 情報通信研究機構のntpサーバー](http://www.nict.go.jp/JST/http.html) を利用します。

最初に接続します。ほぼFreeRTOSのサンプルそのままですが、HTTPSではなくHTTPでアクセスしているのでシンプルです。

“`cpp:
const char HTTPS_SERVER_ADDRESS[18] = “ntp-a1.nict.go.jp”;
const int HTTP_TIMEOUT_MS = 10000;

IotHt

元記事を表示

Jenkins + Backlog + ElasticBeanstalk 連携

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308256/f24c2191-9132-224e-064c-dbac8d3af1c0.png)

# はじめに
JenkinsにてRuby on Railsアプリケーションのテスト、デプロイの自動化を実施しました。
そのときに勉強になったことをまとめたいと思います。
ここでは、Jenkins + Backlog + ElasticBeanstalk の連携方法について細かいところまでまとめられているものがありませんでしたのでまとめました。

ノウハウのようなもので知っていれば時間がかからないのですが、知らなければめちゃくちゃ時間がかかってしまいます。。
(自分は1週間くらい検索を駆使しながらトライアンドエラーを繰り返して見つけました。)

黒塗り部分が多く何を入れればいいか分からない場合は、コメントなどに残していただければできる範囲で説明いたします。
気軽にコメントください。

#### 関連リンク
関連リンクを下記に載せておくので、必

元記事を表示

実務経験無しの私がRailsでwebサービスをリリースしてみた

都内にあるプログラミングスクール「TECH::EXPERT」を先日卒業し、現在転職活動中のユウマ(@yuma11)です。

2019/12/21からRailsを使ってオリジナルのwebサービスを開発し始め、2020/1/4にリリースしました。
実務経験の無い私が、独学+スクールで培ったスキルで制作しておりますのでどうか温かい目で御覧ください…(´;ω;`)

# 制作したWEBサービス
実際に制作したものがこちらになります。

**https://ideaspace-net.com**
![4557bbcb7649a6236d672c9ce5136dd8.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/528941/bf20b120-0b6f-e947-be3b-f61d8f05b121.gif)

サービス名は「ideaSpace」で、普段の生活の中で思いついたアイデアをSNS感覚で気軽に「投稿」&「共有」できるWEBサービスです。

## 何故このサービスを作ったのか?
私含め、個人で何か開発し

元記事を表示

デプロイ中に CodeDeploy が使用する一連のルール

https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/deployment-configurations.html

元記事を表示

AWS Elastic Beanstalk-なぜコマンドにleader_onlyを使用するのですか?

https://ja.programqa.com/question/19754812/
> 技術的な観点から見ると、Elastic Beantalkは自動スケーリンググループであり、何かをデプロイする場合、複数のec2インスタンスでコマンドを同時に実行できる可能性があると想定する必要があります。
>
> leader_onlyオプションの主な目的は、コマンドが1つのec2インスタンスでのみ実行されるようにすることです。 db移行スクリプトの実行、dbの作成など、1つのec2で一度だけ実行する必要があるユースケースに役立ちます。そのため、 leader_onlyは単なるマーカーであり、一部のコマンドはこのインスタンスでのみ実行されます。
>
> ただし、リーダー属性は環境の作成時に一度設定され、リーダーが死亡し、自動スケーリンググループにリーダーがいないときに新しいインスタンスの可能性のある状況に置き換えられた場合に備えて設定する必要があります。

元記事を表示

各種 IaC ツールアップデート方法

## 目次

* Terraform
* AWS CLI

(以下は今後各予定)

* Ansible
* Azure CLI
* GCP gcloud CLI
* Chef

## Terraform アップデート方法(tfenv インストール済みの場合)

・最新版インストール方法

“`
$ tfenv install latest
“`

・現在選択中のバージョン確認

“`
$ tfenv list
* 0.12.18 (set by /c/Users/harashun/.tfenv/version)
0.12.16
“`

## Terraform アップデート方法(公式サイトからダウンロードする方法)

下記サイトからダウンロードし、パスの通った場所に配置

[Download Terraform – Terraform by HashiCorp](https://www.terraform.io/downloads.html)

## AWS CLI アップデート方法

下記サイトからインストーラーをダウンロードし、実行

[AWS CLI

元記事を表示

AWSのcloud9のWordPressが使えなくなった件の速報

今日、AWSのcloud9にインストールしたWordPressが使えなくなった件で、一度復旧できたのに、再び使えなくなり色々と調べていました。

その中で、二つ重要なことを忘れていました。

- MySQLのルート・ユーザーに、パスワードを付けること。
- データーベースのユーザーに、権限をつけていなかったこと。

この二つを忘れていたことに気がついたので、また、作り直しました。

こちらの記事が、AWSのcloud9の設定と、WordPressのインストールが分かり易かったです。

AWS Cloud9の導入方法〜新しいEC2インスタンス作成編〜


特に、セキュリティの設定などのところは、重量だと思います。

それから、一度MySQLのルートでログインした後に、パスワードを付ける方法は、こちらの記事で確認しました。
https://qiita.com/acecrc/items/a72992a17968d3d9bc00

それからMyAdminよりも軽くて、同じような事ができるものを知りました。
https://www.adminer

元記事を表示

ALB のアクセスログを Elasticsearch Service 6.8 に取り込むメモ(Lambda Python 3.8 版)

こちらは、

– **[ALB/CLBのアクセスログをElasticsearch Service (6.0/6.2) に取り込むメモ](https://qiita.com/hmatsu47/items/826b00ff008d4e3edecf)**

を、

– Lambda Python 3.8
– Elasticsearch Service 6.8

対応にするための手順(差分のみ)です。

先に GitHub リポジトリにコードのみ掲載しておきましたが、こちらに補足説明を記載します。

– [hmatsu47/log_to_es_on_lambda_py / alb_log_to_es /](https://github.com/hmatsu47/log_to_es_on_lambda_py/tree/master/alb_log_to_es)

※タイトルから「CLB」を外しましたが、おそらく動くのではないかと思います(未確認)。

# 手順

## 1. Amazon Elasticsearch Service の起動

[元記事](https://qiita.com

元記事を表示

「きたねえ花火だ」は汚くないのか、Amazon Comprehendに分析させてみた

**ボンッ!!!!**

**へっ! きたねえ花火だ**

ベジータの名台詞ですよね

ただ、あのセリフを言うのには1つ条件があると思うんです。

それは**「言う方が汚くないこと」**

「汚い」って相対的なものじゃないですか

「外で遊んでメチャクチャ汚れてる男の子」と「室内で遊んでたから特に汚れてない女の子」が隣に並ぶからこそ男の子は「汚い」と思うわけです。

また、「汚い」という言葉には「物理的に汚い」という意味の他に**「精神的に汚い」**という意味もあります。

「ずる賢い」「悪い」人のことを「汚い人間」というアレです。

ですから、**ベジータがドロドロに汚れてて、相手を倒すためだったらどんな卑怯な手も使うみたいな汚れ人間**だったら、

「きたねえ花火だ」

**「お前のほうが汚えわ!」**

と言えてしまうので、あの名台詞は矛盾しているということになります。

同様に言葉にも「汚い言葉遣い」という表現がありますよね

なのであの「きたねえ花火だ」というセリフも汚くては使ってはいけないということになります。

今回はベジータも含め、**Amazon Comprehend

元記事を表示

CloudFormation 基本 リソースのみ指定の場合

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html

Resources(リソース)
 論理ID(なんて名前にする?)
  リソースタイプ(何を作る?)
  プロパティ(設定リスト)
   プロパティ(設定①): xxxxxx
    -埋め込みプロパティ(設定)
   プロパティ(設定②): xxxxxx
    -埋め込みプロパティ(設定)
   プロパティ(設定③): xxxxxx
    -埋め込みプロパティ(設定)
       

“`
AWSTemplateFormatVersion: ‘2010-09-09’ #CloudFormationテンプレートの指定(1つしかない)
Resources: #リソース指定
FirstVPC: #名前を指定する(任意)あとで参照する機会あり
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16 

元記事を表示

CognitoUserPoolの情報をLambda経由でRDSへ連携した

#前書き
勉強用に何かしらのウェブサービスを作ろうと常々考えていたのですが、やはり認証基盤を自分で一から作るのは手間が非常にかかるので足踏みをしていました。
そこでCognitoを使おうと思ったのですがサーバーレス構成もNOSQLも使ったことがないのとNOSQL辛いよというアドバイスを頂いたので、とりあえず作るということを優先して日頃なれているRDBに認証情報を放りこみたかったという感じです。
なお技術スタックとしてLambdaではNode.js、RDSにはPostgreSQLを採用しました。

#流れ
1. CognitoのイベントをLambdaでフックする
2. LambdaでCognitoの認証情報を取得する
3. LambdaからRDSへデータを書き込む

## 1. CognitoのイベントフックをLambdaで行う
Cognitoは`サインアップ前`や`確認後`などそれぞれのイベントに合わせてLambdaでフックすることができます。
今回のユースケースでは`確認後`に行うのが適切でしょうか。今回私は`確認後`で設定しました。
https://docs.aws.amazon.

元記事を表示

AWS Certified Machine Learning – Specialtyに合格しました、一回もAI作ったことないけど

AWS 認定 機械学習 – 専門知識に合格しました

筆者はしがないWebエンジニアですがAWSの試験に合格すると会社から報奨金が出るので受験しました

# 私のスペック
表題の通りAIなど一度も作ったことがない、興味はある
上述の報奨金目当てにAWS資格はSAAなど基礎的なものを2つほど持っている

# テスト概要
[AWS 認定 機械学習 – 専門知識公式サイト](https://aws.amazon.com/jp/certification/certified-machine-learning-specialty/)

機械学習の基礎知識と、機械学習向けのAWSサービスに関する知識が問われる
今のところこれ一冊読んでおけば合格できる、という本が無いのがしんどいところ
他の試験のようにAWSの話だけでなく機械学習全般の話にまで及ぶため、
本として出る期待値は低めですね

テーマとしては

* 機械学習関連
* 機械学習のアルゴリズム全般に関する知識(目的から最適なアルゴリズムの選択、CNNとRNNの違いなど)
* データの前処理、不均衡データに関する取り扱い、正則化等

元記事を表示

LINE Messaging API 〜 API Gateway 〜 SQS 〜 Lambda を連携する

## 前書き
– LINEのchatbot基盤を作ります
– LINE Messaging APIとAWSの各種マネージドサービスとの連携方法についてまとめます
– セキュリティ設定については別記事にまとめます(一旦ゆるゆるに設定)
– Lambdaで使用する言語はGoを採用します

## 構成
architecture-3.png

作成するchatbotの流れは以下の通りです。最終的には送信したメッセージをDynamoDBに保存してLINE Messaging APIを呼び出しますが、本記事では対象外とします。

1. LINE公式アカウントを友達登録する
2. 公式アカウントにメッセージを送る
3. LINE ServerからAPI Gatewayにリクエストが送信される(webhook URL)
4. AP

元記事を表示

S3設定

この記事は初学者が作成した物です。

# 前提知識

AWSのS3を使う際に行うセキュリティー対策。
セキュリティー対策を怠った場合
AWSのID&PWが漏れてしまい膨大な金額を請求される恐れがある。
その為にも、セキュリティー面をしっかりと意識しよう

### セキュリティー対策①
二段階認証

AWSをログインする際にAuthyを利用し
従来のID&PWだけでなく30秒事に変わる数列を作成することができます

###セキュリティー対策②
IAMユーザー

IAMユーザーをは、ルートユーザーから一定の権限を与えられたユーザーです。
たとえハッキングを食らっても余計なことができないようにする為の対策です。

###セキュリティー対策③
Githubにコードを載せない。

git secrets –register-aws –global

上記のコマンドは、git secretsをインストールした際にあらかじめ用意されているコマンドの一つです。
git secrets –register-aws で自力で細かな設定をすることなくAWS向けのcommit検査設定を導入することができ

元記事を表示

Cloud9のリモートリポジトリをGitLabからGitHubへ移行

GitHub無料ユーザーも無制限にプライベートリポジトリを使えるようになったので、GitLabから移行してみました。

# やったこと
ざっくりとやったことをまとめます。
1. GitHubでリポジトリ作成
2. GitHubのSSH認証用の鍵作成及び登録
3. リモートにGitHubのリポジトリを追加
4. GitHubに内容全部プッシュ

# 参考にしたサイトのリンクと作業内容
この内容に関してはたくさん記事がありますが、いくつかの記事を参考にしないといけなかったのでそのリンクを貼っていきます。
また、部分的に私が実際に実行したコマンドを書いています。

## GitHubでリポジトリ作成
以下のリンクの4番を行いました。他のコマンドは、後で実行する必要ないです。
ただ、リンクの5番の赤丸部分にあるリポジトリのURLに関しては次の手順で使用するのでコピーしてください。
https://qiita.com/sodaihirai/items/caf8d39d314fa53db4db

## GitHubのSSH認証用の鍵作成及び登録
以下のサイトの「cloud9でssh認証用の公開鍵を

元記事を表示

AWSで基本的なサーバー環境を構築してみました。

#はじめに
AWSを使用してEC2とRDSを構築し、EC2のSSH接続とRDSへの接続確認まで行ってみました。その手順の流れを備忘録として残します。
※AWSコンソール画面のスククショは、2020年1月4日時点のものとなります。
#構成図

![名称未設定ファイル-EC2とRDS 構築.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438093/89c83071-758b-4048-eb74-870b347fa249.png)

#前提条件
AWSアカウント及びIAMユーザーは作成済みであること。
Mac環境であること。(WindowsだとSSHの接続確認の操作が異なります)

##VPCの作成
VPC作成①.png

CIDRブ

元記事を表示

ACM で発行した証明書を CloudFront で使う

# ACM で発行した証明書をCloudFrontで使、えなかった
S3上の静的コンテンツをHTTPSで公開したく、CloudFrontに証明書を設定しようとしたら意外と手こずったので残します。

## 前提条件
– コンテンツ:S3でパブリックに設定したバケット上に配置。HTTPではアクセスできる状態。
– ドメイン名:取得済み。
– DNSサービス:AWS Route 53 を使用。取得済みドメインを登録し、FQDNで先程のコンテンツにアクセエスできる状態。
– 証明書:ACM – AWS Certificate Manager (in 東京) で発行。※先に書いてしまうと、東京で発行してたのがNG元。

## 困った状況
ここまで準備できれば、CloudFrontでディストリビューションを作成し、発行した証明書を設定すればコンテンツにHTTPSでアクセスできるようになる、と考えていました。が、CloudFrontのコンソールから、Create Distribution > Distribution Settings で、「Custom SSL Certificate (examp

元記事を表示

echobotを作成し、Slackに通知する。

#はじめに

AWSアカウントを作成したので、料金管理のため料金通知botを作成したい。
そのため、まずはechobotを作成してbotを試してみる。

#Lambdaを作成する
「AWSマネジメントコンソール」から「Lambda」を作成する。
諸々の設定を行い、以下のようにコードを書きかえる。

“`HTTPステータス200(OK)と本文にeventをJSON形式にしたものを返す.
import json

def lambda_handler(event, context):
# TODO implement
return { ‘statusCode’: 200, ‘body’: json.dumps(event) }
“`

#API Gatewayの作成
「AWSマネジメントコンソール」から「API Gateway」を作成する。
「APIの作成」をクリックする。
「アクション」→「メソッドの作成」から「POST」を選択し、以下のようにセットアップする。

– 統合タイプ「Lambda関数」
– Lambdaプロキシ統合の使用→チェックを入れる
– Lambd

元記事を表示

OTHERカテゴリの最新記事