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

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

kubernetesとEKS早わかりまとめ

## 概要
– 自分のkubernetesの理解促進のために、kubernetes(とAWS EKS)に関することをざっとまとめています

## kubernetesとは
– ものすごく雑にいうと、複数コンテナのオーケストレーションを管理するためのシステムであり、リモート環境上で複数コンテナに対してdocker-composeみたいに管理できる代物
– wiki曰く、
– コンテナ化したアプリケーションのデプロイ、スケーリング、および管理を行うための、オープンソースのコンテナオーケストレーションシステム
– Kubernetesの目的は、「ホストのクラスターを横断してアプリケーションコンテナを自動デプロイ、スケーリング、操作するためのプラットフォーム」を提供することとされている
– Docker単体では、複数のDockerコンテナ群(マイクロサービスの集まり)を管理するのが難しいという欠点があるので、個々のDockerコンテナをオーケストレーションするために使われてる
– 元々はGoogleが作ってたけど、今ではCNCF(Cloud Native Computing Found

元記事を表示

AWS DynamoDB(NoSQL)のテーブル定義書について

アトリビュートがアイテムごとに違うので自由度が高い。
その分、テーブル定義書が書きにくいなーと思いました。

サンプルのテーブル定義書をみても、
内容が全然頭に入ってこないし(笑)

自分で考えてみました。

##記入する項目は以下
テーブル名
モード(オンデマンド or ・・・)
ポイントインタイムリカバリの有無
暗号化
アトリビュート(日本語)
アトリビュート
アトリビュートを登録するプログラム一覧

プライマリキーの印(パーティションキー、ソートキー)
グローバルインデックスの印(パーティションキー、ソートキー)
ローカルインデックスの印(パーティションキー、ソートキー)
登録値サンプル
備考
TTLの項目に印
インデックスの射影項目の記載

さ、これでファイル作ってみろって話ですが、一旦ここまでです。

元記事を表示

EC2インスタンスを立ち上げた時に真っ先にやること + nginxのインストール

railsアプリをEC2を使って立てていて、その途中のメモ書きです。
インスタンス立ち上げ後に実行するコマンドを書きなぐりました。

# アップデート
とりあえずアップデート

“`
$ sudo yum -y update
“`

# 作業用ユーザーの作成
railsアプリ用のユーザーを作成します。

“`
$ sudo useradd -m hoge_user
$ sudo passwd hoge_user
“`

# パッケージのインストール
使いそうなやつを適当にインストールします。

“`
$ sudo yum install -y git gcc-c++ glibc-headers openssl openssl-devel readline readline-devel zlib zlib-devel bzip2 tar make wget
“`

# タイムゾーン設定

“`
$ sudo vi /etc/sysconfig/clock
“`

タイムゾーンを”UTC”から”Japan”に変更します。

“`sh:clock
# ZONE=”UTC”

元記事を表示

AWS EC2 にローカルのキーペアを登録する

マネジメントコンソールや CLI でキーペアが作成できますが、初回のみとはいえ秘密鍵を転送するのはあまり気持ちが良くないので、ローカルで作成した SSH 鍵を登録する。

“`shell
KEY_NAME=$(whoami)@$(hostname -s)
aws ec2 import-key-pair –key-name ${KEY_NAME} –public-key-material file://~/.ssh/id_rsa.pub
“`

元記事を表示

Rails アプリで S3 の権限制御を外さずに署名付きURLの署名を省いてファイルアクセスする方法を調べた

## はじめに

Rails アプリを用いて、S3 の権限制御を外さずに署名付きURLを省いてアクセスする方法について調べたので、その方法をまとめておきます。

## 背景

S3 バケット内のファイルに権限制御を入れ、そのファイルに対してアクセスするとき、署名付きURLを用いることがあると思います。こんなURLですね。(クレデンシャルはマスクしています)

`https://example.s3-ap-northeast-1.amazonaws.com/foo/bar/piyo.txt/?X-Amz-Expires=-0000000000&X-Amz-Date=0000000000000000&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AAAAAAAAAAAAAAAAAAAA/00000000/ap-northeast-1/s3/aws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=0000000000000000000000000000000000000000000000

元記事を表示

【EC2】本番環境で反映されない!?本番環境エラー時log確認系コマンド【リリース前】

こんばんみ

おささです

さ、前置きはダラダラ書かず

log確認行きまっしょい!

##EC2関係のエラーで役立つlog確認コマンド

まずはEC2サーバーにログインしてね!

その後

[ec2-user@ip-アドレス〜]$ **cd /var/www/確認したいリポジトリ名/current/log**

[ec2-user@ip-アドレス log]$ **ls**

[ec2-user@ip-アドレス log]$ ls
**production.log unicorn.stderr.log unicorn.stdout.log**
   ↑        ↑         ↑

上記、3つのlogが出てきたら準備OK!
(これらがなければ、本番環境構築時のミスがあるかも?)

あとは、確認したいlogの前に **less** をつけて、これらを確認!

【例】→ [ec2-user@ip-アドレス log]$ **less production.log**

ちなみに***production.log***を見れば、
 ・syntax errorなのか
 ・method

元記事を表示

本番環境でデータベースが更新されない

### 追加したカラムが本番環境で反映されない…

`チーム開発デプロイ担当として苦労したエラーの解決方法になります。`

開発環境でデータベースに新しいカラムを追加しても
本番環境(EC2)へデプロイしても反映されない(泣)

本番環境でデータベースをマイグレートしてみよう!
これで反映されるだろ!

“`:ターミナル
rake db:migrate RAILS_ENV=production
“`
だが、
コマンドを実行しても反映されない…
どうやって追加した状態の新しいデータベースにするんだ..
と一日悩みました。

####ここで必殺技を伝授させ頂きました!

###本番環境にてもう一度データベースを再生成する!
“`:ターミナル
$ RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop

$ rails db:create RAILS_ENV=production

$ rails db:migrate RAILS_ENV=product

元記事を表示

公式チュートリアルに沿ってTerraformでEC2インスタンスを立ててみるメモ

# メモ
– EC2インスタンスを一台作成する
– `参考` 記載のURLの通りに実行したメモ

## インスタンスの構築

“`zsh
# 作業用ディレクトリ作成
% mkdir terraform-test2
% cd terraform-test2

# configuration codeファイル(日本語訳不明)作成
% touch example.tf

# デプロイするサービスプロバイダの種類(AWS)やリソースの情報を記載する(AMI IDは環境によって有効な値に読み替えること)
% vim example.tf
provider “aws” {
profile = “default”
region = “ap-northeast-1”
}

resource “aws_instance” “example” {
ami = “ami-2757f631”
instance_type = “t2.micro”
}

# 初期化コマンド
# AWSとの連携に必要なファイル類をダウンロードするらしい
% terraform i

元記事を表示

WorkSpaces で多要素認証を利用しよう

# tl; dr

– RADIUS を用意しましょう
– google-authenticator-libpam を認証に利用しましょう
– Directory Service のセキュリティグループを確認しよう

## 概要

久しぶりの投稿です。
ご時世的にリモートワークに対応できるようにしておかないとダメになってきましたね。

弊社も「リモートワークをするんだ!(ドンッ!!!!!!」って言い始めたんですよ。
で、「AWS を使っているなら VDI サービスの WorkSpaces を利用しようじゃないか」みたいな話で進めて、利用できるようにしました。

弊社では、WorkSpaces の認証に MFA(Multi-Factor Authentication) を必須にしたい。という要望を受けましたので、用意しました。
その手順を公開しますので、どこかで役立てば幸いです。

## 導入手順
### RADIUS サーバの用意

Azure MFA みたいな SaaS 型の認証サーバが利用できるならそっちが楽ですよ。
弊社は**~~ケチ~~**お金がないので、FreeRADIUS

元記事を表示

appsync aurora 1つのリクエストマッピングテンプレートにかけるクエリは2つまで

appsync でデータソースにAuroraを指定してmutationを実行したら下記のエラーが出ました。

“`
Only up to 2 queries are allowed in a template
“`

リゾルバーのリクエストマッピングでSQLクエリを3つ書いていたので出たようです。。

3つ以上実行するときは、mutationを分けるかパイプラインリゾルバーかLambdaにすればよいのかと思います。

### 追記

ちなみにトランザクションは効かないみたいです。

元記事を表示

【ECS】 【Fargate】TASK実行container内でTask ID を取得するスクリプト

調べてもあまりいい方法がなかったので、ゴリゴリですがとりあえず作ってました。

# TD;DR

* curlとpython -cを使ってやりました。
* [タスクメタデータエンドポイントバージョン 3](https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task-metadata-endpoint-v3.html)を使用
* サポートバージョンは以下の通り
* EC2:1.21.0以降のバージョン
* Fargate : v1.3.0以降のバージョン

* curlで`${ECS_CONTAINER_METADATA_URI}/task`を取得、pythonでparseしてTaskARNから取得

“`bash
#!/bin/bash

METADATA=$(curl ${ECS_CONTAINER_METADATA_URI}/task)
python3 -c “import json; meta=json.loads(‘$METADATA’); task_i

元記事を表示

【AWS】CloudFormationでsts:AssumeRoleのPrincipalに指定するサービス名の一覧(xxx.amazonaws.com)

## 一覧の場所

以下に掲載されています。

– [List of AWS Service Principals – GitHub Gist](https://gist.github.com/shortjared/4c1e3fe52bdfa47522cfe5b41e5d6f22)

CloudFormationのテンプレートファイルを書いているときに便利です。

## AssumeRoleに関する参考ページ

– [IAMロール徹底理解 〜 AssumeRoleの正体 | Developers.IO](https://dev.classmethod.jp/cloud/aws/iam-role-and-assumerole/)

– [[AssumeRole] アクセスキーが流出しても被害が最小限になるIAMユーザでCloudFormationにデプロイする方法 | Developers.IO](https://dev.classmethod.jp/cloud/aws/assume-role-deploy-iam-user-and-role/#assumerole%E3%81%A8%E

元記事を表示

AWS EC2(Elastic Compute Cloud)の概要 

#Amazon EC2とは
• 数分で起動し、1時間または秒単位の従量 課金で利用可能なAWSクラウド上の仮想サーバー
• サーバーの追加・削除、マシンスペック変 更も数分で可能
• 管理者権限(root / Administrator) で利用可能
• インスタンスという単位でサーバーが管理し、ボタンクリックや、CLIでインスタンスを作成可能
• EC2インスタンスはVPC内で起動するAZサービス
• OSまでは提供されているタイプを選択することで自動設定され、OSより上のレイヤーを自由に利用可能

##EC2インスタンス作成手順
1.利用するAMIイメージ(OSセッティング)を選択
2.インスタンスタイプを選択
3.ストレージを選択
4.セキュリティグループを選択
5.SSHキーペアを設定

#1. AMI (Amazon Machine Image) とは
インスタンス起動に必要なOSイメージ
スクリーンショット 2020-03-13 10.07.45.pngsagemakerを活用したモデル開発フロー

SageMakerを活用したモデル開発フロー

https://qiita.com/noko_qii/items/41130f66afbb8e451f23

元記事を表示

CloudFrontとElasticBeanstalkを使った際のHTTPS化

CloudFrontとElasticBeanstalkを併用する構成の場合にどうやって通信をHTTPS化するを解説します。

# ざっくり概要
– CloudFrontだけじゃなく、ElasticBeanstalkの方にもドメイン名を指定しておくと便利です。
– ユーザーとCloudFront間の通信だけではなく、CloudFrontのオリジンとなるとElasticBeanstalk間の通信もHTTPS化します。
– ElasticBeanstalkはCloudFrontを経由しないアクセスを制限するために別途設定を追加します。

![Untitled Diagram.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47882/51d4d2cd-7058-e7b0-c6ce-f6977668f050.jpeg)

# ドメイン設定
CloudFrontの方をexample.com、ElasticBeanstalkの方をserver.example.comと設定することにします。

# CloudFron

元記事を表示

UMLを少しでも かわいく したかったのでAWSで解決した

#注:UML初心者に向けた記事です

AWS提供の画像を利用しますがAWSのサービスは使用しません。

## 環境設定とねらい
Visual Studio Code だけでUMLを練習する環境を作ります。Mac, Windows, Linuxで動きます。


## 用意するもの
– Visual Studio Code
– [PlantUML 拡張](https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml)
– Java(ふつうは[入ってます](https://java.com/ja/))
– GraphViz([msiインストーラあり](https://graphviz.gitlab.io/_pages/Download/Download_windows.html))

上記の手順についてわからない人は[Visual Studio Code で UML を描こう!](https://qiita.com/couzie/items/9dedb834c5aff09ea7b2)が完璧

元記事を表示

【ASW】AWS APIの認証・認可の仕組みを理解する【Signature V4】

# はじめに
Amplifyを利用してアプリケーションを作る場合、Cognito User Pool/Cognito Identity Pool(Cognito Federated Identities)を利用してAPI GatewayでAuthorizationする方法が暗黙裡にデフォルトになっているように見えます。
よく使われるであろうと思われる割には、その仕組みについての説明があまり見当たらなかったので解説記事を書こうとしましたが、前提となる事項があまりにも多いことが分かったので、個別の記事として分離しました。

本稿では、AccessKeyIdやSecretAccessKeyの使われ方、AWS APIにおけるSignature V4の仕組みなどについて解説します。
API GatewayのAuthorization方式として「AWS_IAM」という項目を選択できますが、本稿の内容を理解することがまず必要となります。この上で、別稿にて、Authorization方式「AWS_IAM」を開設します。

# TL;DR
– AWSが提供する機能の殆ど、最終的にRESTFul APIと

元記事を表示

[aws,rails]ancestryをawsにデプロイした時に反映されない状況の解決方法

#1.どんな状態だったか
ancestryを利用して、railsのプロジェクト内にあらかじめデータは作成してあり、ローカルでは動くのに本番環境で反映されないという状態でした

#2.原因
ancestryはdb/seeds.rbにデータを保存するのですが、このseedファイルを利用するには、データベースの作成コマンドの他にseedを読み込むコマンドを打つ必要があるのですが、それを忘れてしまっていました。

#3.解決方法
`RAILS_ENV=production bundle exec rails db:seed`というコマンドを打っていただければ反映できます。
※コマンドの説明
・本番環境なので`RAILS_ENV=production`が必要です
・読み込みを早くするためにrailsの実行コマンドの中からdb関係のコマンドがあえて除かれていることがあるので、`bundle exec`をつけています。(はじめに無しで実行してダメだったらつけていただいても良いと思います)

#4.記事の目的
チーム開発をする時に、筆者のようにデプロイを担当する人間が知らない技術が取り込まれることはよ

元記事を表示

AWS Cognitoのユーザー属性をAWS CLIから変更する

## 背景

AWS Cognitoユーザープール管理下のユーザの標準属性・カスタム属性値をAdmin権限的に変更するときに少し手間取ったので自分用メモとして…。
2020/03/12現在、コンソールからこの機能は利用できないので、AWS CLIで操作した場合の方法です。この操作が行えるIAM権限が必要となりますのでご注意ください。

## 環境

– AWS CLI: `aws-cli/1.15.11 Python/2.7.16 Darwin/19.2.0 botocore/1.12.33`
– AWS CLI Command Referenceバージョン: 1.18.19

## 解説

今回利用するコマンドの公式ドキュメントです。

[admin-update-user-attributes — AWS CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-user-attributes.html)

以下に、属性の値によって考慮すべ

元記事を表示

言語別AWS SDKのパフォーマンスの一検証

# 背景
## タグについて
AWSはリソースに[タグ](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/Using_Tags.html)の付与が可能です。AWSにおけるタグはリソースの管理や[コスト配分](http://blog.serverworks.co.jp/tech/2019/07/29/cost-alloc-tags-basic/)の用途で用いられ、タグの付与設計はAWSの運用において非常に重要なポイントとなります。
特に大規模な環境や組織になるとリソースに付与するタグは非常に多くなる傾向があります。

## AWS SDK for Rubyのパフォーマンス
[こちらの記事](https://qiita.com/kure/items/19b1c17a56d81e2bb955)でも言及したようにAWS SDK for Ruby では、リソースにタグが大量に付与されている場合、一度に大量のリソースを取得に大幅に時間がかかることがあります。
以下はEBSを例に、タグ付与のあり・なしとで、リソースの取得(descr

元記事を表示

OTHERカテゴリの最新記事