- 1. CodeCommitでプルリクエスト作成したら変更点が多すぎてマージできなくなった
- 2. 知らなんだ。gp2のボリュームサイズとベースラインパフォーマンスについて
- 3. 【DynamoDB】条件付き書き込み(ConditionExpression)を使ってupdateItemで新規項目を追加しないようにする
- 4. AWS Cloud9の環境構築 Rubyを最新の安定版にアップデートする
- 5. AWSへのRailsアプリのデプロイ その2
- 6. RedshiftのJDBCの依存関係をSBTで追加する
- 7. 【AWS SAP】WorkSpacesとAppStream 2.0の違い【頻出】
- 8. 【AWS】LambdaとSNSでスマホにSMSを送る
- 9. AWSのロードバランサーにLambdaを使ってWEBサーバーを自動追加
- 10. 【AWS SAP】Amazon Kinesis StreamsとAmazon Kinesis Firehoseの違い【頻出】
- 11. AWS Lambda関数の通信先を制御してみる。
- 12. LambdaからEC2を起動しようとしてハマった話
- 13. 【AWS SAP】AWS KMS と CloudHSMの違い【頻出】
- 14. Lambda@Edgeで追加したいhttpヘッダをapacheの設定から持ってくる
- 15. 高校生がCloud9の良さを伝えたい。
- 16. AWSリソースのパスワード等を、AWS上で管理する
- 17. AWS -bash: rbenv: コマンドが見つかりませんと表示された時の対処法
- 18. AWS EC2で環境構築メモ(初期設定編)
- 19. AWS Cloud9でRVMのアップデートをする
- 20. 【AWS】API GatewayのCustomAuthorizerを設定する
CodeCommitでプルリクエスト作成したら変更点が多すぎてマージできなくなった
タイトルにもある通り、CodeCommitのコンソール上でプルリクエストを作成し、マージができない状態に陥ったのでメモ。
今回は開発ブランチ(develop)をmasterブランチにマージしようとしたときに、コンソール上に下記のエラーが発生してマージすることができませんでした。
“`
Tips Divergence Exceeded Exception The merge cannot be completed because the divergence between the branches is too great. If you want to merge these branches, use a Git client.
“`上記のエラーをそのまま簡単に訳すと「差分が多すぎるからマージできないよ。マージするならGitクライアント使ってね」といった感じでしょうか。
え、差分多いと(コミット数なのかな・・?)コンソール上でマージできないとかあるんですか・・・。
## 原因
この記事を見に来ていただいた方、すみません。
いろいろ調べては見てみたものの、具体的にこ
知らなんだ。gp2のボリュームサイズとベースラインパフォーマンスについて
# 概要
gp2の割り当てたボリュームサイズを増やすことで、IOPSの増やすことができると最近、社内のインフラエンジニア教えてもらった。
それまでは、io1に変更することでしかIOPSを増やすことができないと思っていて、EBSの割当をいつも使用するストレージ量でのみ考えていたので、調べたりして勉強になったのでまとめることにした。# IOPSってなんだ
「Input/Output Per Second」の略。
ストレージがもつ1秒間にI/O数を指標化したもの。
ふむ。数字が大きいほうがより高性能であることがわかる。
ストレージをゴリゴリするような読み書きの多いアプリケーションの場合、パフォーマンスに影響するので、気にするべき指標の1つ。# gp2のベースラインパフォーマンスについて
ボリュームサイズにより、表のように割当ボリュームサイズでベースラインが異なる。
あと継続してバーストできる時間とバーストに必要なIOクレジットの回復までの時間も異なるので注意が必要。| ボリュームサイズ (GiB) | ベースラインパフォーマンス (IOPS) | バーストできる (秒数)
【DynamoDB】条件付き書き込み(ConditionExpression)を使ってupdateItemで新規項目を追加しないようにする
DynamoDBのupdate処理で、テーブルに存在しない項目を指定すると、新規項目としてテーブルに追加されてしまいます([UpdateItem](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/WorkingWithItems.html#WorkingWithItems.WritingData.UpdateItem))。
条件付き書き込み(ConditionExpression)を使用し、updateで存在しない項目を指定した時に、テーブルに追加されずに何も変化しない状態になるよう実装します。# 環境
– macOS
– AWS Cloud9
– Node.js 12# AWS.DynamoDB.DocumentClient
JavascriptでDynamoDBを操作するとき、**AWS.DynamoDB**を使う方法と**AWS.DynamoDB.DocumentClient**を使う方法の2パターンがあるのですが、**AWS.DynamoDB.DocumentClient**
AWS Cloud9の環境構築 Rubyを最新の安定版にアップデートする
Cloud9の環境でプリインストールされている「RVM」を使っています。
## 現在のRubyの最新の安定版のバージョンを確認する
公式サイトで確認できます。
[Rubyのダウンロードページ](https://www.ruby-lang.org/ja/downloads/)
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538652/d77d0f11-fbb3-3209-585d-ee98a9c6476d.png)
2020/6/3時点で最新の安定版は2.7.1でした。## Cloud9の環境でインストールされているRubyのバージョンを確認する
listコマンドでインストールされている(切り替えることができる)Rubyのバージョンの一覧を表示します。
`rvm list`
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538652/38bdf273-3c07-0266-780f-b30bcb61298b.png)
デ
AWSへのRailsアプリのデプロイ その2
## はじめに
今回は以下の記事の続きです。アプリのデプロイまで行っていきます。
AWSへのRailsアプリのデプロイ その1
## データベースのインストール
以下のコマンドでバージョン5.6をインストールします。
バージョンについては、各々の環境ごとに適当なものを選択してください。“`
sudo yum -y install mysql56-server mysql56-devel mysql56
“`
さっそくmysqlを立ち上げます。“`
sudo service mysqld start
“`
mysqlのrootユーザーのパスワードを設定します。“`
sudo /usr/libexec/mysql56/mysqladmin -u root password ‘ここにパスワードを入力’
“`
パスワードが設定できたか確認します。“`
mysql -u root -p
“`
パスワードの入力を促されるため、先ほど設定
RedshiftのJDBCの依存関係をSBTで追加する
RedshiftにJDBCで接続したい場合、JDBCのライブラリはMavenCentralにUpされていないため、シンプルに依存関係を書くだけでは追加が出来ないため、その設定方法を説明します。
### 1. 最新バージョンの検索
[Redshift Jdbc42](https://mvnrepository.com/artifact/com.amazon.redshift/redshift-jdbc42)
から最新(or 安定バージョン)を探す### 2. LibraryDependenciesに追加
“`scala:build.sbt
libraryDependencies += “com.amazon.redshift” % “redshift-jdbc42” % “1.2.41.1065”
“`
ここまでは普通に設定します。### 3. Resolverの追加
MavenCentralにアップされていないため、このjarがデプロイされているMaven RepositoryをResolverに追加する必要があります。
RepositoryのURLは下のスクショ
【AWS SAP】WorkSpacesとAppStream 2.0の違い【頻出】
##AWS SAP取得に向けて勉強する中で覚えてよかったもの 第3弾
以下の違いについて覚えておいて損はありません。・WorkSpaces
・AppStream 2.0##WorkSpacesとは
デスクトップを提供するサービス。(公式サイトより引用)
> Amazon WorkSpaces は、マネージド型でセキュアなサービスとしてのデスクトップ (DaaS) ソリューションです。Amazon WorkSpaces を使うと、Windows または Linux のデスクトップが数分でセットアップでき、すばやくスケールすることで世界中のたくさんの従業員にデスクトップを提供できます。自分が起動した WorkSpaces に対してのみ、月単位または時間単位のいずれかで支払うことができるため、従来のデスクトップやオンプレミスの VDI ソリューションに比べて、費用を削減できます。Amazon WorkSpaces では、ハードウェアのインベントリ、OS バージョンとパッチ、仮想デスクトップインフラストラクチャ (VDI) の複雑な管理作業をなくして、デスクトップ提供戦略を簡素化し
【AWS】LambdaとSNSでスマホにSMSを送る
## 概要
– 電話番号でメッセージを送るSMSを使いたいなと思って調べてみたらAmazonSNSで実現できると分かったので試してみました
– API Gateway – Lambda – SNS を連携させてAPI化させてみました
– 当然ですが指定した電話番号に本当にSMSを送れてしまうので、**悪用しない/されないようにご注意ください**
– ちなみに日本の場合は一通辺り$0.07451のようです
– https://aws.amazon.com/jp/sns/sms-pricing/## 構成
– 今回作る構成です
## 雛形生成
– 今回はServerlessFrameworkを使います
– Lambdaのコードだけ見
AWSのロードバランサーにLambdaを使ってWEBサーバーを自動追加
#目的:アクセス集中時のみWEBサーバーを追加・負荷分散しコストダウン
AWSのロードバランサー(ELB)を使っているサイトも多いかと思われます。ELBにはオートスケール機能があり、負荷率の上昇などをトリガーとしてスケールアウト(WEBサーバーの追加)を設定することができます。しかし、Auto Scalingを利用して負荷が上がってからWEBサーバーを立ち上げて追加したのでは時間がかかり、手遅れになる可能性が高いです。障害が出る前にサーバーを増設したいと思うでしょう。
私の会社が開発しているソーシャルゲームでも、イベント開催時や広告プロモーション時には、普段の十数倍のアクセスになります。こういう負荷上昇が見込まれる場合は、あらかじめEC2インスタンスを立ち上げてELBに追加しておくことが有効でしょう。
Lambdaのスケジュール機能を使い、アクセスの見込まれる必要な時刻にEC2インスタンス(WEBサーバー)をELBに自動的に追加し、ある程度の時間が過ぎたらELBから切り離す。これだけでは負荷分散はできてもコスト削減はできません。コスト削減のためには、EC2インスタンスを
【AWS SAP】Amazon Kinesis StreamsとAmazon Kinesis Firehoseの違い【頻出】
##AWS SAP取得に向けて勉強する中で覚えてよかったもの 第2弾
以下用語の違いについては押さえておいて損はありません。・Amazon Kinesis Data Streams (KDS)
・Amazon Kinesis Data Firehose##Amazon Kinesis Data Streamsとは
(公式サイトより引用)
>Amazon Kinesis Data Streams (KDS) は、大規模にスケーラブルで持続的なリアルタイムのデータストリーミングサービスです。KDS はウエブサイトクリックストリームやデータべースイベントストリームや金融取引、ソーシャルメディアフィード、ITロゴ、ロケーション追跡イベントなど何十万ものソースから毎秒ギガバイトのデータを継続してキャプチャできます。収集データはミリ秒で入手でき、リアルタイム分析をリアルタイムダッシュボードやリアルタイム異常検知、ダイナミックな価格設定などの事例に利用可能です。#Amazon Kinesis Data Firehoseとは
(公式サイトにより引用)
>Amazon Kinesis Dat
AWS Lambda関数の通信先を制御してみる。
(記事を書いた2019/12/21に公開するのを忘れ半年遅れで公開となりました)
### はじめに
皆さんは AWS Lambda でどのような処理を実装されていますか? AWS サービスの API (例えば、 Systems Manager の Parameter Store の API や Amazon EC2 の API )、外部のサービスにアクセスさせたりしていますか?
企業向けシステムを構築する際には、「通信先」について情報漏洩リスクにもつながるため、関心事として高いです。
当記事では、AWS Lambda 関数を利用してアプリケーションを実装する際、どのように通信先を制御を**「強制するか」**紹介していきたいと思います。### サマリ
– デフォルトの Lambda 関数構成(VPC内リソースにアクセスしない)の場合、Lambda 関数に Security Group も NACL も設定できず、Lambda 関数からの通信を Lambda 関数の外で制御することができない。
– VPC 内リソースにアクセス可能なLambda関数として構成することで、 VPC
LambdaからEC2を起動しようとしてハマった話
AWS公式ページにこちらの手順に従って、LambdaからEC2を停止&起動させようとしたところ、停止はできるが起動はなぜかうまくいかない。。。
[Lambda を使用して、Amazon EC2 インスタンスを一定の間隔で停止および起動するにはどうすればよいですか?](https://aws.amazon.com/jp/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/)
色々試したり、サポートに問い合わせしたりした結果、原因が判明。
KMS関連の権限が不足していたためでした。
起動しようとしていたEC2にアタッチされているEBSがKMSで暗号化されていたため、kms:CreateGrant 権限が必要だったようです。。。
【AWS SAP】AWS KMS と CloudHSMの違い【頻出】
##AWS SAP取得に向けて勉強する中で覚えてよかったもの
以下用語の違いについては押さえておいて損はありません。・AWS KMS
・CloudHSM##AWS KMSとは
AWS Key Management Serviceの略称。
(公式サイトにより引用)
>AWS Key Management Service (KMS) を使用することで、暗号化キーを簡単に作成して管理し、幅広い AWS のサービスやアプリケーションでの使用を制御できるようになります。AWS KMS はセキュアで弾力性の高いサービスで、キーを保護するために FIPS 140-2 の検証済みまたは検証段階のハードウェアセキュリティモジュールを使用します。AWS KMS は AWS CloudTrail と統合されており、すべてのキーの使用ログを表示できるため、規制およびコンプライアンスの要求に応えるために役立ちます。##CloudHSMとは
AWS Cloud でのマネージド型ハードウェアセキュリティモジュール (HSM) のことを指します。
(公式サイトより引用)
>AWS CloudHSM は
Lambda@Edgeで追加したいhttpヘッダをapacheの設定から持ってくる
# httpd.conf → Lambda@Edge
私のサイト [devel.keys.jp](https://devel.keys.jp) は、昼間は EC2 上の Apache httpd で動かしているんですが、夜中は S3 + CloudFront でホストするようにしています1[^free-tier]。
[^free-tier]: 無料枠が月750時間までだと24時間動かしていると他のインスタンスを立てにくいので、1〜7時までインスタンスを落として無料枠をセーブしているのです
というときに、S3 でも httpd と同じヘッダを加えたいなーと思って作りました。
EC2 の httpd の設定は次のようなものです:
“`apache:httpd.conf
Header set X-XSS-Protection “1; mode=block”
Header set X-Content-Type-Options nosniff
Header append X-Frame-Options SAMEORIGIN
Header set Str
高校生がCloud9の良さを伝えたい。
プログラミングをする上で大事なのはエディタですよね。
エディタは、VScodeやAtom,Sublime Textなど色々あって何を使えばいいかわからない人など多いと思います。
今回は僕のおすすめのAWS Cloud9の良さを紹介します!!# AWS Cloud9とは
[AWS Cloud9](https://aws.amazon.com/jp/cloud9/)はもともと c9.io で運営されていたサービスをAWSが買収したもので、ウェブブラウザ上で開発ができるクラウドIDE(統合開発環境)です。
言語も多くの言語に対応していて、– C++
– C#
– Go
– HTML
– Java
– JavaScript
– Node.js
– Ruby
– PHP
– Pythonなど様々な言語に対応しており、ここに記載していない言語もあります。([対応言語リスト](https://docs.aws.amazon.com/ja_jp/cloud9/latest/user-guide/language-support.html))
またエディタ部分は[Ace](https://
AWSリソースのパスワード等を、AWS上で管理する
# 何をしたいか
AWSで使用するDBパスワードなどの情報を、外部のパスワード管理ツールや、ましてやコード上で管理せずに、AWSサービスで管理するお話です。
今回はEC2サーバー内から利用するケースで考えます# EC2で必要とするパスワード、パラメータ
こんなものがあるかと思う
RDS, Aurora
・マスターパスワード
・ユーザーログイン情報
・エンドポイントなどの接続情報EC2等
・OS内での保存しておきたいconfファイル
・接続情報# ユースケース
EC2から、RDSへMySQLログインする
ミドルウェア等の設定値を保存しておきたい
etc# どこで管理するのか
AWS Systems Managerのパラメータストアを使う# 必要なプロセス
__踏み台サーバーからRDSへアクセスするケースで考える__![200531_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406764/fc410fed-7b0c-29db-0735-2719dfc3b947.png)
AWS -bash: rbenv: コマンドが見つかりませんと表示された時の対処法
# rbenvのインストール
EC2にrootユーザでログインしている状態で、rbenvをインストールするために、以下を行いました。
1. 以下のコマンドをターミナルにて実行
“`
git clone https://github.com/rbenv/rbenv.git /usr/local/rbenv
“`2. `vi /etc/profile.d/rbenv.sh`にて開いたファイルに、以下を記述
“`
export RBENV_ROOT=/usr/local/rbenv
export PATH=”$RBENV_ROOT/bin:$PATH”
eval “$(rbenv init -)”
“`3. :wqにて保存
4. `source /etc/profile.d/rbenv.sh`コマンドの実行 ←ここの時点で`-bash: rbenv: コマンドが見つかりません`と表示されてしまいます。解決策:
`cd/usr/local`のコマンドで、usr/localへ移動する。
lsコマンドでファイルの情報を確認。“`
bin etc games
AWS EC2で環境構築メモ(初期設定編)
# 特に変わったことはないですが、個人的な健忘録として。
# 操作環境
Windows10 19H1
Terminal (Preview)@PowerShell Core# AWSの無料アカウントを作成する
特に苦労することなく作れると思います# EC2インスタンスを作成
無料枠で作成した
東京リージョン
t2.micro
Amazon Linux 2 AMI
30GB ディスク# キーペアを作成
(適当な名前).pemをダウンロード
C:\Users\ユーザー名\Documents
に置く。# SSH接続
Terminal (Preview)を起動
ssh -i “(適当な名前).pem” ec2-user@パブリック DNS (IPv4)
(インスタンスの作成の右にある接続ボタンから参照可能)
でログイン# 初期設定
“`
#パッケージ更新
$ sudo yum update
#タイムゾーン変更(UTCからJST)
$ timedatectl status
$ sudo timedatectl set-timezone Asia/Tokyo
#日本語ロ
AWS Cloud9でRVMのアップデートをする
Cloud9の環境でプリインストールされている「RVM」ですが、Rubyの最新の安定版をインストールする際にRVMをアップデートしないといけなかったのでメモします。
## RVMとは
**RVM**は**R**uby **V**ersion **M**anagerの略です。
Rubyのバージョンを管理するのに使います。
例えばインストール、アンインストール、バージョンの切り替えなどを実行できます。公式サイト
[RVM: Ruby Version Manager – RVM Ruby Version Manager – Documentation](https://rvm.io)## RVMのサイトからキーをインストールしておく
セキュリティを確保するため、RVMでは署名をチェックしています。キーをインストールしていない場合はしておきます。[RVM: Ruby Version Manager -](https://rvm.io/rvm/security)
からコマンドをコピーします。トリプルクリックすると便利です。
![](https://qiita-image
【AWS】API GatewayのCustomAuthorizerを設定する
## 概要
– LambdaなどをAPI Gateway経由で公開することはよくあると思います
– ですが公開したエンドポイントが誰でも叩けると困るケースもあります
– そんな時にAPI GatewayのCustom Authorizerを使うと簡単に認証機能を付与できます
– 今回はServerlessFrameworkを使った手順を紹介します## 手順
### 雛形生成
– ServerlessFrameworkで雛形を作るところからいきます
“`zsh
mkdir custom-auth-sample
cd custom-auth-sample
sls create -t aws-nodejs-typescript
npm i
“`– 一式作成できました
“`
tree -I node_modules
.
├── handler.ts
├── package-lock.json
├── package.json
├── serverless.yml
├── tsconfig.json
├── vscode
│ └── launch.json
└── w