AWS関連のことを調べてみた2019年11月25日

AWS関連のことを調べてみた2019年11月25日
目次

unexpected status “ROLLBACK_IN_PROGRESS” while waiting for CloudFormation stack … が起きたら

ちょっとハマったので、同じ轍を踏む人が少しでも早く解決できるようにUP

## 環境

eksctl : 0.10.1

## 対応

eksctl を 0.10.2 以降に上げる

## エラーメッセージ

“`console

[centos]$ eksctl create cluster –name=k8s –region=ap-northeast-1 –nodes=3 –nodes-min=1 –nodes-max=3 –version=1.12 –node-type=t2.medium –vpc-private-subnets=subnet-1,subnet-2,subnet-3 –vpc-public-subnets=subnet-4,subnet-5,subnet-6
Mon Nov 25 01:42:32 UTC 2019

[?] eksctl version 0.10.1
[?] using region ap-northeast-1
[?] using existing VPC (vpc-xxxxxxxxxxxxxxxxx) and su

元記事を表示

keycloakをAWS上にインストール・RDSと連携まで

# この記事について
開発中のソフトウェアのログインにKeycloakを使用するので、セットアップ中に起こった問題とそれらに対するトラブルシューティングを備忘録として残す第二弾です。今回はAWS上に公式版(Github版ではない)のkeycloakをインストールし、RDSと連携させる手順を説明します。RDSはMySQLを使用しました
バージョンとクラス
keycloak: 6.0.1
AWS EC2: t2.micro
RDS: db.t2.micro, MySQL
日付:2019/11/22

##目次
– [AWSの設定(VPC)](#AWSの設定(VPC))
– [AWSの設定(EC2)](#AWSの設定(EC2))
– [AWSの設定(RDS)](#AWSの設定(RDS))
– [インストール各種](#インストール各種)
– [keycloak内の設定](#keycloak内の設定)

##AWSの設定(VPC)
まず最初に、AWSサーバーがインターネットからアクセスできるようVPCを使ってネットワークを構築していきます。Amazon VPC(Vitual Privat

元記事を表示

【GKE】Serviceリソースの外部IPアドレスに対してroute53で名前解決する方法

## GKEの外部IPアドレスについて知っておきたい予備知識

※本記事は、GKE上にコンテナをデプロイしてServiceリソースを作成した前提でお話を進めます。(GKEの公式ドキュメントが分かりやすすぎるので、あえてドキュメントを書くまでもないと思っています。)

Dockerfileの作成方法については以下にまとめたので参考にしていただけると幸いです。
参考:https://qiita.com/arthur_foreign/items/fca369c1d9bde1701e38

ただ、前提の前にGKEにおいて知っておきたい知識も、Google公式から引用しておきます。

>デフォルトで、Kubernetes Engine 上で実行するコンテナは、外部 IP アドレスを持たないため、インターネットからアクセスできません。

>アプリケーションのポッドにネットワーキングと IP サポートを提供する Service リソースを作成します。Kubernetes Engine は、アプリケーションの外部 IP とロードバランサ(課金対象)を作成します。
引用:https://cloud.go

元記事を表示

気象×Ruby 〜Mechanizeを使ってRubyスクレイピング〜

#今回の試み
###・ 気象データAMeDASの10分ごとの値を一気に取得する
###・ PythonとRubyの両方でスクレイピングしてみる

スクレイピングするデータは[こちら](https://www.data.jma.go.jp/obd/stats/etrn/view/10min_s1.php?prec_no=44&block_no=47662&year=2019&month=01&day=01&view=p1)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354874/13bf9771-17c0-c790-a403-251492816bfa.png)

#1. Pythonによるスクレイピング
“`python
# -*- coding: utf-8 -*-
import pandas as pd
import urllib.request
from bs4 import BeautifulSoup

url = ‘https://www.data.jma.go.jp/ob

元記事を表示

AWSにdjango開発環境構築メモ(VSCode Remote SSH用)

# 前提

この構築のゴールは、AWS環境ではsshのみ開けて、サーバサイドの開発、デバックをClientPCのVSCodeでできるようにすることです。

Client
  Windows10
サーバ 
 CentOS7(AWSで動作)

※手順全部書いたつもりです。参考になるところあったら使ってください。
※毎回これするのも大変なのでansible化するかdokerイメージにしたい。
※VSCodeでのdjangoデバック環境は次の機会に。

# ssh 設定
.ssh/sshconfigにAWSで起動したCentOSののログイン情報を記載してSSHでパス無しでログインできるようにする。
LocalForwardの行は、Djangoのポートへの。PCでlocalhost:8000を開くとサーバ側に転送されて便利。

“`
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host myserver
HostName xxx.xxx.xxx.xxx
User cento

元記事を表示

AWS EC2でWindows2008から2012にインプレースアップグレードを試してみた

Windows Server 2008 R2 の期限が 2020年1月に切れます(現在2019年11月)。新規にEC2を構築して移行すればよいのですが、Windowsに インプレースアップグレード っていうのがあるらしいので試してみました。

**概要**
インプレースアップグレードというのは、Windows Server 2008R2 から 2012に変更できるみたいです。Microsoft公式では2世代までOKと書いているのですが、Win2008R2からWin2012R2はダメでした(Win2008R2からWin2012はOKでした)

**注意点**
ドキュメントにネットワークドライバを更新せよと書いてあったので更新すると、リモートデスクトップで接続できなくなり、実験サーバーなので破棄しました。みなさんも注意してください。

**AWS 資料**
[インプレースアップグレードを実行する](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/os-inplaceupgrade.html)

# 事前準備
今回は

元記事を表示

Go使ってAWS Lambdaでラムダ計算した

### tl; dr

[ソースコードはこちら](https://github.com/kirisaki/go-lambda)
エンドポイントは
https://nd88j25ztg.execute-api.ap-northeast-1.amazonaws.com/dev/lambda
でヘッダに`Content-type: application/json`と`X-API-KEY: uwuZMJIWbqpmTpfzdEci2YaMGWFSvWz9ZfWFIjVf`を仕込んで`{“step”:1,”src”:”(λx.x)a”}`みたいにPostしてください。curlでやると

“`
$ curl -X POST -H “Content-type: application/json” -d ‘{“step”:1, “src”: “(λx.x)a”}’ -H ‘X-API-KEY: uwuZMJIWbqpmTpfzdEci2YaMGWFSvWz9ZfWFIjVf’ https://nd88j25ztg.execute-api.ap-northeast-1.amazonaws.com/d

元記事を表示

Amazon Transcribeを試してみた

twitterで「Amazon Transcribeがリリースされた」との情報をゲットしたため使ってみた。

#Amazon Transcribeとは?
AWSの音声認識のサービス。音声ファイルをS3にアップロードすると、数分で自動で文字起こししてくれるサービス。

#検証環境など
– iphoneのボイスメモを利用。
– 静かな部屋(周りに人がいないかつテレビ等も消した状態)でボイスメモの録音を実施。
– iphoneと発言者の距離は十数cm。
– つまり録音時の環境は良好。

#結論
– 上記環境で利用する分には文字起こしの精度は非常に高い。(認識率100%)

#検証方法
– 音声を録音する。
– iphoneの「ボイスメモ」機能を利用し音声を録音する。
– 音声ファイルをiphoneからPCに転送する。

– PCでAWSマネジメントコンソールにログインする。 
– 省略。

– 録音した音声ファイルをS3にアップロードする。
– バケットを作成する。(もちろん既存の物があればそれでOK。)
– 音声ファイルをバケットにアップロ

元記事を表示

8万語の辞書を持ったインテリBotを常時利用できるようにした話

## やったこと

