- 1. Rails on Lambdaの環境構築
- 2. 『コピペOK』NodeでS3へ画像アップロード【2020】
- 3. AWSのS3のアクセスキーとシークレットキーを作る方法『2020』
- 4. Oracle Cloud Infrastructure Data Scienceを使って、AWS Redshiftのデータにアクセスしてみる
- 5. AWS で マインクラフトサーバ (途中)
- 6. AWS ALBの認証機能でGoogleアカウント認証を設定する (OpenIDConnect)
- 7. AWSの無料枠でCOVID-19解析に貢献しようとしてうまくいってない話
- 8. [リアルタイム]KinesisからのLambdaが遅延した!! その時の対処は?
- 9. Azure用語に対応するAWS用語を表示するユーザースクリプト
- 10. AWS S3 バケットで保存する
- 11. AWSのALBでSSL化したらレスポンスが遅くなった時の対処法
- 12. PowerShell から amazon/aws-cli の Docker イメージを起動して AWS に接続する
- 13. Elastic BeanstalkでELB作成を抑止する
- 14. Amazon AWS CloudWatch Logs Insights で 指定したキーワードにヒットしたログを1分単位でグループ化して抽出する
- 15. 疑似的にNATゲートウェイを停止・起動する
- 16. [AWS] Amazon Redshiftまとめ
- 17. Amazon ECS 一通の動作
- 18. Cloud9にPython+OpenCVの環境を構築する
- 19. AWS Lambdaでgitコマンドを使う
- 20. 【AWS】Elastic IP解放→割り当て後に必要な事
Rails on Lambdaの環境構築
# はじめに
Rails+Lambdaの記事が少なかったので投稿します。
この記事はRails+Lambda(+APIGateway)で `GET /me` が実行できるところを目指します。
Railsはある程度分かるけど、Docker使ったことない、サーバレスやりたい人向けです。
今回SAMは使わずある泥臭いやり方で行います。
mysqlは今回コード上では使いませんが、デプロイの関係で構築は行っています。もしRDSやDyanamo使いたい場合は適時調べて行ってください。# 環境
Docker for Windows
Ruby 2.7
Rails 6
MySQL 5.x# ディレクトリ構成
“`rails_api
├── Dockerfile
├── docker-compose.yml
├── Gemfile
├── Gemfile.lock
“`# 各種ファイル
## Dockerfile
native extension を含む gem を lambci/lambdaの docker イメージでビルドしなおしをするため、イメージはLambdaのものを使用します
『コピペOK』NodeでS3へ画像アップロード【2020】
まずは、[ここ](https://qiita.com/rh_/items/24ed1cebbdc3a731aabb)からs3へのアクセスキーと、シークレットきーを取得してください。
## S3 Bucketを作る
“`
$ npm i –save aws-sdk
“`“`create-bucket.js
const AWS = require(‘aws-sdk’);
// Enter copied or downloaded access ID and secret key here
const ID = ”;
const SECRET = ”;// The name of the bucket that you have created
const BUCKET_NAME = ‘test-bucket’; //同じバケット名は作れない ユニーク必須const s3 = new AWS.S3({
accessKeyId: ID,
secretAccessKey: SECRET
});const params = {
Bucke
AWSのS3のアクセスキーとシークレットキーを作る方法『2020』
## 1) IAMユーザーを作る
S3のアクセスキーとシークレットキーを作るには、IAMユーザーを作る必要があります。
## 2) グループを作る
これは、IAMユーザーへ割り当てる権限のグループです。ec2とs3へのアクセス権限をこのIAMユーザーへ付与する〜みたいな。
## 3) グループの名前と使用用途を決める
今回は、nodejsからs3へ画像をアップしたり、取得したいので、プログラマ
Oracle Cloud Infrastructure Data Scienceを使って、AWS Redshiftのデータにアクセスしてみる
#本記事の狙い
2020/2に、Oracle Cloud Infrastructure Data Science(OCI-Data Science)がリリースされました。
前回、OCI-Data ScienceからAWS S3上のファイルのデータにクエリしてみたので([Qiita記事:Oracle Cloud Infrastructure Data Scienceを使って、OCI Object StorageとAWS S3のファイルデータにアクセスしてみる](https://qiita.com/maato/items/691452be9e4a5d63e4f9))、本記事では、OCI-Data Scienceから、Pythonを使ってAWS Redshift上のデータにアクセスしてデータ取得する手順を、実施してみたいと思います。#参考文献
###実施に参考になるリンク
– [Oracle Cloud Infrastructure Data Science(OCI-Data Science)を使ってみよう](https://community.oracle.com/docs/DOC-1
AWS で マインクラフトサーバ (途中)
# 環境
– Ubuntu 18.04.2 LTS
– シンガポールリージョン の T2.microAWSの既存のインスタンスを使ってみましたが、メモリが少なすぎてうまくいきませんでした。
改めてチャレンジ予定。# ポートを開ける。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/6599c007-a189-8c57-b5ee-3b90b37388c6.png)
minecraft_server.1.15.2.jar# jdk1.8をインストール
“`
$ sudo apt install openjdk-8-jdk
“`
# サーバプログラムの用意
ここからURLをコピーして
https://www.minecraft.net/ja-jp/download/server/サーバをダウンロードして
“`
$ wget https://launcher.mojang.com/v1/objects/bb2b6b1aefcd70dfd189
AWS ALBの認証機能でGoogleアカウント認証を設定する (OpenIDConnect)
![oidc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339816/320ccbe7-ba92-992d-6404-117417ac852d.png)
## About
* 社内用のシステムやリリース前の機能を限定公開したい場合新規にログイン機能を実装するのは非効率です。
* AWSにはALBの認証機能としてOpenIDConnectをサポートしています。
* Facebook,Yahoo,Googleなどを利用している場合、ALBをアプリケーションとして登録するだけで簡単に認証機能が実装できます。
* リモートワークが推奨されている昨今、突然社内用の管理画面にログイン機能が必要になってお困りになっている方もいらっしゃるのではないでしょうか?
* 今回はGoogleのOauthクライアントIDを利用してOIDCする方法を説明します。## 利点
* アプリケーション毎に管理機能を実装する必要がなくなる。## 認証のフロー
1. ALBにアクセス
2. ログイン状態をGoogleAPIに問い
AWSの無料枠でCOVID-19解析に貢献しようとしてうまくいってない話
(自ブログに書いた記事の転載です)
# はじめに
「新型コロナウイルスの解析に貢献しつつ、AmazonWebServiceの環境構築を実践してみよう」とした話です。
結果、「正常に動作はしたが、無料枠ではスペック不足ゆえにあまり貢献できていない」という結論になってしまいましたが、
作業の記録として、残しておきます。# 背景
コロナ流行辛い。なんとか解決早めらんないか。↓
「[今からでも3分ではじめられるコロナ解析貢献「Folding@home」の使い方](https://pc.watch.impress.co.jp/docs/news/1243458.html)」というPC Watchの記事を見つける
↓
即自宅ノートPC(旧世代のGPU搭載)にインストール。1週間程度走らせ続けて25タスクほどこなすが、まだ物足りない感。
↓
スペックは上げられないから、稼働台数増やしたい。でも物理マシンは1台しかもっていない…
↓
そうだAWSアカウント持ってた。これ使ってみよう。無料枠でできるなら記事化すれば真似してくれる人いるかも?
↓
行動。
# やったこと①
[リアルタイム]KinesisからのLambdaが遅延した!! その時の対処は?
# 何が起きたのか
リアルタイムを実現するアーキテクチャを以下のように組みました逐一流れてくるデータソース(企業秘密)→Kinesis→Lambda→DynamoDB
データソースにもDynamoDBのデータの双方に書き込みのタイミングのタイムスタンプが入っていました。そのタイムスタンプがずれてたんです!
それも**1時間**。果てどうしたものか・・・
# AWSがヒントを提供していた
この遅延、実はメトリクスで分かったんです。そのメトリクスは**IteratorAge**
です。Kinesisでも*IteratorAgeMilliseconds*としてメトリクスに書かれていました。
このIteratorAgeは** 読み込んだ時刻と処理時刻の差分
の事のよう。つまり、「入った時間と出る時間の差分」つまり、Kinesis+Lambdaのリアルタイム処理の「遅延」を表していることになると至りました。
「Amazon CloudWatch による Amazon Kinesis Data Streams サービスのモニタリング」
https://docs.aws.am
Azure用語に対応するAWS用語を表示するユーザースクリプト
# はじめに
AWSは知っているがAzureはよく知らない、という状態でAzureの勉強をするとき、「この機能はAWSで言うところのこれ」という情報があると、すんなり頭に入ってきたりします。
[公式の比較表](https://docs.microsoft.com/ja-jp/azure/architecture/aws-professional/services)を見れば対応はわかるのですが、いちいち見に行くのは面倒なので、ユーザースクリプトにしてみました。# 作ったもの
## できること
以下のように、ページ内のAzure用語にカーソルを合わせると、対応するAWS用語がポップアップされるようになります。用語は[比較表](https://docs.microsoft.com/ja-jp/azure/architecture/aws-professional/services)から拾っています。
![screenshot_after2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114715/243
AWS S3 バケットで保存する
S3でファイルがアップロードされる領域を準備しましょう
ファイルのバックアップであったり、ファイル処理の加工前、もしくは加工後のファイルを保存する、画像ファイルやCSSなどWebで使う静的なファイルをS3に置いて配信するなど、使い方は無限大になりますS3(Simple Storage Serviceを略してS3)で、実際にデータが格納される場所のことをバケットと呼びます。バケットの名前はアクセスするときのURLとして使用されるため、まだ誰も付けたことがない名前を使う必要があります。
# S3を利用してバケットを作成
1. [AWSコンソールを開く](https://ap-northeast-1.console.aws.amazon.com/console/home?)2. ストレージの項目にある「S3」を開く
[![Image from Gyazo](https://i.gyazo.com/04adc09288030f2f07afe876efb3bc98.gif)](https://gyazo.com/04adc09288030f2f07afe876efb3bc98)
3
AWSのALBでSSL化したらレスポンスが遅くなった時の対処法
### はじめに
オリジナルのアプリを`https`化して、サイトにアクセスした時に、1回目のレスポンスが非常に遅くなる現象が発生した。
今回はその対処法をまとめる。### 参考にした記事
ちなみに、問題解決にあたって以下の記事を参考にした。
[AWS Elastic Load Balancing: Seeing extremely long initial connection time](https://stackoverflow.com/questions/35523421/aws-elastic-load-balancing-seeing-extremely-long-initial-connection-time)
ALBを立ち上げる際に、サブネットを2つ設定しなければならないのだが、どちらかのサブネットがプライベートサブネットになっていると問題が発生するようだ。
### 対処法
既存のVPCネットの中に、追加でパブリックサブネットを作成し、ALBを置いておくサブネットとして設定をすれば良い。以上
PowerShell から amazon/aws-cli の Docker イメージを起動して AWS に接続する
AWS CLI の Docker イメージが公開されたので、Docker for Windows + PowerShell という環境から、これを利用する手順について確認しました。
__参考:__
– [AWS公式さんがDocker Hubで aws-cli のイメージを公開してくれた! – Qiita](https://qiita.com/kai_kou/items/cfb7c1d6a449e0da68d1)
– [AWS CLI v2 Docker image | AWS Developer Blog](https://aws.amazon.com/jp/blogs/developer/aws-cli-v2-docker-image/)動作環境は以下の通りです。
~~~
PS > docker –version
Docker version 19.03.6, build 369ce74a3cPS > $PSVersionTable
Name Value
—-
Elastic BeanstalkでELB作成を抑止する
[Elastic Beanstalk](https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/Welcome.html)で管理しているプロダクトを任意のALBでパスルーティングする場合、コスト削減のためにELB作成を抑制することがあります。その時の設定のコツと注意点を書きたいと思います。
* 基本的に下記名前空間において環境アーキテクチャとサービスロールを設定する必要があります。
名前空間: aws:elasticbeanstalk:environment
* ELB作成を抑止するためにはEnvironmentTypeをSingleInstanceと指定します。
そうすることでELBは作成されずに単一のEC2 Instanceのみが起動する環境を作成できます。“`tf
// EnvironmentType LoadBalanced or SingleInstance
setting {
namespac
Amazon AWS CloudWatch Logs Insights で 指定したキーワードにヒットしたログを1分単位でグループ化して抽出する
自分用
“`
fields @timestamp, @message
| filter Records.0.cf.request.body.data = “★キーワード★”
| stats count(*) as polling_count by datefloor(@timestamp, 1m) as ts
| sort ts asc
“`
疑似的にNATゲートウェイを停止・起動する
# VS 使ってないNATゲートウェイの課金
NATゲートウェイは思いのほか使用料金が高く、夜間の開発環境など使用していない時は止めたい。
ただ現在において停止機能は存在しておらず、停止イコール削除となる。
停止という点ではNATインスタンスを立てて停止すれば良い話だが、それでは単純に面倒。せっかくのマネージドサービスは使いたい。
ならば、使用していないときにNATゲートウェイを削除し、使いたいときに必要な情報をもって再作成するスクリプトを作成すればいい。# やりたいことを図にしてみる
![gomi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558188/0b0f391e-afea-597b-dd03-da856764aea1.png)
UMLの書き方は正式に勉強していないので許してほしい。# 停止(削除)スクリプト
“`Python
import boto3client = boto3.client(‘ec2’)
natGateWayList = []
routeTableL
[AWS] Amazon Redshiftまとめ
# Amazon Redshiftとは
– 高速、スケーラブルで費用対効果の高いDWHおよびデー誰行く分析マネージドサービス
> 参考:https://d1.awsstatic.com/webinars/jp/pdf/services/20200318_AWS_BlackBelt_Redshift.pdf
# ユースケース
> 主に大容量データを高速に集計・分析する必要があるワークロードに利用
– 経営ダッシュボード
– 定型レポーティング
– アドホック分析
– ELT/バッチ
– 機械学習の前処理## Amazon Redshiftを中心としたデータ分析パイプライン
![amazon_redshift-データパイプライン.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/97615/1bb17548-4eb3-d2db-2518-a88aeb2853eb.jpeg)
# アーキテクチャ(RA3インスタンス)
– ベースは **PostgreSQL** でDWH用に拡張している
Amazon ECS 一通の動作
#1.Dockerイメージ#
dockerのインストール(環境:Amazon Linux2)
“`
sudo yum install -y docker
sudo service docker start
“`sudo なしでdockerを利用できるようにする。
“`
sudo gpasswd -a $USER docker
sudo service docker restart
“`DockerFileを作成する。
“`DockerFile:DockerFile
FROM centos:latestRUN yum install -y httpd
COPY ./index.html /var/www/html/index.html
VOLUME /var/www/html
EXPOSE 443 80
CMD [“/usr/sbin/httpd”, “-D”, “FOREGROUND”]
“`“`
docker build -t demo ./
“`#2.ECRにログインしPush##
ECRにリポジトリを作成しておく。
!
Cloud9にPython+OpenCVの環境を構築する
AWS Cloud9にPython+OpenCVの開発環境を作りたい場合の環境構築手順です。
特に、各種インストールの部分が面倒だったのでまとめておきます。(ベストな方法かはわかりません、すみません。)## EC2の作成
私は`EC2 instance type:t3.small`で作成しましたが、任意のインスタンスタイプを選んで作成してください。## Cloud9インスタンスのボリュームを拡張する
t3.smallのデフォルトのボリュームは10GiBです。
これだと色々とインストールしている段階で容量が足りなくなるので、容量を拡張します。(容量が足りなくなるとインストール時に`No space left on device`)と表示されます。
拡張手順は以下の記事を参照してください。
https://qiita.com/ktrkmk/items/8cf1e100da2e717f3be2
私は一旦30GiBまで拡張しました。## homebrewのインストール
以下のコマンドでインストールします。“`
$ sh -c “$(curl -fsSL https://raw
AWS Lambdaでgitコマンドを使う
# AWS Lambdaでgitコマンドを使う
AWS Lambdaでgitコマンドを使いたい場合があります。
githubのAPIを呼んだり、dulwichを使ってもいいのですが、新しく勉強するよりは、できれば、いつもの使い慣れたgitコマンドを使いたいものです。### 使う物
AWS Lambda用にコマンドとライブラリをいい感じにまとめてくれるDockerコンテナ
→ https://hub.docker.com/r/qualitiaco/lambda-build-pack## gitコマンドとライブラリを抽出
### gitコマンドを取り出すスクリプト
“`sh:src/build.sh
#!/bin/sh
yum install -y git
cp -a /usr/bin/git ${OUTPUT_PATH}
cp -a /usr/libexec/git-core/git-remote-https ${OUTPUT_PATH}
cp -a /usr/libexec/git-core/git-remote-http ${OUTPUT_PATH}
“`yu
【AWS】Elastic IP解放→割り当て後に必要な事
## この記事は?
AWSのElastic IP(以降EIP)再割り当て時の対応に関する記事です。## 想定する読み手
– AWSでのデプロイ経験が乏しい方
– AWSでデプロイしたアプリを使わないからインスタンス停止、IP解放した方
– EIPを再割り当てしたけどアプリが起動できない方**著者開発環境**
mac
Ruby 2.5.1
Rails 5.2.3
AWS
nginx
mySQL
unicorn## そもそもElastic IPとは
AWSで取得できる、アプリへアクセスするためのIPアドレスです。
特定のIPアドレスを指定することはできませんが、ランダムで取得したEIPは、解放※しない限り占有する事ができます。
(※解放:インスタンスに紐付けしているEIPの占有を解除する事)**使用料金**
起動中のEC2インスタンスに割り当てたEIPは無料(1インスタンスにつき1つ。2つ目以降は有料)で使用できます。
停止中インスタンスに割り当てられているEIPは有料。(0.005ドル/1時間)
インスタンスを停止していると1ヶ月で、0.005ドル×24(時間)×30(日