人のやっていることを自動化する前提条件

わざわざ人手をかけて、手間・時間をかけるようにしているものや人間が不正を行えるようになっているものが多々あるように感じます。 自動化すれば、3秒なのに1週間程度かかるもの 仲介等間に入って手間を増やしているのにこちらがお金を支払わないといけな…

AmazonLexの基礎

The following topics provide additional information. We recommend that you review them in order and then explore the Getting Started with Amazon Lex exercises. とのことで、ざっと見てみる 前提知識 AmazonLexの概要(コアコンセプト·用語)を把握…

AmazonLexの概要(コアコンセプト·用語)を把握してみる

bot A bot performs automated tasks Amazon Lex bots can understand user input provided with text or speech and converse in natural language. ※テキストでも、音声でも自動化したタスクをしてくれるもの Intent An intent represents an action that …

AWS CloudFormation StackSets使ってみる

AWS CloudFormation StackSetsとは AWS CloudFormation StackSets は、複数のアカウントおよびリージョンのスタックを 1 度のオペレーションで、作成、更新、削除できるようにすることで、スタックの機能を拡張します。 使用するケース 1つのAWSアカウントに…

textlintで日本語のチェックを自動化してみる

インストール npm i -g textlint textlint-rule-preset-japanese textlint-rule-preset-jtf-style 設定 ~/.textlintrc { "rules" : { "preset-japanese": true, "preset-jtf-style": true } } チェック textlint XXXX.txt 以下のようになりました。 3:18 err…

頭を良くするには

最近はてなでランキング1位になっていたブログを見てみます。 blog.hatenablog.com 脳を鍛えるには運動しかないとハーバードの教授が言っているようです。 https://www.amazon.co.jp/%E8%84%B3%E3%82%92%E9%8D%9B%E3%81%88%E3%82%8B%E3%81%AB%E3%81%AF%E9%81…

AWS Serverless Application Model (AWS SAM)使ってみる: 変換後のリソースのyamlを見てみる

AWS SAMとはAWSが提供しているサーバーレスフレームワークです。 APIGateway, Lambda, DynamoDBをすべてCloudFormationで作成するのは難易度が高いため、 簡素化したyamlをAWS側でCloudFormation標準のものに変換して各リソースを作成してくれます。 なお、…

DRYにするか分けるかについて

DRYにするかどうかはよく誤って判断されることが多いと思います。 スタートアップ時には先のことを想定していないケースが多く、サービスの規模が拡大してから問題が発生することが多いかと思います。 そこで、どういうものはDRYにすべきで、どういう場合に…

The parameter Origin DomainName does not refer to a valid S3 bucket.

CloudFormationでサーバーレスアプリケーションを作る際にCloudFrontからWebsiteの設定をしたS3にトラフィックを流すと思います。 その際にタイトルのエラーが発生することがあります。 以下のような設定の場合です Origins: - DomainName: !Sub - ${Domain}…

WEBにおいて明確しておいた方がよい方針・指針

WEBにおいては方針や指針をちゃんと決めておけば、負の遺産の発生を防ぐことができます。 方針・指針が特に明確に決まっていない、または曖昧なまま事業を開始するといずれ負の遺産が膨大になったり、スピードが出ない開発になったり、開発プロセスが増えて…

DynamoDBのベスト・プラクティス

事前に必要な知識 リレーショナルではない アプリケーション側でデータの整合性を担保する キャパシティーユニット 4KBを1秒あたり1回の強力な整合性のある読み込み or 4KBを1秒あたり2回の結果整合性のある読み込み 制限 http://docs.aws.amazon.com/ja_jp/…

RDS(RDBMS)とDynamoDB(NoSQL)の使い分けについて

日本ではRDBMSが多用されている件についてですが、よくあるアンチパターンが以下です。 DynamoDB(NoSQL)が最適の場合にRDS(RDBMS)を使っている 何も考えずにRDS(RDBMS)を使用 ※モバイル, ウェブ, ゲーム, アドテク, IoTでもRDSを使用 ↓ サービスがスケール ↓…

Ruby2.3.3での省メモリ化をやってみる

rubyはよく、メモリリークが発生するとか、メモリを爆食いするとか言われています。 明示的にnilを入れて、メモリを開放したり、GC.startしたりして対応する人が多いようです。 そこで、実際どうなのかruby2.3.3で確認してみます。 個人的にはrubyは書きやす…

rbenvの使い方をまとめてみる

rbenvの使い方で以下をすべてまとめたサイトがないのでまとめてみる。 初回にすべきこと バージョン切替時 rbenv install -lで最新のバージョン(2.3.3)が表示されるようにする rbenv 初回 brew install rbenv rbenv init echo 'eval "$(rbenv init -)"' >> ~…

dockerでローカルにAmazonLinuxの環境構築してみる

手順 Authenticate your Docker client to the Amazon Linux container image Amazon ECR registry. aws ecr get-login --region ap-northeast-1 --registry-ids 137112412989 Authenticate your Docker CLI to the registry docker login -u AWS -p passwor…

