AWS SQSについて勉強したまとめ

実務でキューイングが向いてそうな処理があったので、AWS SQS を導入したいと考えている。 導入前に調べたことを雑にまとめていく。 実際にサービスで使用しているわけではなく、これから使用するために調査している段階なので、間違っていることなどがあれば教えてください。

SQS ってなにさ

AWS 公式の説明から引用すると「完全マネージド型メッセージキュー」というものらしいです。 完全マネージド、というのは「完全運用保守管理代行」ということであり、ざっくり言ってしまえば裏で何が動いてるか、サーバがどういう状態かなどをいい感じにやってくれるということですね。 そしてメッセージキューとは異なるプログラム間で動作を連携させるための手法の一つであり、送信側はキューと呼ばれるデータ領域にデータを保持し、データを受ける側の処理完了は待たずに次の処理を続けるという方式のものです。

SQS の使い方 - 準備

AWSコンソールにログインしてSQSをクリック。 メッセージをキューイングするための箱であるキューを作成する。 今回はtestというキュー名 (あとで画像はる)

SQS の使い方 - AWS CLIを使う

// test というキュー名に hoge というメッセージを送信
$ aws sqs send-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/XXXXXXXXX/test --message-body hoge
{
    "MD5OfMessageBody": "ea703e7aa1efda0064eaa507d9e8ab7e",
    "MessageId": "a323ade9-e834-436c-90f3-b6cbfae29740"
}

// test というキューのメッセージを取得
$ aws sqs receive-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/XXXXXXXXX/test
{
    "Messages": [
        {
            "Body": "hoge",
            "ReceiptHandle": "AQEB25kImuDLtxBnBPaHZxSb4qr+9yPz3Ws4x2JtHUVKi/Wf7tGKMjd2CdTBuYrA0FtnEjO2y3d8VRvWkmQ/idiZpYupSCUJ+aTZiGgb7+7Udn1WyLb8nFM9Rndel+BjuZZqi3xsbEyfzBIASIcHbkRZ1cXvtoocOVsbONK612t6Nklj38c0UwBz3bY+SP3qMpGayp4Sq1k3VxwgAXflgvtxfqvdKrGFTRBLE7YbTOyb1cHoqJna8t3LMkWuRmcC+s1Ul9HsAjtWEAV3y4z96NjVr3WqSofqj2gy9zAkAN0Ebj4weqSvfPaYCZNBQ76mDUbxMGiof+AX3fWlgm+x5iEYranD3+eyZ4LLAY7bwbC0GLeCroZhgau03wWIPqwKcCEQ2ufQPEwCvF06EjI5yXpKJw==",
            "MD5OfBody": "ea703e7aa1efda0064eaa507d9e8ab7e",
            "MessageId": "a323ade9-e834-436c-90f3-b6cbfae29740"
        }
    ]
}

// キュー削除
$ aws sqs delete-message --queue-url https://sqs.ap-northeast-1.amazonaws.com/XXXXXXXXX/test --receipt-handle AQEB25kImuDLtxBnBPaHZxSb4qr+9yPz3Ws4x2JtHUVKi/Wf7tGKMjd2CdTBuYrA0FtnEjO2y3d8VRvWkmQ/idiZpYupSCUJ+aTZiGgb7+7Udn1WyLb8nFM9Rndel+BjuZZqi3xsbEyfzBIASIcHbkRZ1cXvtoocOVsbONK612t6Nklj38c0UwBz3bY+SP3qMpGayp4Sq1k3VxwgAXflgvtxfqvdKrGFTRBLE7YbTOyb1cHoqJna8t3LMkWuRmcC+s1Ul9HsAjtWEAV3y4z96NjVr3WqSofqj2gy9zAkAN0Ebj4weqSvfPaYCZNBQ76mDUbxMGiof+AX3fWlgm+x5iEYranD3+eyZ4LLAY7bwbC0GLeCroZhgau03wWIPqwKcCEQ2ufQPEwCvF06EjI5yXpKJw==

読んだものメモ 2018/02/27

読んだものメモ

背景とかはこちら

zoe3.hateblo.jp

2018/02/27

意外と知らない人が多そうだったのでぺたり。composerでのバージョン指定の書き方とか

Composerのバージョン指定方法でのチルダ(~)とキャレット(^)の違い — A Day in Serenity (Reloaded) — PHP, FuelPHP, Linux or something


はてなブログのトップに出てたので読んだ。自分自身悪いテックリードとならないように努めようと思う。

tannomizuki.hatenablog.com

読んだものメモ 2018/02/22

読んだものメモ

背景とかはこちら

zoe3.hateblo.jp

2018/02/22

