m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

macにcompassを入れる

新しく購入

mac miniをお試し中
なんか起動がすでにおかしいけどw

rubyのツールのやつ

cssを階層でかけてメンテし易いやつです。

環境が変わった

アップデート
sudo gem update --system
conpassインストール
sudo gem install -n /usr/local/bin compass

これでいいらしい

以前は

sudo gem install compass

でうまくいっていた気がしてたけど環境が変わると多少やり方が変わるのは仕方がない

移行は諦めた

データの移行はGoogleDriveなどで対応しておく
移動時にはいままでのmac book airで対応し、家での学習はこちらでやる。

Spring BootでHello Worldを行う

Javaフレームワーク

WebだけじゃなさそうだけどJava系のフレームワークで役に立つかもしれないのでちょっとずつ調べる

環境

Mac
Java 1.8

手順

Webサイトで開発環境のSTSをダウンロード

https://spring.io/tools/sts/all
f:id:m_shige1979:20161110081247p:plain
※400MBくらいあった

起動

f:id:m_shige1979:20161110081417p:plain

「Spring Stater Project」を指定

f:id:m_shige1979:20161110081446p:plain

デフォルトのまま次へ

f:id:m_shige1979:20161110081518p:plain

今回はWebのみを選択する

f:id:m_shige1979:20161110081548p:plain

プロジェクトのデータをダウンロード

f:id:m_shige1979:20161110081615p:plain

プロジェクトを展開してHelloControllerを追加する

f:id:m_shige1979:20161110081638p:plain

HelloController.javaを編集
package com.example;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
	
	@RequestMapping("/")
	public String index() {
		return "Hello world";
	}
	
}
ポート設定

※デフォルトでは8080が起動するので他のものに変えたい場合はapplication.ymlを作成して設定する

src/main/resources/application.yml

server:
  port: 7777
実行

f:id:m_shige1979:20161110081804p:plain

確認

f:id:m_shige1979:20161110081907p:plain

所感

動かすところまでできた。
マニュアルを見てもしっくりこないところがあるので動かしながら確認していくのは面白い。
詰んだら困りますが最近は参考になる情報がネットにあるのでいろいろ試してやっていくことにする。

AWS SESでメールを受信してS3へ保管

独自ドメインを使えば受信できるらしい

やってみる

独自ドメイン

mshige1979aws.xyz

AWS SESリージョン

オレゴン

Route53設定

Route53を起動

f:id:m_shige1979:20161103052429p:plain

Hosted zonesを選択

f:id:m_shige1979:20161103052459p:plain

ドメインを選択

f:id:m_shige1979:20161103052522p:plain

Create Record Setを選択

f:id:m_shige1979:20161103052547p:plain

MXレコードを設定

f:id:m_shige1979:20161103052608p:plain

SES設定

SESを起動

f:id:m_shige1979:20161103052646p:plain

Domainsを選択

f:id:m_shige1979:20161103052707p:plain

「Verify a New Domain」を選択

f:id:m_shige1979:20161103052727p:plain

ドメインを設定

f:id:m_shige1979:20161103052804p:plain

「Use Route 53」を選択

f:id:m_shige1979:20161103052840p:plain

「Create Record Sets」を選択

f:id:m_shige1979:20161103052908p:plain

ドメインの検証完了

f:id:m_shige1979:20161103053109p:plain

「Rule Sets」を選択

f:id:m_shige1979:20161103053134p:plain

「Create a Receipt Rule」を選択

f:id:m_shige1979:20161103053157p:plain

今回は何も指定しないまま次へ

f:id:m_shige1979:20161103053257p:plain

処理に「S3」を選択

f:id:m_shige1979:20161103053221p:plain

「Create S3 bucket」を選択

f:id:m_shige1979:20161103053346p:plain

S3のバケット名を設定してバケットを作成

f:id:m_shige1979:20161103053428p:plain

「Next Step」を選択

f:id:m_shige1979:20161103053456p:plain

ルール名を設定して「Next Step」を選択

f:id:m_shige1979:20161103053520p:plain

ルールを作成する

f:id:m_shige1979:20161103053722p:plain

ルール作成

f:id:m_shige1979:20161103053617p:plain

S3設定

S3を起動

f:id:m_shige1979:20161103053801p:plain

メール受信用のバケットを確認

f:id:m_shige1979:20161103053828p:plain

バケットの中身

f:id:m_shige1979:20161103053901p:plain

