AWSについての学習と簡単な構築とその手順（S3にドキュメントをアップロードしたらSlackに通知が送られる簡単なシステム）

こんにちは。
社会人になってから
「普通の生活をするのって難しいな」
と感じることが多くなりました。こまっちゃんです。

約半年ぶりの投稿になります。さて、くだらない近況報告はさておき
今回もウェブテクデー(会社で用意してくれたお勉強の時間)で学習を行いました。

AWSのオンライン研修を受講したのですが、やっぱり触ったことがないといまいちピンとこないので、S3とLambda、Slackを使用して簡単なシステムを構築したので共有します。

ちなみにですが既に同じ構成で投稿している方がいたので、今回はAWSがどれだけ簡単に構築作業ができるのかを分かってもらえればと思います。エンジニアの新人さん向けでもあると思います。

まずは今回使う3つのサービスの紹介からしていきます。

#１．S3ってなに？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/b0728461-b4c5-67fb-8e46-ae5d51ce4304.png)

S3とは、AWSの中のサービスの1つで、「Simple Storage Service」を略してS3と呼ばれています。
容量が無制限のFTPサーバのようなイメージです。

#２．Lambda ってなに？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/88aec243-4184-d51a-56ce-1104f1b70687.png)
「ラムダ」って読みます。
プログラムを実行するためのサーバがいらない、プログラムの実行環境を提供するAWSのサービスのです。
AWSで調べると「サーバレスコンピューティングとアプリケーション」と出てきます。アプリ屋さんはサーバのことを考えないことが多いとは思いますが、これって結構すごいことで面倒な考え事が少なくなります。

具体的には
　〇〇で△△をされたらプログラムを実行
のような使い方が出来ます。

インフラエンジニアは構築する時代から、既にあるものを組み立てていく時代に変化していくようなそんな気がするサービスですね。

#３．Slack ってなに？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/30db4cd2-667e-1f52-1408-ae7d4952a9dc.png)
Slackは、アメリカのSlack Technology社が開発し運営しているSaaS型のビジネスチャットツールです。
元々はGlitchというゲームの映像配信サービスを開発スタッフたちが社内のコミュニケーション用に作ったツールでしたが、これを商用化したのがSlackらしいです。
これは使っている人も多いと思うので、説明は割愛します。

それでは紹介した3つのサービスを連携させて簡単なシステムを作っていきます。

#４．S3にドキュメントをアップロードしたらSlackに通知が送られる簡単なシステムを作る
今回は以下の画像のような構成で作っていきます。流れとしては
　①S3に何かドキュメントがアップロードされたら
　②Lambdaで設定されているプログラムを実行（S3と連携されているので勝手に実行されます）
　③Slackに通知される
といったものですね
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/b975f6bd-78b7-d31d-ef67-e9caf3eeef2a.png)
一緒に構築をしていく場合は前提条件として
・Slackのテスト用のチャンネルは既に用意されている
・AWSのアカウントは持っている（言語は日本語）
・どこのリージョンを使用するかを決めておく
ことを確認してください。

###①S3：バケットを作成する
AWSにログインしていてS3の設定画面まで行っていることを前提とします。
1.「バケットを作成する」ボタンを押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/2104d777-c353-9ca3-e1e4-b3a102f5506b.png)

2.バケット名を記載（なんでもいいよん♪）し「作成」ボタンを押下
　※リージョンは決めておいたものを選択してください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/ce12cee9-2fe3-6d59-ef84-6db0b6fc8613.png)

3.バケットが作成されていることを確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/2d329a00-abed-3e59-a607-ce702c0ba4fa.png)
今回はバケットに細かい設定を入れる必要はないので本当に簡単に作れました。
実際にお仕事で使う際はお客様と要件定義をしっかりとしておきましょう。

###②Slack：Webhook URLを発行する
Slackと連携するので、通知の送信先のURLが必要です。
下記のURLからWebhook URLを発行しましょう。
https://wt-daytest.slack.com/apps/new/A0F7XDUAZ--incoming-webhook-
Webhook URLについてはURLの参照先でどういう風に使用できるかが書いてあるので割愛します。

1.チャンネルを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/04404949-193c-3c97-f784-79db1b1e1291.png)

2.Webhook URLを控える
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/a40151a6-bcf5-c82e-86d0-665525f37b8d.png)

###③Lambda ：関数を作成する
AWSにログインしていてLambda の設定画面まで行っていることを前提とします。
画像の枚数が多いので一枚ずつ丁寧に設定していってください。
※リージョンに注意してください。画面の右上のバーから設定できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/ca8859e9-af81-9be1-ec3f-a014af492bd7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/c64aaf3a-e65e-ce46-1c8b-6ad088fc0fd4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/0c87240a-bc86-5ca3-7190-4bbeee09ae5b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/5e082ae3-4b43-154e-73d9-c947f79b0d7c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/b8759d0a-5dba-d708-c794-584e5d4e7b41.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/7ddb40c2-30f1-9761-840c-aee99a9f66e4.png)
ここまで来たらあとはソースコードを張り付けるだけです！頑張りましょう！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/d34bc75e-a61f-bb3b-0682-a6d91fe5fc1a.png)
ソースコードについては下記の記事から「AWS Lambdaのコーディング」をコピペしてくることを推奨します（ありがとうございました！助かりました！）。自信があればソースコードを書き換えてみましょう。
https://qiita.com/FukuharaYohei/items/bf053fc78b4dcb961245
貼り付けて黄色蛍光ペンの箇所をそれぞれ修正してください（上：控えたWebhook URL、下：チャンネル名）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/f28940b0-bee1-e94c-5068-ddc6617e7b7a.png)
「Deploy」ボタンを押下して設定完了です！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/39a81b5a-e560-4394-ab8d-a350a5836790.png)

#５．動作確認してみる
さて、これで構築は終わりました。S3にファイルをアップロードしてみましょう！
アップロードするのは以下の画像ファイル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/b975f6bd-78b7-d31d-ef67-e9caf3eeef2a.png)
せっかく描いたのでもう一回活躍してもらいましょう。まあドキュメントは何でもいいんですけどね。

画像をアップロードして。。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/d09fe41e-dfb1-8158-63ad-51eb0b0ac204.png)

通知が。。。

きました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/600095/2f85bbb6-0d2b-8db0-edc0-0a3bf1f65a52.png)


#６．最後に
一緒に構築をしてきた方、お疲れさまでした。
簡単な構成でも実装できるとうれしいですね！テンションが上がります！
AWS入門にはピッタリですし、なにより簡単でEC2で仮想サーバなんて作ってられないですよね笑。

ここから真面目な話と感想です。
AWSはAWSのサービス間の連携にとても強いクラウドサービスです。
マルチクラウドの時代になり、どの企業のサービスなのかを問わず連携をさせるための知識を我々エンジニアは身に付けなければなりません。

また、今回はコンソール画面上だけで設定を行うことが出来ましたが正直知識があれば誰でもできます。しかし誰でもできることはいやらしい話お金にならないのです。
もしもインフラエンジニアとして食べていくのであれば、クラウドサービスを理解しさらに提供されているサービスについて深く知識を身に付けなけれないけないなと感じました。

今回は自分が学んだことを人に伝えられる形で記事を書きました。少なくともAWSのS3とLambdaについての知識は少しだけつけることが出来たともいます。
これからも機会があれば知識を身に付けていこうと思います。
以上です。