DynamoDBについての資料

www.slideshare.net


テスト環境のデータのマスキングを AWS Glue 使ってやる方法

qiita.com


t_wadaさんのでぶさみの発表資料後で読む

speakerdeck.com

t_wadaさんつながりで一度は読んでおいたほうがいいと思ったので載せておく

speakerdeck.com


勉強会やったブログ書いたので宣伝

tech.willgate.co.jp

読んだものメモ 2018/02/19

読んだものメモ

背景とかはこちら

zoe3.hateblo.jp

2018/02/19

スウェーデンの「ラゴム」という考え方による時間の使い方について

blog.timecrowd.net


データ分析用Dockerコンテナ環境の作り方がまとまってるので今度試そう

qiita.com


phpのみんな大好き静的解析ツール

phan入れる途中でcomposerで管理してるライブラリの依存関係によるコンフリクトが起きてつらかった。。

qiita.com


php の min, max における null 扱いについて ふと気になって調べてみたところ、下記のようになっているようでした。

php > var_dump(min(1, null));
NULL
php > var_dump(min(0, null));
int(0)
php > var_dump(min(-1, null));
NULL

公式にも少しだけ言及がありました。

PHP: min - Manual

// 一方の値が NULL や boolean の場合、それを他の値と比較するときには、
// もう一方の値の型が何であるかにかかわらず、
// FALSE < TRUE / NULL == FALSE というルールを使います。
// 以下の例では、-10 と 10 はどちらも TRUE と評価されます。
$val = min(-10, FALSE, 10); // FALSE
$val = min(-10, NULL, 10);  // NULL

書いてある通りですが、 boolean が含まれる場合、boolean 以外の数値が強制的に boolean にキャストされ比較されるようです。 また、null の場合は false 扱いとなるようです。ちなみに同じ値の場合は引数の先のものが優先されるようです。

php > var_dump(min(null, 0));
NULL
php > var_dump(min(0, null));
int(0)
php > var_dump(min(0, null, false));
int(0)
php > var_dump(min(null, false, 0));
NULL
php > var_dump(min(false, 0, null));
bool(false)

そもそも、min, max に null とか入れるなよ、って感じですが、、

読んだものメモ 2018/02/17

読んだものメモ

背景とかはこちら

zoe3.hateblo.jp

2018/02/17

今日は休日だったのでゆっくり Compose file version 3 のリファレンスを読んでた。

docs.docker.com

qiita にまとめも乗ってたので参考にしながら

qiita.com


CakePHP3が動くようなDockerfileを作って見た

作ったもの

github.com

参考にしたもの

php:7.2-alpineのイメージベースにして作ったのでベースイメージのソースとか参考にしながら

github.com

CakePHP3動かすにはphp-intlとかが必要なので参考にした

alpineでPHP-intlインストール時にエラーが起きる原因 – WP Advisor


あらためてphpから.envを読み込むやり方を読んだ。別に忘れてたわけじゃないけど。

qiita.com

読んだものメモ 2018/02/15

読んだものメモ

背景とかはこちら

zoe3.hateblo.jp

2018/02/15

tiwtterでgithubのコミットつぶやいてる人いたから調べたら公式で機能提供されてるのね。そのうちやってみよ

pogin.hatenablog.com


graceful stop 的な話。

kakakakakku.hatenablog.com

nginx の Connection Draining – 1Q77


phpmcryptについて調べたまとめ

willow710kut.hatenablog.com

PECL

PECL :: Package :: mcrypt

pear

Manual :: Installing packages

php 公式

PHP: Mcrypt - Manual


makefileたまに調べてしまうのでぺたり

qiita.com


apacheでのip制限・許可のかけ方とかコンフィグファイルのテストとか

Apache 2.4系でIP制限の設定方法 - ex1-lab

qiita.com

人間とウェブの未来 - Apache 2.4系でのモダンなアクセス制御の書き方

Apacheの構文テスト | OpenGroove

読んだものメモ 2018/02/14

読んだものメモ

背景とかはこちら

zoe3.hateblo.jp

2018/02/14

qiita.com


password_hashね、わかるわかる。

qiita.com


ちゃんとよんでないのであとで読む

qiita.com


インフラエンジニアじゃなくても一度読んどくとよい

qiita.com


当たり前を当たり前のように出来るって大事

blog.manabusakai.com


長いので途中で飽きたけど図解でセキュリティについて分かりやすい。後輩に聞かれたときに引っ張り出すといいかも。

qiita.com


opensslの脆弱性の件

JVNVU#92830136: OpenSSL に複数の脆弱性


node制のWEBサービスとか提供するのに使うといいらしい

qiita.com