メールをCLIでメール送信
$ aws \
     --region us-west-2 \
     ses send-email \
     --to aaa1@mshige1979aws.xyz \
     --from 送信元メールアドレス \
     --subject "テストメール" \
     --text "テストメールRULE1"
{
        "MessageId": "0101015826a686ae-c8322df5-1d54-4d38-a593-ffbe0263a7c7-000000"
}
$
バケットを確認

f:id:m_shige1979:20161103054001p:plain

ダウンロードして確認
なんかごちゃごちゃしたヘッダー情報
なんかごちゃごちゃしたヘッダー情報
なんかごちゃごちゃしたヘッダー情報
なんかごちゃごちゃしたヘッダー情報

From: 送信元メールアドレス
To: aaa1@mshige1979aws.xyz
Subject: =?UTF-8?B?44OG44K544OI44Oh44O844Or?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64
Message-ID: <0101015826a686ae-c8322df5-1d54-4d38-a593-ffbe0263a7c7-000000@us-west-2.amazonses.com>
Date: Wed, 2 Nov 2016 20:06:37 +0000
X-SES-Outgoing: 2016.11.02-54.240.27.24
Feedback-ID: 1.us-west-2.diVdaUBNwWpEd4LMSZCQ3MHDGnRqRPtes2q0JUysWgI=:AmazonSES

44OG44K544OI44Oh44O844OrUlVMRTE=

おわり

所感

なんとか受信はできた…
S3だけではなくLambdaなどのサービスに渡したりすることもできるよう。
S3のデータを別のサービスを経由してWebメールみたいなこともできるかもしれない…

AWSのSESの制限を解除してみる

解除してみた

まだ、まともに使っていないけど…

手順

送信制限の解除申請

f:id:m_shige1979:20161101231519p:plain

設定

f:id:m_shige1979:20161101231542p:plain
f:id:m_shige1979:20161101231558p:plain
f:id:m_shige1979:20161101231925p:plain

依頼中

f:id:m_shige1979:20161101231956p:plain

完了

f:id:m_shige1979:20161101232126p:plain


これでおわりらしい

時間は?

1日くらい?
時差の問題とかありそうなのでよくわかりませんけど…

AWSのSESでメールを送信する

AWS SES

メールを送信するサービス。
なんかやれば受診もできるらしい

最初は制限がある

サンドボックスバージョンらしいので
外部へのメール送信など遅れるメール数とかいろいろ制限があるらしい

今回やること

メールアドレスを登録して登録したメールアドレスの送信ができるようにする

設定

SES起動

f:id:m_shige1979:20161101225618p:plain

リージョンを変更する

f:id:m_shige1979:20161101225727p:plain
※東京のリージョンはNG

Email Addressを選択

f:id:m_shige1979:20161101225833p:plain

「Verify a New Email Address」を選択

f:id:m_shige1979:20161101225943p:plain

検証するメールアドレスを設定

f:id:m_shige1979:20161101225913p:plain

メールアドレスを送信したことを確認して「Close」を押下

f:id:m_shige1979:20161101230106p:plain

状態を確認

f:id:m_shige1979:20161101230142p:plain

メールを受診して、検証する

f:id:m_shige1979:20161101230332p:plain

検証確定

f:id:m_shige1979:20161101230444p:plain

メールアドレスのステータスで成功したことを確認

f:id:m_shige1979:20161101230522p:plain

メール送信テスト

f:id:m_shige1979:20161101230547p:plain

テストデータを設定して送信

f:id:m_shige1979:20161101230627p:plain

テスト結果

f:id:m_shige1979:20161101230650p:plain

メール送信に関するメトリクスを表示する

f:id:m_shige1979:20161101230718p:plain

CLIより送信

コマンド
$ aws \
    --region us-west-2 \
    ses send-email \
    --to 認証したメールアドレス \
    --from 認証したメールアドレス \
    --subject "テストメール" \
    --text "テストメールCLI"
{
    "MessageId": "010101581711c314-cee268da-3979-4145-8775-27cc03c883ea-000000"
}
$

f:id:m_shige1979:20161101230854p:plain

所感

この時点ではサンドボックスの状態なので1日の送信量や認証していないメールアドレスへの送信などの制限がかかるので解除が必要。
単体ではあまり意味がないのでlambdaなどと連携できるようにしてみる。

AWSのS3のサイトを独自ドメインで見えるようにする

最近、AWSを使用しているので料金がちょっと気になる

以前、やったときは3万くらいかかって泣いたことがあるので気をつけないと…

独自ドメイン

お名前.comで作成した
→ s3dev.mshige1979aws.xyz

S3でバケットを作成

S3を開く

f:id:m_shige1979:20161101203426p:plain

バケットの作成

f:id:m_shige1979:20161101203449p:plain

バケット名は公開したいドメイン名にする

f:id:m_shige1979:20161101203538p:plain

作成されていることを確認

f:id:m_shige1979:20161101203615p:plain

index.htmlを作成
<!DOCType html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>AWS S3 Sample01</title>
	</head>
	<body>
		Hello AWS S3 !!.
	</body>
</html>
ファイル一覧へ遷移

f:id:m_shige1979:20161101203838p:plain

アップロードを選択

f:id:m_shige1979:20161101203907p:plain

ファイルを設定してアップロード

f:id:m_shige1979:20161101203941p:plain

アップロード完了

f:id:m_shige1979:20161101204007p:plain

公開を設定

f:id:m_shige1979:20161101204041p:plain

公開することを確認

f:id:m_shige1979:20161101204113p:plain

公開完了

f:id:m_shige1979:20161101204133p:plain

バケットのプロパティを指定

f:id:m_shige1979:20161101204252p:plain

インデックスファイル名を設定

f:id:m_shige1979:20161101204318p:plain

パスを確認して表示されること

f:id:m_shige1979:20161101204357p:plain

アクセス許可より「バケットポリシーの追加」を選択

f:id:m_shige1979:20161101204629p:plain

バケットポリシーを追加
{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "AddPerm",
			"Effect": "Allow",
			"Principal": "*",
			"Action": "s3:GetObject",
			"Resource": "arn:aws:s3:::s3dev.mshige1979aws.xyz/*"
		}
	]
}

f:id:m_shige1979:20161101204719p:plain

Route53

Route53を起動

f:id:m_shige1979:20161101204750p:plain

DNS management」を開始

f:id:m_shige1979:20161101204820p:plain

「Create Hosted None」を選択

f:id:m_shige1979:20161101204846p:plain
f:id:m_shige1979:20161101204903p:plain

ドメイン名を設定

f:id:m_shige1979:20161101205133p:plain

レコードセット設定

f:id:m_shige1979:20161101205023p:plain

サブドメインを設定する

f:id:m_shige1979:20161101205230p:plain

お名前.com設定

ネームサーバ設定

f:id:m_shige1979:20161101205306p:plain

結果

f:id:m_shige1979:20161101205324p:plain

所感

疲れた(´・ω・`)
いや、やることは少なめなんですけど1〜10までの手順が見つからないというかわからなかったので結構手間取りました。

AWS CLIでS3を制御

AWSでs3を使用

静的なファイルサーバと考える
料金は比較的に安い

一時的に実験

作成〜削除までやってみる

コマンド確認

$ aws s3 hoge
usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help
aws: error: argument subcommand: Invalid choice, valid choices are:

ls                                       | website
cp                                       | mv
rm                                       | sync
mb                                       | rb
presign
$

バケットの作成

$ aws s3 mb s3://sample01bucket
make_bucket: sample01bucket
$

バケットを確認

$ aws s3 ls
2016-10-29 10:18:51 sample01bucket
$

アップロード用のファイルを作成

index.html
<!DOCType html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>AWS S3 Sample01</title>
    </head>
    <body>
        Hello AWS S3 !!.
    </body>
</html>
~

アップロード

$ aws s3 cp index.html s3://sample01bucket/index.html
upload: ./index.html to s3://sample01bucket/index.html
$

確認

参照できない

f:id:m_shige1979:20161029102819p:plain
権限がない感じらしい

権限を付与したアップロード

$ aws s3 cp --acl public-read index.html s3://sample01bucket/index.html
upload: ./index.html to s3://sample01bucket/index.html
$

再確認

f:id:m_shige1979:20161029103118p:plain

できました(^^)

後始末

内部のファイルを全て削除
$ aws s3 rm s3://sample01bucket/ --recursive
delete: s3://sample01bucket/index.html
$
バケットを削除
$ aws s3 rb s3://sample01bucket
remove_bucket: sample01bucket
$
一覧確認
$ aws s3 ls
$

おわり

所感

Webコンソール上でやったよりは手間が少なく感じる…
細かいことは別途必要でしょうがシンプルな静的サイトを一時的に準備するだけならこれでもいいと思える感じ
※お金次第ですがw