[fugaしか答えない残念なBotに8万語の辞書を持たせてインテリBotにした話](https://qiita.com/zgw426/items/5e9d9ed7c40d976d3055)の続き、常時起動できないLINE Botだったので、Heroku化して常時利用できるようにしました。あと、AWSのAPI GatewayにAPIキーを設定してアクセス制御しました。

## 構成変更

– 変更前
– Nodejsが個人パソコン上にあるためLINE Botを常時起動するにはよくない構成でした

– 変更後
– 個人パソコン上の環境をHeroku化することで常時起動に適した環境にしました。
– 辞書APIのアクセス制御(APIキー)を設定しました。

元記事を表示

[AWS SDK for PHP]署名付きPOSTを使い、直接クライアント側からAWS S3にファイルアップロード(PostObjectV4インスタンスを使用)

以下の流れで実装しました。

– [PostObjectV4](https://docs.aws.amazon.com/ja_jp/sdk-for-php/v3/developer-guide/s3-presigned-post.html) のインスタンスを使い、署名付きPOSTに必要な情報を発行
– Vue.jsで、アプリケーションサーバを介さず、クライアント側から直接S3にファイルをアップロード

画面はこんな感じで、簡単にアップロード画面を作ってます。
![スクリーンショット 2019-11-18 23.51.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247004/5ff21d2a-b6bf-915c-2e07-0c8b3aef33d7.png)

## 準備
### AWS
S3でバケットを作成してください。
※IAMの設定は省略します

### S3 CORSの設定
CORSを設定しておかなければなりません。

“`

元記事を表示

例の経営統合のニュースをAmazon Transcribeに文字起こしさせてみた

## はじめに

AWSの自動音声認識サービス[Amazon Transcribe](https://aws.amazon.com/jp/transcribe/)が日本語に対応したとのことで、日本語音声を入力して文字起こしを試してみました。

## 題材

以下のニュース動画を利用しました。

– [YahooとLINE 統合を発表 – テレ東NEWS](https://www.youtube.com/watch?v=ndMhJZF6mjM)

1人のアナウンサーが1分間ほどニュースを読み上げる内容となっていて、複数人による会話などはありません。

## 文字起こし方法

Transcribeは、

– マネジメントコンソール
– AWS CLI
– AWS SDK for Python (Boto)

にて利用できますが、今回はAWS CLIを使ってみます。

### 1. 変換をリクエストする

あらかじめ以下のJSONを用意しておいた上で、`aws transcribe start-transcription-job`を実行します。

“`json:request.json
{

元記事を表示

AWS で MFA 必須の IAM アカウントを作成し、ユーザに受け渡す手順について

多段階認証 (MFA) が必須の IAM アカウントを作成して、ユーザに受け渡す手順について。

## MFA 必須でパスワードリセット可のポリシーについて

公式のドキュメントは以下の2つです。

* https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/tutorial_users-self-manage-mfa-and-creds.html
* https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_examples_aws_my-sec-creds-self-manage.html

基本的にはドキュメントの通りにやればいいのですが、このままだと、初回のパスワードリセットが許可されません。

この点についての説明が、英語版と日本語版で異なっていました。

> **注記**
> このポリシー例では、サインイン時のパスワードのリセットをユーザーに許可していません。新しいユーザーおよびパスワードの期限が切れているユーザーは、これを行う

元記事を表示

Saving Plansによるコスト試算

# Saving Plansによるコスト試算

## はじめに

AWSで運用しているシステムでコスト効率を上げるため、**Saving Plans**のコスト試算に関して調べました。
**基本料金**と**Saving Plans**のコスト試算についてまとめています。

## EC2の料金

[Amazon EC2 料金表](https://aws.amazon.com/jp/ec2/pricing/on-demand/)を確認しましょう。
基本的に常時稼働のEC2インスタンスではリザーブドインスタンス(RI)を購入して運用している方が多いと思います。
**Saving Plans**では、常時稼働ではないが定期的・不定期に停止・起動を行っているようなサーバに適用することでコスト削減が望めそうです。

## Fargateの料金

[AWS Fargateの料金](https://aws.amazon.com/jp/fargate/pricing/)を確認しましょう。
**2019/11/23現在、東京リージョン(ap-northeast-1)**では以下の料金となっていました。

元記事を表示

【AWS】S3の画像アップロードにて500エラー ArgumentError (Missing required arguments: aws_access_key_id, aws_secret_access_key)

# 原因の究明

本番環境でエラーが出る場合、原因が突き止めにくいのでローカル環境での見直し。
ローカルが上手くいっている場合は、本番環境への反映が上手くいっていない。
ローカルにてエラーが発生した瞬間のターミナルログを見ましょう。

# 500エラー

“`:ターミナル
ArgumentError (Missing required arguments: aws_access_key_id, aws_secret_access_key):
“`

この場合、`aws_access_key_id`, `aws_secret_access_key`が上手くいっていない。

・そもそもキーが正しいか
・バックエンド側のAWSのkey辺りのコードを見直す。
・キーが反映されているかの確認をする。
・キーが逆になっていないかの確認も必ず。
(AWS_SECRET_ACCESS_KEYの方が長い)

“`shell
# キーの確認
env | grep AWS
# 結果
AWS_SECRET_ACCESS_KEY=******************************
AWS_AC

元記事を表示

【AWS】CloudFormation::Macroを使って多数のIPを接続許可する

初めての記事投稿です。
よろしくお願いします。

# 使うもの

– CloudFormation
– Lambda(Python3)

めんどくさいからソースと作り方だけくれって人向けにgithubに置いておきます。
コードは記事に書いてあるのと同じです。
https://github.com/nekotouma0114/CloudFormationMacroDemo

# 事の始まり

僕「テスト環境の接続許可するIPって何があります?
お客さん「xxxとyyyとzzz….(数十個羅列※)お願いね!」
僕「あ、はい」

※IPはばらばらでCIDRでまとめれないような状態

AWSのユーザガイド([AWS::EC2::SecurityGroup Ingres](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule-1.html))を見る限りまとめてIPは指定できず、
CloudFormationにはループ構造が見当

元記事を表示

Fargate のログを FireLens を通して、EC2 の Fluentd/td-agent に出力する

# 概要
AWS FireLens を利用して、Fargate に立ち上げた nginx から EC2 インスタンスに用意した td-agent にログを落とす構成を作ってみます。今回の例は ECS(Fargate) ですが、CPU Unit や Memory Limit 周り以外は設定としては ECS(EC2) でも同様です。

図示すると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840/4894c949-9b76-11ac-1eb0-404421dccac6.png)

のような状態から、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840/89f7a25c-5825-3f22-93b3-46b1a44a4449.png)

のような構成を作ります。

# 構築
## Fargate で nginx が動作している状態
Task Definition は以下のようになっているは

元記事を表示

Amazon Cognito を利用して、会員登録を行う。

## はじめに
ここでは、Amazon Cognito を使用して、メールアドレスとパスワードを登録するためのソースコードを書きます。ただし、既に[ユーザープールを作成し、ユーザープールにアプリを追加ている](https://aws.amazon.com/jp/getting-started/projects/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/module-2/)ものとします。

## AWS Amplify ライブラリをインストール
Amazon Cognito を使用するには、[AWS Amplify ライブラリ](https://github.com/aws-amplify/amplify-js)が必要なのでインストールします。

“`terminal
$ npm install aws-amplify –save
“`
ちなみに [「Amazon Cognito ID SDK for JavaScript」が「AWS Amplify ライブラリ」 の一部になった](https://

元記事を表示

Amazon Linux 2 に Laravel 環境構築 + デプロイ [とりあえず最速でデプロイしたい人向け]

既にインスタンスを作成してssh接続が完了している前提です。
デプロイする場合は、githubにリモートリポジトリが作られている必要があります。
AmazonLinux2にLaravel環境を構築して各種設定を行い、実際に動かすまでの手順を共有します。

Apache 2.4
MySQL 8.0.18
PHP 7.3

## yumアップデート
“`
$ sudo yum update -y
“`

## Apacheのインストール
“`
// インストール
$ sudo yum install httpd
// 起動
$ sudo systemctl start httpd
// 自動起動設定
$ sudo systemctl enable httpd
// 動作確認
$ systemctl status httpd.service
“`

## MySQLのインストール
“`
// mysql8.0リポジトリの追加
$ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el

元記事を表示

Private SubnetのインスタンスにSSH接続

# Public SubnetのEC2インスタンスにPrivate Subnetで起動中のEC2インスタンスのキーを転送

自分のPCからPublic Subnetにキーを転送します。社内や学内のネット環境ではできないかもしれません。
UbuntuのAMIを使用してインスタンスを作成しました。

– Public Subnetのキーはpublic.pem
– Private Subnetのキーはprivate.pem
– X.X.X.XはEC2インスタンスのパブリックIPです

“$ scp -i public.pem private.pem ec2-user@X.X.X.X:./PATH “

# Public SubnetのインスタンスからPrivate Subnetのインスタンスにキーを転送
##自分のPCからPublic SubnetのインスタンスにSSH接続

“$ ssh -i public.pem ubuntu@X.X.X.X “

##Private.pemを使ってPrivate SubnetのインスタンスにSSH接続

– XX.XX.XX.XXはPriv

元記事を表示

LambdaからSystems Managerを実行してEC2のバックアップを取得する

## はじめに
EC2の定期バックアップを取得をするのに良い方法はないかと思っていたところ、SSMでスナップショットが取得できることを知ったので、Lambdaから実行してみました。
サーバーの作成は省略しますが、Systems Managerを使用するので、SSMエージェントがデフォルトインストールされているWindows Server 2019を使用しています。

参考
[Windows インスタンスで SSM エージェント をインストールし設定する](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-install-ssm-win.html)

# やったこと
– Windowsサーバーの作成
– Systems Managerからバックアップ取得
– LambdaからSystems Manager ドキュメントの実行

# Windowsサーバーの作成とIAMロール設定
バックアップを取得するため、EC2を1台作成します。
![image.png](https://qiita-im

元記事を表示

OTHERカテゴリの最新記事