CloudFormationで複数アプリケーションでExport名を一意にする

For each AWS account, Export names must be unique within a region. ということなので、Export名は動的にしないと2つ目のアプリケーションで同じテンプレートを使う場合にエラーになってしまいます。 そこで、Export名を動的にする方法をご紹介致します。…

CloudFormationでAPIGatewayのCORSを有効にするには

サーバーレスアーキテクチャの実現にはEC2やECSを使用せずに、S3上のJSからApiGatewayにアクセスできるないといけません。 するとおのずと、ApiGatewayに作成したAPIにCORSを有効にする必要があります。 AWSを使うなら、ちゃんとCloudFormationを使ってイン…

Rails5のAPIモードを試してみる

準備 $ ruby -v ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin13] $ rails -v Rails 5.0.0.1 new && bundle install rails new hoge --api -T -B -d mysql bundle install --path=vendor/bundle middleware $ rails middleware use Rack::Send…

Golangの基礎

参考 ドキュメント - The Go Programming Language Golangの基礎としてはまず,tour of goを一通り見て理解します。 A Tour of Go tour of go Packages goのプログラムの開始 mainパッケージからスタート パッケージ名 importの最後のパス ※これによって関数…

DynamoDBからデータを取得してみる(query)

テーブル定義 Views: Type: AWS::DynamoDB::Table Properties: TableName: VIEWS KeySchema: - AttributeName: ID KeyType: HASH GlobalSecondaryIndexes: - IndexName: GSI_URL KeySchema: - AttributeName: URL KeyType: HASH Projection: NonKeyAttribute…

DynamoDBの基礎

TableName 名前を指定しない場合、AWS CloudFormation は一意の物理 ID を生成し、その ID をテーブル名として使用します。 KeySchema primary key for the table ※文字列、数値、またはバイナリ ※テーブル作成時に必要な唯一のもの ※変更する際にはテーブル…

AWS Lambdaのベスト・プラクティス

Lambdaを使用する際にはベストプラクティスが何点かあるようですが、特に重要な点をピックアップします。 Instantiate AWS clients and database clients outside the scope of the handler to take advantage of connection re-use. var AWS = require('aws…

AWS CloudFormationでyaml, !GetAtt, Export, !ImportValue, !Subが使えるようになったので使ってみる

AWS CloudFormation Update – YAML, Cross-Stack References, Simplified Substitution | AWS Blog yaml jsonを以下を使ってyamlにするだけ Convert JSON to YAML !GetAttや!Ref !を使うことでAWSの擬似関数であることが明示的になります。 ※!はyamlのタグ用…

CloudFormationでAWS::Route53::RecordSetGroupでS3のバケットにAliasレコードを設定してみる

HostedZoneName Zone Apex (Naked Domain)を指定します。 RecordSets Name ユーザーがブラウザでアクセスするドメインを指定します。 AliasTarget S3の場合は以下になります。 ※前提: S3のバケット名とユーザーがアクセスするドメインと一致している必要があ…

Golangの&や*

The Go Programming Language Specification - The Go Programming Language 変数の宣言 var hoge = "hoge" & ポインター log.Println(&hoge) ↓ 0xc82000ade0 * ポインターの値 log.Println(*&hoge) ↓ hoge log.Println(*hoge) ↓ invalid indirect of hoge (…

Golangの変数の使い分け

The Go Programming Language Specification - The Go Programming Language var 変数の宣言用 := 関数の返り値格納用 すべて:=に統一でも良いかもしれません。

Golangのflag

Golangでコマンドラインツールやバッチを作る際によく使うのでメモ flag - The Go Programming Language flagの渡し方 go run main.go -user google -app golang flagの設定 var ( user = flag.String("user", "google", "user name") app = flag.String("ap…

ACM(AWSCertificateManager)の発行承認メール(domain validation email)がドメイン登録時のアドレスに来ない場合

Route53のRegistered DomainsのPrivacy Protectionを以下のように変更する。 Hide contact information if the TLD registry, and the registrar, allow it ↓ Don't hide contact information 本来は@ドメイン名でメールを受け取れるようにすべきようです。 …

AutoScaling(オートスケーリング)時のデプロイのベストプラクティス(CodeDeploy)

AutoScaling(オートスケーリング)時にはLaunchConfigのAMIを元に新しいインスタンスが作成されます。 しかし、GitHub等のリビジョンが進んでいると新しいインスタンスのみ古いリビジョンのソースになってしまいます。 そのため、主に以下の2つの方法があり…

HTTPS化のベスト・プラクティス(AWSのRoute53,ACM,ELB,CloudFrontを使用する)

実質HTTPSがデファクトになっていますので、HTTPS化する方法をご紹介致します。 ※HTTP2はHTTPSを前提としています ※Appleはアプリで使用するAPIにHTTPSを強制化します AWSさんのおかげで、HTTPS化するのがとても簡単になっていますので、もはやHTTPを使う理…