- 1. Glueの使い方的な㊸(DynamicFrameのMerge)
- 2. www付きをwwwなしへリダイレクトをALBで(terraform)
- 3. RDS for PostgreSQLで監査ログをCloudWatchLogsに出力する
- 4. CloudWatchアラームでN個中M個がしきい値を超えたらアラームにする設定、CloudFormationでどう書くっけ?
- 5. AWS Amplify フレームワークの使い方Part5〜GraphQL Transform @model編〜
- 6. [Python3]datetimeにタイムゾーンを指定するawareな方法
- 7. Cloud9でPackerを実行する
- 8. スナップショットからRDSインスタンスを作成する方法
- 9. AWS の NAT インスタンスを CloudFormation で作る
- 10. ECSでdocker volumeマウントのownerを指定する
- 11. AWS Developer Associate サンプル問題の日本語訳
- 12. CircleCIでbranchへのpushはテスト環境にデプロイする設定をしてみたがS3とCloudFrontの接続でちょっとミスした話
- 13. AWS Lambda用に.NET Coreで書いたAPIサーバをDockerでローカルでも実行させてみた
- 14. Go×CloudWatchでファイル取得状況をカスタムメトリクス化する
- 15. Nginx経由でRailsをAWS環境で起動できないエラー時にまず確かめたいこと、使えるコマンド。
- 16. これだけでOK! AWS 認定ソリューションアーキテクト のメモ
- 17. Amazon Web Services (AWS)サービスの正式名称・略称・読み方まとめ #22 (顧客イネーブルメントサービス)
- 18. Amazon EKS のチュートリアルで Kubernetes を理解する #05 Container Insights
- 19. WordPressで画像認証表示されずログインできなくなった件
- 20. Amplifyでリソース作成に失敗したときの対処法
Glueの使い方的な㊸(DynamicFrameのMerge)
# DynamicFrameのmergeDynamicFrameを使ってデータのマージ
https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-dynamic-frame.html#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-merge
2つのDynamicFrameをマージするというだけです。同じ意味を持つデータで、別ファイルとして行われた更新をマージしたい場合によいかもしれません。
## ジョブの内容
JupyterNotebookで、2つのDynamicFrameをマージします。
# 全体の流れ
* 前準備
* ジョブ実行
* 確認# 前準備
## ソースデータ
(uuidをキーとしてこの後のジョブを実施します)
### cvlog1.csv
19件のデータ
“`csv:cvlog1.csv
deviceid,uuid,appid,country,year,month,day,ho
www付きをwwwなしへリダイレクトをALBで(terraform)
“`
resource “aws_lb_listener_rule” “redirect” {
listener_arn = aws_lb_listener.https.arn
priority = 90action {
type = “redirect”
redirect {
host = “example.com”
path = “/#{path}”
port = “443”
protocol = “HTTPS”
query = “#{query}”
status_code = “HTTP_301”
}
}condition {
field = “host-header”
values = [“www.example.com”]
}
}
“`
RDS for PostgreSQLで監査ログをCloudWatchLogsに出力する
# pgauditの有効化
1. RDSに接続する
—
下記コマンドを実行する“`
psql -U [ユーザ名] -h [RDSのエンドポイント] -d [DB名]
“`
2. pgauditが利用するDBロールを作成する
—
下記コマンドを実行する“`
=> CREATE ROLE rds_pgaudit;
“`3. RDSのパラメータグループを変更する
—
AWS管理コンソールから RDS > パラメータグループ > 設定するインスタンスのパラメータグループ で変更する
***下記は 必須***|パラメータ名|値|
|:—|:—|:—|
|pgaudit.role|rds_pgaudit|
|shared_preload_libraries|pgaudit|***下記は 任意***
|パラメータ名|許可される値|説明|
|:—|:—|:—|
|pgaudit.log_level|debug5, debug4, debug3, debug2, debug1, info, notice, warning, log(デフォ
CloudWatchアラームでN個中M個がしきい値を超えたらアラームにする設定、CloudFormationでどう書くっけ?
# いきなりまとめ
いまの開発チームでは、AWSリソースをCloudFormationを使って管理しているんですが、
CloudWatchアラームを作成する時、「データポイントN個中M個が閾値を超えたらアラームっていう設定ってCloudFormationでどう書くっけ?」
「EvaluationPeriodsの単位って秒だっけ?回数だっけ?」
「PeriodとEvaluationPeriodsってどっちがどっちだっけ?」を迷って、
毎回、AWSドキュメントを見たり、ググったりしていて、
そんな自分にもいい加減嫌気がさしてきたので、記事にまとめました。結論として、
**[Period]秒間隔にメトリクスを出したとして、直近[EvaluationPeriods]個中、[DatapointsToAlarm]個が閾値を上回ればアラームになる**
です。# 具体例
実際に作って見ますね。
こんなテンプレートをCloudFormationに流してみます。“`
AWSTemplateFormatVersion: ‘2010-09-09’
Resources:
Sample
AWS Amplify フレームワークの使い方Part5〜GraphQL Transform @model編〜
# はじめに
Amplifyでの肝の部分であるAPI(AppSync = GraphQL)のスキーマ設計についてまとめていきます。その第一弾として、まず基本的な`@model`の解説から行っていきます。# 定義
`@model`は以下のように定義されています。“`
directive @model(
queries: ModelQueryMap,
mutations: ModelMutationMap,
subscriptions: ModelSubscriptionMap
) on OBJECT
input ModelMutationMap { create: String, update: String, delete: String }
input ModelQueryMap { get: String, list: String }
input ModelSubscriptionMap {
onCreate: [String]
onUpdate: [String]
onDelete: [String]
level
[Python3]datetimeにタイムゾーンを指定するawareな方法
PCでコーディングしたプログラムをAWSのLambda関数で実行したら、`datetime.now()`で取得される時刻が異なることに気づきました。PCはJST時間、AWSはUTC時間のため9時間の差があることが原因です。
プログラムを変えずにPCでもAWSのLambda関数でも同じ結果を得るために、datetimeにタイムゾーンを指定する方法を調べました。#環境
– Python 3.7.4#問題の事象
例えば次のプログラムを実行すると、PCで取得される現在時刻と、AWSのLambda関数で取得される現在時刻に9時間の差異が発生します。9時間の差異なので、Lambda関数で実行するときには` + timedelta(hours=+9)`として9時間足せばいいのだけれど、それではPCからLambda関数に持っていくときにプログラムの修正が発生するので望ましくないため、プログラムを変更せずに同じ結果が得られるようにしたいと考えました。“`python:lambda_function.py
from datetime import datetime, timezone, ti
Cloud9でPackerを実行する
「Packer」とは、TerraformでおなじみのHashiCorp社が出しているマシンイメージの作成ツールで、AWS、Azure、GCPなどマルチクラウドに対応している点が売りです。
AWSですと最近「EC2 Image Builder」というサービスが出ましたが、これに近いでしょう。今回、Cloud9でPackerをインストール&実行して、AMIを作成してみました。
# 手順
## 1. Homebrewをインストール
以下リンク先の手順で一撃です。
**「Cloud9にHomebrewをインストールする手順」**
https://qiita.com/nasuvitz/items/5eec6ab9444cff8e9467## 2. Packerをインストール
一撃です。“`bash
$ brew install packer
“`## 3. Packerテンプレートを書く
「[Amazon AMI Builder](https://www.packer.io/docs/builders/amazon.html)」を見ながらテンプレートを作ります。
サンプルと
スナップショットからRDSインスタンスを作成する方法
# はじめに
“出来合いのDB”のスナップショットからクローンとなるRDSインスタンスを作る機会があったので、その手順をまとめてみました。
# スナップショットの選択
* AWSマネジメントコンソールのトップ画面から、[サービス]>[RDS]と進みます。
* RDSの画面の左側のパネルで、[スナップショット]を選択します。![rds_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/ce037d02-4b82-a9bb-ab82-c82b35ea0820.png)
* スナップショット画面が開いたら、所望のスナップショットにチェックを入れます。
* その後、スナップショット画面上部の[スナップショットのアクション]のリストをクリックして、[スナップショットの復元]を選択します。![rds_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312166/0adc4a7c-f098-89d4
AWS の NAT インスタンスを CloudFormation で作る
See: https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_NAT_Instance.html
NAT ゲートウェイだと楽なんだけど、あまり性能いらないのに高かったので NAT インスタンスを作成した。
NAT インスタンスでは “送信元/送信先チェック” を無効にしなきゃいけないんだけど、instance attribute の変更は CloudFormation でできないようなので、UserData で初回起動時にコマンド実行するようにした。
下記は Availability Zone `ap-northeast-1a` に作成する例。
“`yaml
# セキュリティグループ
SecurityGroupNat:
Type: AWS::EC2::SecurityGroup
Properties:
SecurityGroupIngress:
– CidrIp: (サブネットのアドレス範囲)
Description: HTTP
FromPort: 8
ECSでdocker volumeマウントのownerを指定する
ECSでdocker volumeをマウントするとownerはrootになります。
指定したい場合は、タスク定義のボリューム定義で、`dockerVolumeConfiguration.driverOpts` を指定しましょう。
例えば、tmpfsとしてボリュームを作成してownerをuid=1000, gid=1000にしたいときは、“`json
“volumes”: [
{
“name”: “sharedtmp”,
“dockerVolumeConfiguration”: {
“autoprovision”: true,
“scope”: “shared”,
“driverOpts”: {
“type”: “tmpfs”,
“device”: “tmpfs”,
“o”: “uid=1000,gid=1000”
}
}
}
]
“`こうすることで ボリューム作成の際に以下のようにオプションを
AWS Developer Associate サンプル問題の日本語訳
# はじめに
本記事は、AWS Developer Associate(DVA)のサンプル問題の日本語訳(ほぼGoogle翻訳 + 一部意訳)です。
現在(2020/1/17時点)サンプル問題の日本語訳が公式HPから公開されていないので、自分用のメモとして記載します。翻訳や記載の誤りなどあれば、コメント/修正リクエストをいただけると幸いです。
また原文にはない個人的感想は区切って追記しています。翻訳元は以下です。分からない問題がある場合は、原文のリンクを見てください。
[AWS 認定開発者 – アソシエイト](https://aws.amazon.com/jp/certification/certified-developer-associate/)
(上記サイト内右の「サンプル問題をダウンロード」のリンク先)# 1問目
企業がレガシーアプリケーションをAmazon EC2に移行しています。アプリケーションは、ソースコードに保存されているユーザー名とパスワードを使用して、MySQLデータベースに接続します。 データベースは、Amazon RDS for MySQL DBインス
CircleCIでbranchへのpushはテスト環境にデプロイする設定をしてみたがS3とCloudFrontの接続でちょっとミスした話
#目的
前回、GitHubへpushしたリソースをCircleCIを使ってS3へデプロイする構成を作ってみました。
今回はよりリアルな製品開発をイメージしてテスト環境と本番環境が分かれていることを想定し、branchへのコミットをテスト環境、masterへのコミットを本番環境へデプロイするようにs3とCiecleCIの設定を行いました。その中でS3の設定でミスに気づきましたので、対処方法含め共有します。
#構成図
利用サービスやアーキテクトは前回と同じです。テストと本番の2環境となります。
![Arch5-test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136929/21d71cd7-e158-f9c9-e687-026a7f5cdfa8.png)![Arch4-test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136929/35fb59c3-b750-e1f2-5a55-245548b2723d
AWS Lambda用に.NET Coreで書いたAPIサーバをDockerでローカルでも実行させてみた
# AWS Lambda用に.NET Coreで書いたAPIサーバをDockerでローカルでも実行させてみた
## はじめに
.NET CoreもC#も未経験の筆者が、AWS上で.NET Core Webアプリケーションを作成する必要に駆られたので、お試しでデプロイとローカルデバグ用の開発環境を構築してみました。
備忘録を兼ねてメモを残します (テック記事は人のためならず)。これはアカンとか、何書いているのププみたいなことがあればご指摘いただけますと、たいへんありがたいです。
## Introduction
今回の要件は以下の通りです。
* 開発は.NET Core (この記事執筆時点では2.1)
* 開発言語はC#
* 動作環境はAWS Serverless Architecture (APIGateway + Lambda + DynamoDB etc.)なお、開発環境としてはVisual Studio 2019を使用しています。
なお、機能として、”ASP.NETとWeb開発”と”.NET Coreクロスプラットフォームの開発”をインストールしています。
Go×CloudWatchでファイル取得状況をカスタムメトリクス化する
今回はAWS-SDKを用いて、大量のデータを取得するEC2インスタンスの1時間当たりのファイル取得量をCloudWatchでカスタムメトリクス化して取得状況を監視するシステムを作成したので、一部をご紹介します。
AWS関連の部分以外はGoの標準パッケージのみで作るシンプルなものになっています。
# Goでファイル取得数を計算する
下記のプログラムで現在のファイル取得数と経過時間を計算します。
コード自体はとてもシンプルです。“`go
package calculator
import (
“fmt”
“io/ioutil”
“math”
“os”
“path/filepath”
“sort”
)func GetFetchSpeed() (float64, error) {
dir := `取得したいディレクトリ`
//ディレクトリからファイルを取得
files, err := ioutil.ReadDir(filepath.Dir(dir))
if err != nil {
Nginx経由でRailsをAWS環境で起動できないエラー時にまず確かめたいこと、使えるコマンド。
表題の内容に関して、チェックすべきポイントを
備忘録として以下に記す。###そもそもURLは正しいか?
Nginx導入の際に、unicorn.rb内の記述を変更していると思うので、
改めてブラウザからElastic IPでアクセスしてみる。###データベースは起動しているか?
Mysql使用時は以下を実行して確認。“`ターミナル:ターミナル
[ec2-user@ip-XXX-XX-XX-XXX <リポジトリ名>] $ sudo service mysqld start
#上記実行後running…と表示されていればOK
“`
###Railsは起動しているか?
unicorn使用時には以下を実行して確認。“`ターミナル:ターミナル
[ec2-user@ip-XXX-XX-XX-XXX <リポジトリ名>] $ bundle exec unicorn_rails -c config/unicorn.rb -E production -D #エラー文が表示されなければOKmaster failed to start, check stderr log for d
これだけでOK! AWS 認定ソリューションアーキテクト のメモ
オリジナルアプリをデプロイする時に、「これだけでOK! AWS 認定ソリューションアーキテクト」をudemyをメモ程度に残す。大事なところだけメモしますので、流し読み推奨。
## セクション1 まずは知ってみる
### コースの概要
AWSの概要を7分で話す。まだちんぷんかんぷん。### 1.小テスト
実際のテストを3問見れる。質問の意味が分からず、一旦3問とも飛ばした。
文章形式になっているのでサーバ構築経験がないと答えづらいとのこと。### 2.AWSアカウント登録
丁寧に登録方法を紹介。しっかりと画像がついているのでわかりやすい。
クレカ登録。一部有料枠が必要なので。基本的にはお金がかからないようにして下さる。
AWS課金は怖いと聞くので、注意しよう。### 3.AWSでサーバーを構築してみる①
サーバーを買ってきて構築すること → オンプレミス
(クラウドの対義語)AWSは、サーバーを立ち上げるのに数分で無料で今すぐにでも利用できるのが大きな特徴とのこと。
要は、クラウド上でサーバーを作るのは手軽で早いよ!といったところか。windowsがベースで進む
Amazon Web Services (AWS)サービスの正式名称・略称・読み方まとめ #22 (顧客イネーブルメントサービス)
Amazon Web Services (AWS)のサービスで正式名称や略称はともかく、読み方がわからずに困ることがよくあるのでまとめてみました。
Amazon Web Services (AWS) – Cloud Computing Services
https://aws.amazon.com/全サービスを並べたチートシートもあるよ!
Amazon Web Services (AWS)サービスの正式名称・略称・読み方チートシート – Qiita
https://qiita.com/kai_kou/items/cb29d261c8acc49fd22aまとめルールについては下記を参考ください。
Amazon Web Services (AWS)サービスの正式名称・略称・読み方まとめ #1 (コンピューティング) – Qiita
https://qiita.com/kai_kou/items/a6795dbab7e707b0d1a6間違いや、こんな呼び方あるよーなどありましたらコメントお願いします!
## Customer Enablement Services
Amazon EKS のチュートリアルで Kubernetes を理解する #05 Container Insights
# はじめに
本記事は、以下の内容の続きになります。
– [Amazon EKS のチュートリアルで Kubernetes を理解する #04 セルフヒーリング](https://qiita.com/takanorig/items/8905cc86340223bc3922)
前回は、k8s自体の特長のひとつである 「セルフヒーリング(自己回復)」 の動作を確認しました。
今回は、運用を想定して、ログやメトリクスの管理について確認します。Amazon EKS の場合、 **CloudWatch Container Insights** を利用して、コンテナのログやメトリクスを、CloudWatchに集約することができます。
**CloudWatch Container Insights** は、Amazon EKS 専用のサービスではなく、Amazon ECS 含め、AWSのコンテナ関連のサービスにおけるコンテナのログやメトリクスを管理するために利用されます。以下に、**CloudWatch Container Insights** の説明が書かれています。
https:/
WordPressで画像認証表示されずログインできなくなった件
昨日突然、WordPressのログインページで、画像認証が表示されずログインできなくなりました。
ネット検索したところ、SiteGuard WP Pluginが原因と分かりました。SSHでSFTP接続して、
/public_html/wp/wp-content/plugins/
まで移動しました。
そして、siteguardをフォルダごと削除しました。
これで、ログインできるようになりました。でも、また問題発生です。
プラグインの更新が、できないのです。『インストールに失敗しました: ダウンロードに失敗しました。 ファイルストリーミングの送り先となるディレクトリが存在しないか、書き込み不可になっています。』
と言うエラーが出ました。色々検索したところ、フォルダのパーミッションを変えると直ると知りました。
それで、下記の記事を参考にしました。
https://php-java.com/archives/622https://agohack.com/aws-bitnam
Amplifyでリソース作成に失敗したときの対処法
amplify pushしようとしたらエラーが出た
[該当issue](https://github.com/aws-amplify/amplify-cli/issues/3149)
“`bash:エラー内容
Following resources failed
Resource Name: UserPoolClientLambda (AWS::Lambda::Function)
Event Type: create
Reason: The runtime parameter of nodejs8.10 is no longer supported for creating or updating AWS Lambda functions. We recommend you use the new runtime (nodejs12.x) while creating or updating functions.
“`バージョンをあげましょう
“`
$ npm install -g @aws-amplify/cli
“`