- 1. 「にゃーにゃーマップ」の制作
- 2. CloudFormationをゼロから勉強する。(その9:クロススタックリファレンス)
- 3. AWSアカウント初期設定周りを先人の教えに沿ってやってみた
- 4. Partition Projectionを用いてAthenaのテーブルのパーティション管理を自動化する
- 5. AWSクラウドプラクティショナー取得までの記録
- 6. paho-mqttを使ってAWS IoTcoreへpublish
- 7. AWS認定SAA取得までの流れ
- 8. AWS Organizationsの各アカウントの料金急増をSlackに通知する
- 9. AWS Copilotを使ってECS実行環境を高速に構築する
- 10. SSHポートフォワーディングを利用したAWSサービスへのアクセス方法
- 11. [AWS] AWSにVPCを作成しました
- 12. fargateアプリケーションをprivate subnetに配置する場合の注意点
- 13. 悪い…やっぱCDKつれぇわ…そりゃ(黒魔術は)つれぇでしょ…
- 14. pay.jpがAWS(本番環境)で作動しないエラーから環境変数を学ぶ
- 15. AWS Lambdaがコンテナイメージをサポートしたので、Detectron2 を使って画像認識(Object Detection)を行うAPI を作る
- 16. 文系大学生が独学で学習開始6ヶ月目にReact + Rails APIモード(SPA) + AWSでポートフォリオを作成したお話し
- 17. AWSとはどんなもの?
- 18. OpenrestyでS3の静的コンテンツをプロキシするときにハマった話
- 19. Kinesis Data Firehoseのエラーロギングをマネコン以外で設定する際の注意点
- 20. EC2 AmazonLinux2 にGitLabをインストールする
「にゃーにゃーマップ」の制作
# 「にゃーにゃーマップ」の制作
## はじめに
2019年末にはじめてQiitaへ投稿した[「AWSを活用したサーバーレスWebアプリの制作」](https://qiita.com/w2or3w/items/87b57dfdbcf218de91e2)という記事は、自身の学習のために制作した[『モザイク』](https://mosaic.w2or3w.com)というサーバーレスWebアプリの振り返りと定着のためのものでした。2020年春頃、モザイクに続く自身2つ目の作品[『にゃーにゃーマップ』](https://near-near-map.w2or3w.com)というサーバーレスWebアプリを制作しましたので、今回も同じような感じで記事を書こうと思ってかれこれ数ヶ月。2020年内にある程度は書かなければっ、と、いよいよ着手します。
例によって日記のような記事になると思いますが、そういうものだと思ってますので、ご了承ください。
## 『にゃーにゃーマップ』とは
マップベースのサーバーレスWebアプリです。
近いという単語の「Near」(にやー)。
Stay Near, Enjo
CloudFormationをゼロから勉強する。(その9:クロススタックリファレンス)
# はじめに
[その8](https://qiita.com/sakai00kou/items/553aba6cc924aff3c9b8)ではスタックを`ネスト構成`にしてテンプレートを分割しましたが、今回は`クロススタックリファレンス`で前回と同じようにテンプレートを分割してみようと思います。– 【前】[CloudFormationをゼロから勉強する。(その8:スタックのネスト)](https://qiita.com/sakai00kou/items/553aba6cc924aff3c9b8)
– 【番外編】[CloudFormationをゼロから勉強する。(番外編:Former2)](https://qiita.com/sakai00kou/items/9bdd23d18d38725d8ec8)# クロススタックリファレンスとは
`クロススタックリファレンス`も前回の`ネスト`同様、テンプレートを分割する方法の1つとなりますが、`クロススタックリファレンス`は他のテンプレートで使用する変数だけを共有させるようにする方法となります。# クロススタックリファレンスの書式
書
AWSアカウント初期設定周りを先人の教えに沿ってやってみた
ナニコレ
この記事は Ubiregi Advent Calendar 2020 6日目のエントリです。
AWSアカウントを作成した直後に、サーバ起動させるとか様々なサービスを利用する前にやるべきこと。
ほとんど@tmknomさんの記事で初期設定できた(と思っている)んですが、
個人的に初期設定で詰まったところや、理解するのに時間が掛かったポイントをまとめてみようと思います。
https://qiita.com/tmknom/items/303db2d1d928db720888前提として
・本記事はAWSのアカウントがすでに作成されている前提の記事です:persevere:
・公式ドキュメントは全く読んでおりません!
・本来は読むべきですが、触りながら理解するスタイルの方が性に合っているのでわからないところを逐一読んでいくスタイルで進めました。
・理解が間違っていることは往々にしてあると思いますので、ご指摘いただければ幸いです!そもそもなぜアカウントの初期設定をやる必要があるのか?
これは記事の中にも記載されているのですが、主にセキュリティ周りを
Partition Projectionを用いてAthenaのテーブルのパーティション管理を自動化する
2020年 6月 20日にAthenaに追加された機能Partition Projectionについて紹介していきたいと思います。
# Partition Projectionについて
通常Athenaはパーティショニングされたテーブルに対してクエリを実行する際にAWS GlueのデータカタログやHive Metastoreからテーブルのメタデータ情報(パーティション情報やカラム情報など)を取得し、クエリを処理します。
その際にパーティションが多数存在する場合、メタデータを取得する時間がボトルネックとなる可能性があります。
一方、Partition Projectionを用いた場合、GlueやHive Metastoreへメタデータを取得せずにAthenaのテーブル設定を参照してパーティション情報を取得します。そのため、パーティションが多数存在することによるボトルネックを緩和することが可能になります。
また、Partition Projectionはパーティション管理を自動化することも可能です。
パーティションを更新する主流な方法は、
① Athenaで`MSCK R
AWSクラウドプラクティショナー取得までの記録
#はじめに
会社でAWS資格取得を推進しているし費用補助もあるしいっちょ頑張ってみようと言うスタート。
産休前にSAA取るぞ!と大見得を切っていたけど結局勉強が滞ったので、ハードル低めにCLFからにしました。#前提条件
・SE歴7年、インフラ経験無し、AWSはLambdaとCloudWatchを少し。#勉強方法
・AWSの基本が1日で学べる!超入門講座セミナー視聴(4H)
AWSのトレーナーの方が実際に画面で操作しながら主要機能を一通り解説してくれました。・AWS認定資格試験テキスト(2week)
1回読破。隅から隅まで読むけど深追いはせずにさらりと。章末問題も忘れずに。
https://www.amazon.co.jp/AWS認定資格試験テキスト-AWS認定-クラウドプラクティショナー-山下-光洋/dp/4797397403・WEB問題集(3week)
https://aws.koiwaclub.com
1周目:1問30秒程度のスピードで軽く。解説はさらりと。
問題に慣れる&出題傾向を把握する事が重点。※正答率1/7〜5/7
2周目:1問2、3
paho-mqttを使ってAWS IoTcoreへpublish
#paho-mqttを使ってAWS IoTcoreと通信
ラズパイをエッジデバイスとしたIoTシステムを作成するためのデモプログラム(publish)####※paho-mqttを使うとCloud9,EC2からの接続では環境によってうまくいかないことがあったのでAWSIoTSDKを使ったほうが良いかも?
######***の部分は自分の環境に合わせて変更する
“`python:publish.py
import paho.mqtt.client as mqtt
import ssl
import json
import timeendpoint = “****.amazonaws.com” #AWS IoT coreのエンドポイント
port = *** #AWSのMQTTポート デフォルトは8883?
topic = “sample/topic” #トピックrootCA = “***.pem” #ルート証明書のパス
cert = “***.pem.crt” #デバイス証明書のパス
key = “
AWS認定SAA取得までの流れ
## 概要
「AWS 認定 ソリューションアーキテクト – アソシエイト」を取得しました
SAA-C02版の情報がまだ少ないかなと思い、今後取得を目指す方の参考になれば幸いです## 前提
実務でのAWS経験は2年ほどですが、メインはサーバーサイドエンジニアなので理解できないまま使用している箇所も多い状態でした
## 勉強期間
2020年10月12日-11月29日(約1ヶ月半)
## 試験会場
銀座CBTS歌舞伎テストセンター
## 教材
Udemyの講座のみで受験しました
– [これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)](https://www.udemy.com/course/aws-associate/)
– [【SAA-C02版】AWS 認定ソリューションアーキテクト アソシエイト模擬試験問題集(6回分390問)](https://www.udemy.com/course/aws-knan/)## 費用
– Udemy(セール時に購入) ¥3,430
– AWS ¥1,452
–
AWS Organizationsの各アカウントの料金急増をSlackに通知する
## 端書
AWSは非常に便利なサービスで、数分で新しいWebサーバやDBサーバを立てることができ、柔軟かつ高速にサービスの環境を用意することができます。
しかし便利であるがゆえに、恐ろしいのがその料金です。権限さえ持っていれば誰でも超高性能(高額)なサーバーをいくらでも立てることができる為、会社のアカウントの料金が知らないうちに膨れ上がっており、月額請求時になって発覚するなんて事態も十分にあり得る話でしょう。
以上を踏まえ、料金急増等の検知と通知、および監視が必要だ、となりました。
その方法はさまざまあると思いますが、今回は**CloudWatch Events** と**AWS Lambda**を利用しました。
## AWS Organizations
AWSの公式ページ:https://aws.amazon.com/jp/organizations/企業ではAWSアカウントをサービス毎チーム毎に分けて運用している、と言う話も珍しくはなく、そんな時にアカウントの一元管理で便利なのがAWS Organizationsです。
請求情報をルートアカウントに集約できる為、
AWS Copilotを使ってECS実行環境を高速に構築する
##AWS Copilotって何?
– ECSを使ってコンテナアプリを動かしたい時、コンソールからECSのクラスターを作成するだけでも項目がたくさんあって面倒
– AWS Copilotを使うとコマンドでAWSが面倒な設定をやってくれます
– 今回は以下の公式ドキュメントを元にCopilotを使ってECSにコンテナをデプロイします
– https://aws.github.io/copilot-cli/##前提
– AWSCLIがインストールされていること
– `aws –version`
– https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-install.html
– CLIの利用設定が終わっていること
– https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-quickstart.html
– IAMでAPIKeyを発行して`aws configure`で設定する# 1. Copilotイン
SSHポートフォワーディングを利用したAWSサービスへのアクセス方法
業務でAWSサービスへ接続する際に頻繁に利用するため、概念やTeraTermを用いた接続方法などを備忘録としてまとめる。
## ポートフォワーディングとは
* 自身のIPアドレスの特定ポートへの通信を、別アドレスの特定ポートへ転送すること。
* SSHを用いて暗号化された通信経路を用意することをSSHポートフォワーディングと呼ぶ。## ユースケース
* ローカルフォワード:ローカルPCのあるポートをリモート先に転送すること。
* 例:ローカルPC(3307) → 踏み台サーバー(EC2) → DBサーバー(RDS)のような経路でアクセスしたい場合
![local_forwarding.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586535/70825957-3e9f-1ec8-edc2-80ff7b7c68f0.png)
* SSHコマンド
“`shell
ssh -L 3307:xxxx.rds.amazonaws.com:3306 fumid
[AWS] AWSにVPCを作成しました
#AWSにVPCを作成しました
昨日のユーザー登録に引き続き、本日(2020/12/05)AWSにVPCを作成してみました! というだけの投稿です。
VPCとは何ぞやということで、AWSのドキュメントのリンクを貼っておきます。
[Amazon VPC とは?](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/what-is-amazon-vpc.html)
>
>Amazon VPC は、Amazon EC2 のネットワークレイヤーです。Amazon EC2 を初めて使用する場合は、Linux インスタンス用 Amazon EC2 ユーザーガイドの「Amazon EC2 とは」を参照してください。
>>Virtual Private Cloud (VPC) — AWS アカウント専用の仮想ネットワーク。
>私のような本当の初心者には、これだけでは意味がよくわかりませんね(笑)。
とりあえず、Amazon EC2 のネットワークレイヤーで、仮想ネットワークであるということのようです。ネットワークを仮想的に構築で
fargateアプリケーションをprivate subnetに配置する場合の注意点
たびたびこのパターンで構築するたびに、ハマるので細かめにパッとチェックポイントわかるようにメモ。
仕様が細かすぎるAWS。# Fargateがインタネットへ経路を持たない場合に、必要なネットワーク経路について
ECRのVPCエンドポイントがサポートされるまでは、NATゲートウェイを利用する必要がありました。
様々な記事に書かれている通り、ECRのpullのたびにネットワーク量が大きいため、費用がかさみますのでおすすめできない。その変わり、VPCエンドポイントを色々作成するのだが、これも正直めんどい。がやるしかない。
[Fargate1.4の細かい話の公式ブログ](https://aws.amazon.com/jp/blogs/containers/aws-fargate-launches-platform-version-1-4/)
引用元。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/vpc-endpoints.html## 利用AWSサービス別のメモ
これまで自身がはまったサービスのみで
悪い…やっぱCDKつれぇわ…そりゃ(黒魔術は)つれぇでしょ…
####くそなんだよ..全然(CDKの情報)出てこねーな
####俺な、覚悟してCDK選んだんだよ
####けど、なんかこうして運用してたらさ…
####わりぃ、やっぱつれぇわ# なぜCDKを選択するのか
現状、AWSでIaCを運用する場合第一選択肢となるツールは
– terraform
– Cloudformation (以下CFn)
– AWS CDKあたりが挙げられるでしょう。
このうち、CFn, terraform, CDK の順にコードが宣言的なものになります。
またterraformはAWSではなくHashicorpのツールとなるので、クラウドベンダに依存しないのが特徴です。なのでツール選定の際に
> クラウドベンダ純正のツールだからCFnを使いたい。
しかしyamlを宣言的に記述するのは大変だ。
最近CDKが流行ってるらしいからこれにしよう。的なノリでCDKが採用されることがあるようです。
特にアプリのコードも書いてインフラも書くようなフルスタック気味のエンジニアが提唱するケースが多い印象。
Terraformを使わない理由も
> 非
pay.jpがAWS(本番環境)で作動しないエラーから環境変数を学ぶ
##背景
PAY.JPを利用した決済システムがローカル環境では問題なく動作するのに、本番環境(AWS,EC2)ではエラーとなってしまった。![スクリーンショット 2020-12-05 18.08.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864534/d9ffd316-3bc2-452d-45a2-3ca5af865198.png)
その過程で環境変数について初学者なりに学んだことを備忘録として記録。
##問題
①AWSに環境変数として公開鍵、秘密鍵の設定を行っていなかった。
②ENVファイルに記載している鍵情報を読み込む設定ではエラーが解消されない##解決
①AWSに鍵情報を環境変数として設定する
②ENVファイルからではなく、credentilas.ymlから鍵情報を読み込むように設定
③②の為に、credentials.ymlに鍵情報を環境変数として設定##詳細
①AWSの環境変数の設定
本番環境への設定なので、EC2ユーザーでログインして、
`[ec2-user@
AWS Lambdaがコンテナイメージをサポートしたので、Detectron2 を使って画像認識(Object Detection)を行うAPI を作る
この記事は[Fusic Advent Calender](https://qiita.com/advent-calendar/2020/fusic)の5日目の記事です。
昨日は [@ayasamind](https://twitter.com/ayasamind) さんの [PHP8+ Laravel8 + laravel-generatorで簡単CRUD作成からユニットテストまで書く](https://qiita.com/ayasamind/items/a5bfa65ab0b8effb26a8) でした。
[@ayasamind](https://twitter.com/ayasamind) さんといえば、先日大いにバズった [Geeks Bar Tenjin](https://twitter.com/Mr_1484/status/1332262150581075968) を企画した偉大なお方です。
月イチで開催されるらしいので、福岡にお立ち寄りの際は、ぜひ[開催日を確認](https://bar.geekstudio.work/)してみてください!—-
# やったこと
AW
文系大学生が独学で学習開始6ヶ月目にReact + Rails APIモード(SPA) + AWSでポートフォリオを作成したお話し
##1. はじめに
__2020/2月にプログラミングの学習を開始してから6ヶ月程経った頃、いざ参らんと満を辞してポートフォリオの製作に着手し始めました。
何やかんやありまして何とか完成まで漕ぎ着けることが出来たのですが、カレンダーを確認してみるとどうやら3ヶ月も経過していたようです。
なるほど、トータルで9ヶ月。僕はそっとカレンダーを閉じました。__さて、足踏みしてしまった事をクヨクヨしても仕方がありませんので先に進みます。
今回僕は__小説投稿アプリケーション__を製作してみました。
この記事では製作したポートフォリオの中身について色々と記述をしつつ、ポートフォリオを完成させるまでに__学びになった事や自分なりに気を付けた事、それからキツかった事__などについて書かせて頂きました。
少々長くなってしまった感はありますが、どうか暖かい目で読み進んで頂けたら幸いです
AWSとはどんなもの?
モダンなWebアプリ開発企業だとAWS、Docker、CI/CDを使っているということなので、
AWSをいまさらながら学びました。AWSとは簡単にいうとクラウド上でサーバーを構築して、
その上に開発したアプリーケーションやDBを配置し、Web上でサービスを提供するインフラです。図で知っておくと理解がしやすい
##リージョン
世界に分散されたデータセンター群
例:東京リージョン##アベイラビリティゾーン
リージョンの中で分割されたデータセンター
例:東京の中でも離れた場所にセンターA、センターBみたいなものがある##VPC
仮想ネットワーク【手順】
VPCを作成
CIDRブロックをサブネットに分割(パブリックサブネットとプライベートサブネット)
パブリックサブネットをインターネットゲートウェイに接続
ルートテーブルでパブリックサブネットとインターネットゲートウェイを接続できるように設定##EC2
仮想サーバー
クライアントからアクセスするときはファイアーウォールを外しておく必要がある【手順】
インスタンスを作る
Webサーバーとして使うか、DBサーバーと
OpenrestyでS3の静的コンテンツをプロキシするときにハマった話
この記事は、[DENSO Advent Calender 2020](https://qiita.com/advent-calendar/2020/denso “DENSO Advent Calender 2020”)、9日目の記事です。
何気にQiita初投稿です。お手柔らかに。# はじめに
お仕事で、VPN接続した環境を経由してプライベートなS3バケット上の静的コンテンツにアクセスしたいというリクエストがありました。
事例を調べると、クラメソさんでも事例が紹介されてて、簡単に実現できそう!と思ってました。[nginxとS3を使って静的コンテンツを利用者を限定した形で利用できるようにする](https://dev.classmethod.jp/articles/private-content-hosting-with-nginx/ “nginxとS3を使って静的コンテンツを利用者を限定した形で利用できるようにする”)
…なんですが、あれこれやってると、沼にはまってしまったのでその話をご紹介です。
# 構成
動作確認で作った構成は以下です。何も凝ったことはしてません。
![
Kinesis Data Firehoseのエラーロギングをマネコン以外で設定する際の注意点
Kinesis Data Firehoseはデータ配信処理やデータ変換用のLambda関数の処理失敗時に、そのエラーログをCloudWatchLogsに出力するように設定することが出来ます。その設定方法や挙動を調査する過程で把握出来た注意事項を2つ、備忘録的に記載します。
※以降、「Kinesis Data Firehose」だと長いので、「Firehose」と省略します。**※2020年12月5日時点でのFirehoseサービスの仕様をベースにしています。**
# 注意事項①
Firehoseのエラーロギング設定はマネコンからもCLI(AWS CLIやCloduFOrmation、Terraform)からも行うことは出来ますが、両者で設定の挙動に微妙な違いがります。– マネコンから設定
>If you enable Kinesis Data Firehose error logging in the Kinesis Data Firehose console, a log group and corresponding log streams are created fo
EC2 AmazonLinux2 にGitLabをインストールする
デザイナーさんと共同でHTML/CSSを作ることになったので、資材管理のためにAWSのEC2にGitLabをインストールしました。手順を纏めておきます。
なお、GitLabだけ動かせばよかったので、Dockerなどは使わずにインスタンスに直接インストールしました。所要時間は20分程度です。
### 作業環境
macOS BigSur 11.0.1### 参考
[セルフマネージドGitLabをインストール | GitLab公式サイト](https://www.gitlab.jp/install/#centos-7)
[GitLabをAWS上で動かす(3/3) | Qiita](https://qiita.com/C910/items/217e7df50a37e10b781b)
[AmazonEC2にGitLab CEの環境を構築する | かつおぶしのブログ](https://blog.k-bushi.com/post/tech/cloud/building-gitlab-on-ec2/)
[docker-composeを使ってgitlabを構築する | mebee](https: