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

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

AWSでWordPressを始めてハマった話

# はじめに
突然「よーしパパAWSでWordPress頼んじゃうぞー」と思い立つ。

先ずは検索。
https://www.google.com/search?q=aws+wordpress

情報いっぱいあるし、**余裕だな**。

# アカウントを作る
[AWS アカウント作成の流れ](https://aws.amazon.com/jp/register-flow/)
**簡単そうだな**。

[スケーラブルなウェブサイトの構築方法:フェーズ 1
サーバー 1 台構成で WordPress 環境を構築](https://aws.amazon.com/jp/getting-started/projects/scalable-wordpress-website/01/)
スケーラブルにはしないのでサブネットの設定などは必要無いのだが、特に考えずにチュートリアルの通り進める。
見本の画面と実際の画面がところどころ違うが、大した問題ではない。
**簡単すぎる**。
# WordPressでハマる
無事にインスタンスが起動した。[フェーズ 1-5](https://aws.amazon.c

元記事を表示

今日から始めるSAM CLI【API Gateway + Lambda + DynamoDB】

## SAM CLIでAPI Gateway + Lambda + DynamoDBを使う

AWSでのサーバレス構築を考えた時に最も無難でポピュラーな構成(悪く言えばあまり面白みのない)として挙げられる、

– API Gateway
– Lambda
– DynamoDB

の構築を、SAM(Serverless Application Model) で行います。

## 書くこと
1. SAM CLIでプロジェクトの作成
2. SAMプロジェクトのデプロイ
3. SAMプロジェクトを修正してDynamoDBにテーブルを作成
4. SAMプロジェクトの更新

## SAM CLIでプロジェクトの作成

まずSAM CLIをインストールします。

[Installing the AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html)

“`
$ sam –version
SAM CLI,

元記事を表示

【AWS SDK for Ruby】タグが大量にあるリソースの取得処理は非常に時間がかかることがある話

# はじめにまとめ

– AWS SDK for Rubyでタグが大量に付与されているリソースを大量に取得する処理は、タグが無いリソースに比べて大幅に時間がかかることがある(今回はEBSとEBSスナップショットで確認)
– 原因はSDK内で、AWSのAPIレスポンスのXMLをRubyのオブジェクトにパースするときの変換処理

![graph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50690/e4d3a275-c9c5-f39f-4961-234f9df37af3.png)

# 背景
AWS SDK for Rubyである程度数の多いリソースの取得に非常に時間がかかったことがあり、原因を追求するとタグが大量に付与されたリソースの場合にそのような事象が発生する場合があることが分かったので、検証したメモ。

# 前提(検証環境)
– クライアント
– 東京リージョンのLightStail
– Ubuntu 18.04
– Ruby 2.6.3
– AWS SDK fo

元記事を表示

AWS CLIのqueryの使い方(基本)

# はじめに

前回、AWS CLIの–filtersの使い方を勉強したので、その流れで–queryの使い方を調べました。

新卒で入った現場がAIXの運用保守(たまに構築)だったということもあってCLIを使っているということもあるので、今後はCLIを使いこなせるようになろうと思っています。

※前回
https://qiita.com/kkino1985/items/6e92e87e01f40bc06d8b

# 環境情報

OS : Windows10
CLI : aws-cli/1.17.9 Python/3.7.4 Windows/10 botocore/1.14.9

# –filtersと–queryの違い(使い分け)

ざっくり言うと、指定した条件と一致する(またはしない)リソースを表示させるのが–filters、出力結果のうちどの項目を(何という名前で)出力させるかを制御するのが–queryです。

(こちらの記事にもっと良い表現がありました)

https://dev.classmethod.jp/cloud/aws/aws-cli-filter-and

元記事を表示

AuroraServerlessのDataAPIの返値をいい感じに整形する

[以前の記事](https://qiita.com/Kept1994/items/157524e27e7742954f57)でAPI GatewayからAuroraServerlessにDataAPIを介してクエリを投げることは成功したが、戻り値がなんとも扱いにくい。。。

“`json:DataAPIでの戻り値
[
{
“stringValue”: “001”
},
{
“stringValue”: “fuga”
},
{
“longValue”: 123
}
]
“`

そこで、DataAPIの返り値をいい感じに整形するlambdaサンプルコードを書いた。
カラム名は返り値のメタデータから取得する。

“`python:サンプルコード
import json

def lambda_handler(event, context):
key_list = []
value_list = []

columns = event[“columnMetadata”]
records

元記事を表示

プロキシ環境下でどうしても Qiita が見たかった話

# 背景
**私が働く会社では、プロキシに阻まれて Qiita にアクセスすることができません。**

勉強会なんかで話を聞いていると、意外と同じような環境の会社があることを聞きます。
でも、どうしても **「 会社でQiitaが見たい!! 」**

こんな悩みをある日、AWS の勉強会に参加されていた方に相談をしたら、いいアイデアを頂きました。
最近、AWS の勉強もしていたので実装してみました。

# 全体像
作成したサービスの簡単な流れとしては、見たい Qiita のページ情報を抜いてきて、社内からでもアクセスできるところに配置し直す感じです。
ちなみに、社内から AWS にアクセスできない場合は、アウトです。

## 使用したサービス
今回、AWS で使うサービスは主に 3 つです。各サービスの詳細な説明は割愛します。

– [Amazon API Gateway](https://aws.amazon.com/jp/api-gateway/)
– [AWS Lambda](https://aws.amazon.com/jp/lambda/)
– [Amazon S3](ht

元記事を表示

ECSのポートマッピング変更したらコンテナが立ち上がらなくなった話

# はじめに
AWSのECSを使用してアプリをデプロイした時になぜかコンテナが立ち上がらなくなったという問題に引っかかりました。
その時にトラブルシューティングをメモしておきます。
他の方の助けになれば嬉しいです。
初めてでない方はそんなの当たり前じゃんって話かと思います.

# かんたんにECSの概要
ECSはdockerコンテナをEC2またはFARGATEのどちらかで動かすものです。
開発環境でdockerを使っていれば、その開発時に作ったdockerイメージを利用してデプロイできるため、dockerを最大限に利用することができるメリットがあります。その他にもメリットはあると思いますが、とりあえずdockerで開発・運用することができるのが1つあるのかなと思います。
(自分がECSを使ってデプロイするのが、目的だったのでECSを選ぶまでの思考はありませんでした。。。。)
詳細な説明は他の方が書いてくださっている記事が多いのでググればすぐに出てきます!

# インフラ構成図
![ECSイメージ2.png](https://qiita-image-store.s3.ap-northe

元記事を表示

iPadだけでCloud9開発環境を構築してみた話

# 初めに
iPadのOSがiOSからiPad OSに変更されiPadを取り巻く環境が大きく変わりました。特にSafariが強化されPCブラウザと遜色がないレベルになりました。

強化されたSafariがあればCloud IDEであるAWS Cloud9を使っていつでもどこへでも持ち歩ける開発環境が手に入るのではないか、日差しが差し込むカフェのオープンテラスでコーヒー片手にドヤ顔しながら開発ができるのではないかと妄想がパーンと弾けてしまったため、さっそくiPad Proを購入して開発環境を構築してみました。[^1]

## 想定読者
記事としては前提知識を要求する記事となっております。(はしょったとも言う)

– AWSでの開発経験があり、どこへでも持ち歩ける開発環境に興味がある人
– 特にCloud9を利用していて、iPadで動かしてみたい人

Cloud9って何という人は事前にAWS Cloud9について調べてください。

## 検証環境
今回の記事では以下の環境にて動作確認を行なっています。環境が異なれば出来ることや対処法が異なる可能性があります。ご留意ください。

– iPad

元記事を表示

TerraformでELBとEC2とRDSのよくありそうなWebパターンを作ってみる。

よくありそうなこういうアーキテクチャをTerraformで練習がてら作ってみました。
変数もモジュールも考慮せず書いています。
(ALBにDNS名でアクセスするとラウンドロビンアクセスされること、
EC2からRDSに接続できることは確認していますが、セキュリティ上穴があるかもしれません。)

![プレゼンテーション1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257241/cbdcf571-ef8f-e454-bf23-0d3cef9f6953.jpeg)

#ディレクトリ構造
“`
work/
├── alb.tf
├── ec2.tf
├── rds.tf
└── vpc.tf
“`
Terraformの実行環境は以下の通り

“`
$ terraform –version
Terraform v0.12.16
+ provider.aws v2.47.0
“`

#vpc.tf
“`tf
###############################################

元記事を表示

AWS Cloud9 Laravel サーバーの起動手順

“`
$ php artisan serve –host=$IP –port=$PORT
“`

`Preview` -> `Preview Running Application`

## エラーが出た場合

### Address already in use

“`
php artisan serve Error: Address already in use
“`

複数のLaravelサーバが立ち上がってるのでkillする。

“`
$ kill `lsof -ti:$PORT`
“`

元記事を表示

プログラミング初心者のための用語解説集

#はじめに
まずはじめに、本記事の対象者は

**業界未経験でエンジニア転職を目指してプログラミングを勉強している方**
**プログラミング初心者の方**

です。

実務経験豊富な現役エンジニアさんからすると当たり前のお話だと思うので、本記事は見る価値がほとんど無いかな思います。
それでも見ていただける方は、本記事の内容に関してコメントでフィードバックをいただけると幸いです。

#本記事を書いた理由

プログラミングの勉強を始めた時って、まずはHTML、CSSから入ると思います。

HTMLではタグの種類、CSSではプロパティの種類が結構多くて
「うわ〜覚えること多!!僕には無理かも・・・私には無理かも・・・」
と思ってしまい挫折してしまう方もいらっしゃるかと思います。

でも実はタグだったりプロパティって実は**覚える必要ない**んですよね・・・笑
(僕も覚えようとしていましたが・・・)

覚える必要がないというか調べながら使っていくうちに勝手に覚えていくんで。

まあ、その辺りは普段からTwitterで情報収集している方はわかっていると思うのでこの辺りは詳しくは説明しません。

元記事を表示

そろそろaws初めてみよか

# はじめに

ようやく最近社内の担当でもawsとかクラウドとか言い出し始めて
戸惑いを感じつつawsの無料枠でかじってみようかと思ったのが事の始まり

上司「ラムダでごにょごにょ、EC2でごにょごにょ」
わたし「…。」

[aws](https://aws.amazon.com/jp/)にアクセスしてまずはアカウントを登録しました。
コンソールには様々なサービスが載っていて正直何から手を付けて良いやら、途方に暮れること1日(笑)

ようやく試しに触ってみる段階になりましたとさ

# ラムダって何だ?

AWS Lambda
サーバーレスでイベントドリブンなAPIやHTMLを生成できるものらしい。
イベントといってもAPI Gatewayを使えばURLをキックされた際に動的な処理をかませてHTMLを生成するなんてこともできるらしい。
Qiitaの記事でも色々上がってはいる[AWS Lambda と Python で作る動的な HTML ページ](https://qiita.com/kimihiro_n/items/15cce90ec93625c4445a)とか実際に参拝してみたりして(

元記事を表示

【AWS】AWS SDKを利用したNode.jsサンプル – はまったこと、S3クラスのバケット作成など

#はじめに
AWS公式サイトにAWS SDKを利用したNode.jsサンプルについて「はまった点」、「S3クラスのバケット作成関数」についてまとめました

#AWS公式サンプルプログラム
https://aws.amazon.com/jp/developers/getting-started/nodejs/

#前提
– AWSアカウントを取得済みであること
– IAMユーザーを作成済であること
– Gitがインストール済みであること
– Node.jsがインストール済みであること

#手順
– 公式サイトの手順を補足しながら進めていきます。

1.任意のディレクトリを作成します。
2.サンプルプロジェクトのダウンロード

“`console
git clone https://github.com/awslabs/aws-nodejs-sample.git
“`

3.npm install

4.アクセスキーの設定

– credentialsの場所は以下
– ~/.aws/credentials(Windows ユーザーの場合は、C:\Users\USER_NAME

元記事を表示

[AWS]WordPressの構築方法

**2020年2月2日現在の内容です。**

構成イメージ
スクリーンショット 2020-02-02 12.51.33.png

## 用語説明
### プロトコル
コンピュータ同士がネットワークを利用して通信するために決められた約束事

メーカーやOSが異なるコンピュータ同士が通信を行うためには同じ仕様でやりとりする必要がある
      ↓
同じプロトコルを使用する決まりを作ることで、様々なコンピュータ同士が通信できる

例:HTTP,TCP,UDP,IP,SMTP,IPX

### TCP/IP
TCP・IPを中心として、インターネットを構築する上で必要なプロトコル郡の総称
インターネットを運用するために開発された

– アプリケーションプロトコル:HTTP,SMTP,FTP
– トランスポートプロトコル:

元記事を表示

デプロイ作業(AWS)[EC2インスタンス]

##はじめに
忘備録としてこの記事を作成します。この記事の内容はEC2インスタンスを使ったデプロイ作業に
なります。
##1.EC2インスタンス作成

①AWSログイン 左上のサービスをクリック、コンピューティングにあるEC2を選択する。

②AWS画面の左上のNew EC2 Experienceのアイコンをクリックして写真のようにする。
![EC2インスタンス.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519320/57d4229b-f614-7893-0eea-c925a74ace93.png)

また、アンケート用のダイアログが開くのでキャンセルしましょう。

③(水色アイコンの)インスタンスの作成をクリックする。

④ 1. AMI の選択のタブが選択されている事を確認し、写真のAmazon Linuxを選択する。

![Amazon Linux.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/519320/

元記事を表示

AWS CLIでフィルターをかける方法(filtersオプション)

# はじめに

[Elasticacheのチュートリアル](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/services-elasticache-tutorial.html)をやっている時に、コマンドの引数で「デフォルトのセキュリティグループのIDを指定する」という部分があったので、コマンドで楽に拾う方法がないかと思い、CLIを少し調べました。

差し当たり、–queryの方は敷居が高そうだったので–filtersの方を調べました。

# 環境情報

OS : Windows10
CLI : aws-cli/1.17.9 Python/3.7.4 Windows/10 botocore/1.14.9

# 構文

今回は「デフォルトのセキュリティグループのID」が欲しかったので、グループ名が「default」のものを検索しました。

aws ec2 describe-security-groups –filters “Name=group-name,Values=default”

– 書式 : –filter

元記事を表示

いまっぽいEC2へのSSH接続方法

EC2 Instance ConnectとAWS Systems ManagerのSession Managerのトンネリングを使って、安全かつ簡単にEC2へのSSH接続をします。

概要

**EC2 Instance Connect**
任意のSSH公開鍵をアップロードして、対応する秘密鍵でログインできる便利な機能。
しかもアップロードした公開鍵は1分のみ有効で毎回登録が必要なため、鍵の流出なども気にしなくて良いです。
公開鍵の登録はIAMで制御可能なため、つまりSSHのアクセス制御をIAMで行えるということになります。

**AWS Systems ManagerのSession Managerのトンネリング**
SystemsManagerのSessionManagerではSSHのトンネリングをサポートしているので、この機能を使うことでサブネットやセキュリティグループの設定に関わらず
SessionManagerの管理対象となっているインスタンスへトンネルを通じダイレクトにSSHが可能となります。

まとめるとこんな感じ。

|サービス|いいところ|ちょ

元記事を表示

AWS: ECSのCPUユニット(CPU Units)について

# はじめに
自社サービスの実行基盤としてAWS ECS(on EC2)を利用しています。

これまでは4台固定のECSクラスタでトラフィックを捌いていましたが、ピークタイムの負荷状況が怪しくなってきたため、ECSクラスタへAutoScalingを導入する事にしました。

ひとまずはクラスタのCPU負荷をスケールアウトの基準とする事としたのですが、CloudWatchに表示されるCPU使用率(CPUUtilication)が示す値の意味が良く分からない。

[こちらのドキュメント](https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/cloudwatch-metrics.html#cluster_utilization)によれば、クラスタのCPU使用率は下記の計算式で算出されているとの事ですが…。

“`
(Total CPU units used by tasks in cluster) x 100
Cluster CPU util

元記事を表示

AWS単語帳

AWSクラウドプラクティショナー試験の学習用にまとめた単語帳です。

##https
「HyperText Transfer Protocol Secure」の略称で、インターネット上のHTTP (HyperText Transfer Protocol)通信が、SSLによって暗号化

##SSL/TLS
SSL(Secure Sockets Layer)とTLS(Transport Layer Security)は、いずれもインターネット上でデータを暗号化して送受信する仕組み。
ウェブサイトから情報を送信する際に、送信する情報を暗号化する為に利用。

##SSH
「Secure Shell」の略で、ネットワークに接続された機器を遠隔操作し、管理するための手段です。ポイントはSecure(安全)に!で、そのために必要な仕組みが用意

Linux のEC2インスタンスを起動した後、アクセスして操作する際にSSHで接続する

##EBS
Amazon Elastic Block Store (EBS)
EC2の外付けのHDD的サービス
完全な内部サーバー向けのストレージとしてセキュリティを強

元記事を表示

LambdaでS3オブジェクトに独自メタデータの追加・更新を行う

# はじめに

LambdaでS3オブジェクトを制御したかったので、オブジェクトに独自のメタデータ(ユーザ定義メタデータ)を追加・更新して対処した。
本文では、ユーザ定義メタデータについて、実際のソースと実行結果について記す。

# ユーザ定義メタデータとは

Content-Lengthなどのオブジェクトの追加情報を`メタデータ`という。
メタデータには2種類あり、主にAWSシステム上で制御される`システムメタデータ`とユーザが独自で定義できる`ユーザ定義メタデータ`がある。
今回はファイルの上書き回数(メタデータ名を`x-amz-meta-count`とする)をユーザ定義メタデータとして定義する。

# Lambdaソース

下記LambdaをCloudWatchEventsなどをトリガーとして実行する。
指定したバケット、ディレクトリ配下のファイルを取得し、そのファイルのメタデータに`x-amz-meta-count`がなければ追加する。
あれば、メタデータの値を+1する。
最後に追加更新した内容でファイルを上書き(copy_object())する。

“`python

im

元記事を表示

OTHERカテゴリの最新記事