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

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

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(日

元記事を表示

AWS IAMとAuthyによる二段階認証を設定する

#Authyを利用して二段階認証を設定し、AWSアカウントを保護する
AWSアカウントの乗っ取り防止のために、利用していきます

## インストール
iOS版

https://itunes.apple.com/jp/app/authy/id494168017?mt=8&uo=4&at=10lMo4

Android版

https://play.google.com/store/apps/details?id=com.authy.authy

## 導入
[二段階認証アプリ[Authy]が[Google Authenticator]よりも優れている理由](https://coinpost.jp/?p=4150#index04)

1. AWSにサインイン
2. 画面右上のユーザー名をクリック
![スクリーンショット 2020-04-05 21.59.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/d0279a82-e5bb-c42f-f3dc-718c3d65e099.png)

3

元記事を表示

AWS ECR/ECS 勉強メモ① Dockerコンテナ起動

## やること

Cloud9環境でDockerイメージをビルドして
ECRにDockerイメージをpushして
ECSでDockerコンテナを起動する

## 参考リンク

– [AWS Cloud9環境でdocker-composeをできるようにする](https://qiita.com/okenak/items/51d2fc2e6a4b8adace2a)
– [今から追いつくDocker講座!AWS ECSとFargateで目指せコンテナマスター!](https://www.youtube.com/watch?v=DS5HBTMG1RI&list=PLtpYHR4V8Mg-jbuk4yoXhXwJtreodnvzg)
– [Capacity Providerとは?ECSの次世代スケーリング戦略を解説する](https://dev.classmethod.jp/articles/regrwoth-capacity-provider/)

## 構成

今回つくる環境

![構成図](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

Serverless Components はオレたちの未来を劇的にスケールさせるか

![](https://camo.githubusercontent.com/db47fe1b099d427f1b040294fbe0f7102ca4a7ab/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f7075626c69632e6173736574732e7365727665726c6573732e636f6d2f696d616765732f726561646d655f7365727665726c6573735f636f6d706f6e656e74732e676966)

Serverless.inc 社より、[Serverless Components](https://github.com/serverless/components) がついに GA されました。

近年のアプリケーション開発では、いくつかの SaaS を組み合わせることで超高速に開発を行うことができます。例えば「認証は Auth0、ホスティングは Netlify、バックエンド API は AWS Lambda を使用する」といった具合です。このように複数

元記事を表示

S3へファイルをアップロードするLambda関数をSAMで書く

# はじめに

この記事は、AWS SAMを用いてファイルをS3にアップロードするLambda関数を作成する記事です。

# やりたいこと

今回は、何かしらのファイル(本記事ではJSON)をS3にアップロードする処理を、AWS SAMを用いてCloutWatchイベントから定期的に発火させる、ということをやっていきます。
![スクリーンショット 2020-04-05 23.50.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/264906/0831c4ce-9697-a768-098b-27c6b111db09.png)

# 開発環境

– macOS Catalina
– vim
– Golang (1.12.6)
– aws-sam-cli
– Minio

# SAMの設定

今回は[AWS SAM](

元記事を表示

awsコマンドでPythonのNo module named ‘encodings’のエラーが出る

## 概要
MacでAWS CLIのコマンドを実行した時、いつからか`No module named ‘encodings’`というコマンドが出るようになりました。この時にやったことを色々書いてます。
ただ、結論を先に言うと、__Python3を再インストール__して直しました。

## 事象と試したこと

awsコマンドを実行すると、以下のようにエラーが出るようになり色々ググってみることに。補足すると、AWS CLIの中でPythonを使っているため、Pythonも正しく設定されている必要があります。

“`bash
$ aws configure –profile XXXX
…(省略)…
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named ‘encodings’
…(省略)…
“`

試したのはいずれもパス関連の修正です。

#### 1. PYTHONHOMEの設定を変えてみる

– エラーをググると、PYTHON

元記事を表示

ローカル(Docker)でDynamoDBの環境構築

# 概要
* DynamoDBをローカル環境でテストするためのDockerを用いたDynamoDB localについて解説します
* AWS CLIの設定などはすでに済んでいる前提なので、もしまだの場合[ドキュメント](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-welcome.html)を見てください
* Dockerの基礎的な知識とDockerの設定などはすでに済んでいる前提なので、もしまだの場合[ドキュメント](http://docs.docker.jp/engine/installation/)を見てください
* 対象読者はサクッとDynamoDBをローカルで試してみたいと考えている方です
* この記事は[dynamodb-local](https://hub.docker.com/r/amazon/dynamodb-local)を参考にしています

# DynamoDB localとは
DynamoDB localは開発者が自身の開発環境で動作しているDynamoDBのバージョンを用いて開発・

元記事を表示

Amazon API Gateway/ALBのバックエンドで動くLambda関数をJava(Eclipse+maven)で実装する

# 前提条件
初心者向け。Lambdaは知ってるけどWeb APIどうやって実装するんだろう、といったところから。

先に結論を書いておくと、Web APIなLambda関数をJavaで実装するのは非常に燃費が悪い感があるのでオススメできない。制約が無い限りは、node.jsとかpythonとかを使った方が断然楽だと思った。
※トラブルシューティングの面でも、Javaとその他のスクリプト言語では情報量が全然違うというか、その他のスクリプト言語ってたぶんJavaほどトラブらない気がする……

一応、環境はWindows10+Eclipse+Mavenなので、環境構築からする場合は[この辺の過去記事](https://qiita.com/neruneruo/items/454feea586febabfe13d)を見つつセットアップすると導入が早い。

あと、JDKは8か11にしておく。Lambdaは2020年4月時点ではまだJDK13のランタイムに対応していないのである。

# サンプルプロジェクトからJarファイルを作成する
Eclipseのメニューで、ファイル→新規→プロジェクトのダイ

元記事を表示

EC2について

#EC2とは

インスタンス単位で任意のAZにインスタンスを立ち上げてサーバーとして利用できるサービス

#特長
・柔軟性が高い(短時間で使いたいサーバーを立てることができる)
・世界中のリージョンから選択できる
・セキュリティグループでトラフィックの制御できる
・AMIを使うことで同じサーバーをいくつも起動できる

#インスタンス作成の流れ
1. OSイメージの選択
2. インスタンスタイプの選択
3. ストレージの選択
4. セキュリティグループの設定
5. SSHキーペアの選択

###OSイメージの選択

以下のOSから選択可能
・AMI(AWSが提供)
・Windows
・Mac
・Linux
・カスタムAMI(自作)

※データはS3内に保存される

###インスタンスタイプの選択

スクリーンショット 2020-04-05 19.40.35.png[Python] Headless Chrome を AWS Lambda で動かす

1. serverless-chromeをダウンロードして解凍
– 以下の `chromium 64.0.3282.167` で動作確認した
– https://github.com/adieuadieu/serverless-chrome/releases/tag/v1.0.0-37
1. chromedriverをダウンロードして解凍
– 以下の `chromedriver_linux64.zip` で動作確認した
– https://chromedriver.storage.googleapis.com/index.html?path=2.37/

1. 実行権限付与
– `chmod 777 <ダウンロードしたファイル>`
1. `chrome` フォルダにダウンロードしたファイルを入れて、zipに固める
1. Lambdaレイヤーにzipをアップロード
1. Lambdaレイヤーにseleniumをアップロード
– 以下を参考のこと
– https://qiita.com/mishimay/items/e107b685

元記事を表示

PycharmでAWS CLIのプロファイルを切り替える

## 概要
Pycharm + AWS Toolkitで開発をしている時に、別アカウントの環境(CLIでプロファイル設定済み)に切り替えたいことがありました。ソースに変更を加えずに環境を切り替えたかったのですが、環境変数を設定するやり方が楽だったので紹介します。

## 方法
Edit Configurations > Environment variables から設定します。
日本語化してる人は、「構成の編集 > 環境変数」です。
スクリーンショット 2020-04-05 19.53.22.png

設定する環境変数は以下の2つです。それぞれに利用したいプロファイル名を設定します。

“`
AWS_DEFAULT_PROFILE
AWS_PROFILE
“`

(例)user01というプロファイル名を使う

元記事を表示

ECRにdockerをプッシュする時に、credentialsのエラーが出たときの対処

AWS ECRにdockerをプッシュする時、テンプレートのコピペだと上手くいかないところがあったのでメモ。

## 環境
aws-cli/2.0.6
AWSのプロファイル設定済み

## エラー内容
テンプレートをそのままコピペすると以下のコマンドになります。

“`
$ aws ecr get-login-password –region [region] | docker login –username AWS –password-stdin [account].dkr.ecr.[region].amazonaws.com/[repositry name]
“`
が、上記のコマンドを実行しても、以下のようなエラーが出てしまいます。

“`
Unable to locate credentials. You can configure credentials by running “aws configure”.
Error: Cannot perform an interactive login from a non TTY device
“`

## 解決方法
A

元記事を表示

[Python] pip3のパッケージを AWS Lambda 上でimportできるようにする

AWS Lambda レイヤーにパッケージ用のレイヤーを追加する。

1. パッケージを配置したフォルダを作成

“`zsh
pip3 install -t python/lib/python3.7/site-packages <パッケージ名>
“`
– `python3.7` の箇所は適宜置き換える

1. `python` フォルダをzipに固める
1. レイヤーにアップロード
1. パッケージを利用したい関数にレイヤーを追加する
1. `import <パッケージ名>` で使えるようになる

## 参考

## 環境

macOS 10.15.4
Python 3.7.7

元記事を表示

Cloudtrailのログを、awsマネージドではないsparkのmetastoreに登録する方法

# はじめに
awsマネージドなSpark/hive環境であれば、 `com.amazon.emr.hive.serde.CloudTrailSerde` あたりを利用してmetastoreにテーブルを登録することができます。
https://docs.aws.amazon.com/ja_jp/athena/latest/ug/cloudtrail-logs.html
しかし、 `com.amazon.emr.hive.serde.CloudTrailSerde` はawsマネージドではないSpark/hiveでは利用できません。

本記事では、databricksなどの **awsマネージドではないSpark環境** において、cloudtrailのログをmetastoreに登録する方法を説明します。

## 注意
* region/year/month/dayのpartitionが利用可能なようにcreate tableしています。
* partitionは手動で追加する必要があります。手順参照。
* hive上では、本手順では動きません。
* とはいえ、ちょっとした変

元記事を表示

S3バケット別概算コスト算出ツールを作ってみた

# はじめに

S3って安価なストレージなので、容量気にせずとりあえずなんでも格納して放置なんてことが多いですよね?
将来的に分析するかもってことでデータレイクに蓄積して結果使わないなんてことも多い。(my観測範囲)

で、新型コロナウィルスの影響で先行き不安な状況なので、収束まではどうにか支出を抑えて凌ぎたい。。
という人も多いと考え、S3バケットごとに要否判断(&不要であれば削除)しやすいように、S3バケットごとに
使用量/概算コストを簡単に一覧表示するツールを作ったので、紹介します。

# ツール概要

一言で言えば、
`全リージョン/全バケット別にオブジェクト数/使用バイト数/概算月額料金を出力するツール`
です。(誰かが作ってそうなんですが探してもなかったので作りました)

[CloudWatchからバケットサイズなど取得できる](https://dev.classmethod.jp/articles/s3-cloudwatch/)ようになってるので、それを実行すればawscliでも取得できる
のですが、リージョン指定しないといけないとか、メトリクス/ディメンションを指定する

元記事を表示

DevOps

AWS DevOps自分用攻略本作成中

# スケーリング

## Q:200以上のスレッド処理している際にパフォーマンス低下、対応策は?
#### A:各インスタンスにスクリプトを追加して、同時セッション数を検出、セッション数が5分で200を超えている場合は、インスタンスにAutoScalingグループの必要な容量を1つ増やす。

## Q:コンプライアンス問題を自動的検出、修正する方法は?
#### A:コンプライアンス変更通知をSNSトピックに発行するCWatchEventルールを作成する。メッセージチャネルHTTPSエンドポイントをSNSトピックにサブスクライブする。非準拠のセキュリティ構成に対処するLambda関数を記述、SNSトピックにサブスクライブする。

## Q:VPCで新しいAWSの機能をテストする場合の最短方法は?
#### A:開発リクエストに応じて、ステージングVPCでEC2を起動し、構成管理を使用してアプリをセットアップ。テストハーネスを実行してアプリの機能を確認して、SNSで開発チームに結果を通知。

## Q:DynamoDBからLambdaでデータを読

元記事を表示

DynamoDB queryパラメータまとめ

# はじめに

今さらだがDynamoDBのクエリパラメータについてまとめる。
既に他の人が同じような記事を書いているかもしれないが、
AWSのドキュメントを読んでいて、
「分かりづらいから一覧でまとめてくれ!!」と思い
あくまで自分のためのメモとして残す。
他のDB操作パラメータについては必要が出てきたら追記するつもり。

# Query Parameters

## TableName

* 文字通りテーブル名を指定する

## KeyConditionExpression

* プライマリーキー(パーティションキー、ソートキー)、セカンダリーインデックスに対する条件式を記述する
* DynamoDB予約語でなければ、後述のExpressionAttributeNamesでプレースホルダーを指定しなくてもそのまま使える
* 例
* ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173520/9aff5b5e-cc30-ecba-d1d2-f2792b96081e.png)

元記事を表示

AWS LambdaのCustom Runtimeを使い、Node.js v8などEoLとなったランタイムを動かす

# はじめに

Node.js、バージョンアップの足がかなり早いですよね。
AWS Lambdaにおけるランタイムサポート期間も、これにあわせてハイテンポになっています。

ちゃんとバージョンアップをしろというご意見は重々承知の上ではありますが、
Node.js v8.10でLambda Functionを使い続けざるを得ない場合に、カスタムランタイムを使ってEoLとなったランタイムを動かし延命処置を図ります。

## 動作確認環境

* Arch Linux (2020.04.04)
* Docker 19.03.8-ce
* aws-cli 1.18.36

# カスタムランタイムの使い方

カスタムランタイムの仕様については、[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/runtimes-custom.html)が詳しいので割愛します。

カスタムランタイムを使用するには、デプロイパッケージあるいはLayerに、`node`実行ファイルと、ハンドラー関数を起動するための`bootstrap`実行ファイル

元記事を表示

OTHERカテゴリの最新記事