- 1. APIを提供するALBでメンテナンスモード(503)を実現する(CORSに対応する)
- 2. aws technical essentials 2 をオンラインで受けた感想
- 3. AthenaからGoogle スプレッドシートへの連携
- 4. AWS EC2 AmazonLinux2だけでLaravelのアプリをデプロイする
- 5. AWS 上に構築した Laravel 環境での sudo php artisan 実行時に環境変数が適用されずにハマった話
- 6. CSVを分割してAmazon S3に保存して、 Amazon Athenaのスキャンコストを下げる(Spark利用)
- 7. dockerでERROR: An HTTP request took too long to complete. と表示されるエラー
- 8. AWSでRailsを使ったサンプルアプリ作成進行状況
- 9. チームメンバー全員が自動デプロイできるようにする方法
- 10. 【AWS VPC】依存関係エラーが発生した場合のデタッチ・削除の仕方
- 11. DynamoDB Streamsのパラメータをいじって動作を確認する
- 12. DynamoDBをNode.jsで操作する
- 13. LambdaLayersをLambdaで作る
- 14. CloudFormationで作るECSとAutoScalingの3分クッキング
- 15. railsチュートリアル格闘記Ⅲ
- 16. 【基礎】Amazon Connect①(概要・電話回線システム導入)
- 17. AWS Linux 2でのdocker-nginx ポートフォワード込み
- 18. DynamoDBがどれだけ頑張れるかを実験してみる
- 19. CodeBuild の結果をSlack に通知する (CodeBuild + Amazon SNS + AWS Chatbot)
- 20. [AWS] CloudFront で MediaStore の CDN を構築する
APIを提供するALBでメンテナンスモード(503)を実現する(CORSに対応する)
# APIを提供するALBでメンテナンスモード(503)を実現する(CORSに対応する)
この記事は– APIをALBを使って解決している
– SPAとAPIのエンドポイントが違う(クロスオリジン)
– SPA側でメンテナンスレスポンスをハンドルしているという状況での解決方法になります。
## はじめにAWSのALBには固定レスポンスという機能があり、特定のステータスコードとbodyを固定で返却する事ができます。
コレを設定することで、アプリケーションがメンテナンスモードの時などに固定でメンテナンス画面を表示することが出来ます。[固定レスポンスの設定方法](https://dev.classmethod.jp/articles/alb-fixed-response/)
ところが、SAP+APIのような構成のアプリケーションを使用している際、API側のALBで固定レスポンスを設定するとある問題が発生します。
**SPA+APIモデルのアプリケーションで固定レスポンスが出来ない**
ALBの固定レスポンスではメンテナンス中という旨のJSONを返却できます。しかし、以下
aws technical essentials 2 をオンラインで受けた感想
# aws technical essentials 2 の感想
はい皆さんこんにちは結論から言うとこの記事は
有料研修(結構高い)の
aws technical essentials 2を受けたので、これから受ける人の参考になればと記事を書いておきます。
・WordPressちょっと触ります
・時間は余裕ないです
・SQLの知識もあったほうが良いが、無くても良い。# 詳細
資料が欲しい方はこの辺見てください。
https://aws.amazon.com/jp/training/course-descriptions/essentials2/環境:
こんなご時世ですので、オンラインでの研修でした。対象サービス:
EC2,RDS,IAM,AMI,snapshot,S3,Wordpress,ELB,AutoScale,CloudWatch,CloudWatch Logs,EBS##まずはじめに
今回、aws technical essentials 2を受けていますが、
1は受けませんでした。
ある程度業務での前提知識があったのと、会社のお金だったので2だけにしまし
AthenaからGoogle スプレッドシートへの連携
# 背景
[デジタル広告事業でデータレイクとかデータマートみたいなことを引き続きやってます](https://qiita.com/yuji_saito/items/eaab48a62d535c30cc60)
もともとTableau Serverで可視化したくて作ったのですが、データレイクからのデータマートみたいなものはあるので、可視化の先は何でも良い訳です。人も増え、要件によっては、スプレッドシートに出力したい、ということが増えました。
# やったこと
– Atehna向けのSQLを置いておくと日次でスプレッドシートが更新されていくやつ
– SELECTされる1列目はシート名というルールにし、group by 単位でシート作成
– SELECTした列の数だけ良い感じにシートに貼り付ける
– 数値は数値型で、文字列は文字列型でシートに貼り付けるSQLさえ書いてしまえば、それ以降の運用はエンジニアから手が離れる、というのは良い点かと思います。**システム変更依頼ではなくデータ抽出依頼にする** ことで、工数も心理的ハードルも下げられるのではないかと思ってます。
また、仕
AWS EC2 AmazonLinux2だけでLaravelのアプリをデプロイする
# 目的
– AWSのEC2 AmazonLinux2インスタンスのだけでLaravelアプリをデプロイする方法をまとめる。
# 実施環境
– ハードウェア環境
| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |# 前提条件
– 下記、または下記に準ずる方法でAWSのアカウントの登録が完了してログインできる状態になっていること。
– [AWSのアカウント作成方法](https://miriwo.hatenablog.com/entry/2020/06/03/122128)# 前提情報
– AWS EC2 AmazonLinux2のみ
AWS 上に構築した Laravel 環境での sudo php artisan 実行時に環境変数が適用されずにハマった話
AWS Elastic Beanstalk で構築した Laravel 環境で、普段から問題なく実行できていた artisan コマンドが失敗する事態に遭遇しました。
問題の切り分けに苦戦して結構ハマったので原因と解決方法を共有します。## TL;DR
– `sudo php artisan` の形で実行すると必要な環境変数が引き継がれずに失敗する。
– `sudo su -` で root ユーザーとして実行すれば問題ない。## 事象
`eb ssh` で EC2 インスタンスにログイン後、以下のように artisan コマンドを実行する[^sudo-php-artisan]もエラーが発生してしまいました。
[^sudo-php-artisan]: 導入しているパッケージの関係で権限の問題があるため `sudo` で実行しています。
“`bash
$ sudo php artisanIn ClientResolver.php line 397:
Missing required client configuration options:
region
CSVを分割してAmazon S3に保存して、 Amazon Athenaのスキャンコストを下げる(Spark利用)
# 環境
* Amazon Athena
* Spark 2.4.4
* Apache Zeppelin 0.9.0-preview1
* macOS 10.15 において、 Dockerに環境を構築# Amazon Athena の料金
> Amazon Athena は、Amazon S3 から直接データをクエリ処理します。Athena によるデータのクエリ処理に対する追加のストレージ料金は発生しません。ストレージ、リクエスト、データ転送に対して S3 の標準料金が発生します。
> Athena で AWS Glue データカタログを使用する場合は、標準の AWS Glue データカタログのレートで課金されます。[引用元](https://aws.amazon.com/jp/athena/pricing/)
* データを分割して、Athenaがスキャンする対象を明確にすることでコストを下げることができます。
# 具体例
* 発売年と製品名のデータがあるとします。
* ユーザーは、「2019年に発売した製品の一覧がみたい」などという使い方をするとします。
* データ
dockerでERROR: An HTTP request took too long to complete. と表示されるエラー
# 問題
ERROR: An HTTP request took too long to complete. と表示される。
“`
ERROR: An HTTP request took too long to complete. Retry with –verbose to obtain debug information.
If you encounter this issue regularly because of slow network conditions, consider setting COMPOSE_HTTP_TIMEOUT to a higher value (current value: 60).
“`# 原因?
EC2のメモリ容量不足?
# 解決法
停止コンテナ一括削除
“`
$ docker container prune
“`
全コンテナ一括削除“`
$ docker rm -f `docker ps -a -q`
“`
再起動“`
$ docker-compose up
“`解決!
# 参考
https
AWSでRailsを使ったサンプルアプリ作成進行状況
最近Webアプリ開発をしています。はっきりいって正直ステマに近い投稿なんですが、お察しを。
えと、AWSのIDEを使って、ほかのプログラマと共同制作を最近始めました。まだトップページのみですが、開発環境は以下のようにこんな感じです
| | | |
|:—————–|——————:|:——————:|
| 開発言語 | Ruby |
| フレームワーク | Ruby on Rails5 |
| クラウドIDE | AWS |
| データベース | sqlite3 |AWS楽ですね
無料枠であればすぐ構築できますし、メンバーに権限わたして一緒に開発進められるとりあえず、rails new~ でアプリファイル作って、そのあとにsqliteのバージョン更新をして、マイグレーションファイルの更新して
rails db…rails sでサーバー起動してちゃんと実装できているかつ
チームメンバー全員が自動デプロイできるようにする方法
プログラミングスクールのチーム開発で、最初に自分が自動デプロイ担当になって、チームの中で自分しかcapistranoでの自動デプロイができなかった。
他のメンバーが自動デプロイしようとすると、
“`ruby
Net::SSH::AuthenticationFailed: Authentication failed for user ec2-user@xx.xxx.xxx.xxx
“`
というエラーが出てしまう。この問題を今日チームで解決できたので、備忘録を書いておこうと思う。
## 結局どう解決したか
1. 自動デプロイできるメンバーがpemファイルを他のチームメンバーに共有
2. pemファイルを受け取ったチームメンバーが、pemファイルを~/.sshディレクトリに配置する#### 1. pemファイルをチームメンバーと共有する
このやり方がわからなくて、チームmtgでもみんなで頭を抱えた。
「pemファイルの共有ってどうやるんだ?」
メンバーのうちの1人がこの記事を見つけてくれた。
https://pc-karuma.net/mac-finder-show-al
【AWS VPC】依存関係エラーが発生した場合のデタッチ・削除の仕方
#エラーが発生
VPCを削除しようとしたが、下記の画像のようにエラーが発生した。依存関係の影響で削除できないらしい。エラー内容に基づいて削除しようとしても、どのように依存しているかわからず削除に手こずった。#説明
[AWSの記事]
(https://aws.amazon.com/jp/premiumsupport/knowledge-center/troubleshoot-dependency-error-delete-vpc/)に説明および解決方法が載っていた。要するに
インスタンス、サブネット、カスタムセキュリティグループ・カスタムルートテーブル、インターネットゲートウェイ・仮想プライベートゲートウェイ
が残っていると削除ができないと
DynamoDB Streamsのパラメータをいじって動作を確認する
# はじめに
DynamoDB Streamsは便利そうなのだけど、イマイチ正体が分からないので確認してみた。
Lambdaの仕組みをある程度理解していて、プログラムを書けることを前提とする。# 参考
## 通知イベント
通知されるイベントの内容を調べてみようとしたら、クラスメソッド先生が既にちゃんと調べていた。
さすが。【Developers.IO】[DynamoDB Streamで渡されるeventデータの表示タイプごとの内容をまとめてみた](https://dev.classmethod.jp/articles/dynamodb-stream-view-type/)
# 設定方法
設定方法は2種類。DynamoDB側から設定する方法と、Lambda側でイベントソースを設定する方法。
前者は、以下のような感じで詳細な設定をすることができない。
![キャプチャ2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111314/b8712b3b-d7d7-bb98-3734-c0e475a
DynamoDBをNode.jsで操作する
Node.jsでDynamoDBを触ってみたので、備忘録として残しておきます。
プライマリーキーとして、パーティションキーのみの方法と、パーティションキー+ソートキーでユニークにする方法があります。
前者を「ハッシュキーテーブル」、後者を「複合キーテーブル」と呼ぶことにします。以下、参考にさせていただきました。(ありがとうございました)
[コンセプトから学ぶAmazon DynamoDB【インデックス俯瞰篇】](https://dev.classmethod.jp/articles/conceptual-learning-about-dynamodb-index/)
[【詳解】JavascriptでDynamoDBを操作する](https://qiita.com/Fujimon_fn/items/66be7b807a8329496899)
[DynamoDB での Node.js の開始方法](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/GettingStarted.Node
LambdaLayersをLambdaで作る
# はじめに
普段私が`Lambda`を利用する際は、`chalice`を利用して`Lambda`関数の作成とデプロイをしています。
`chalice`は便利なのですが、デプロイ時に毎回`pip install`して必要な`package`を集めているみたいです。
そのため、`pandas`などの重めの`package`を利用している場合は、デプロイに時間がかかります。そこで、あらかじめ利用する`package`を登録しておく`Lambda`のサービスの`LambdaLayers`を活用します。
## 前提
`LambdaLayers`を作成する際の前提条件などです。
1. `LambdaLayers`は`packages`を`zip`で固めたファイルを利用して、あらかじめ`Lambda`が利用できる状態にすること[参考](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html)
1. `package`の配置などフォルダ構成も決まっている
1. `pandas`などの一部
CloudFormationで作るECSとAutoScalingの3分クッキング
# 前提
– gitがインストールされている
– dockerがインストールされている
– aws-cliがインストールされている# クッキング開始
まず、以下のリポジトリをクローンしてください。
https://github.com/yutaro1204/ecs-autoscaling-demoそして、付属の`ecrRepository.yaml`を利用してAWSにスタックを作成します。
parameterに指定するRepositoryNameは以降で作成するイメージと合わせる必要があります。“`shell
$ aws cloudformation create-stack –stack-name sampleECRRepository –template-body file://ecrRepository.yaml –no-disable-rollback –parameters ParameterKey=RepositoryName,ParameterValue=php_demo_image
“`このスタックにはECRのリポジトリが含まれ、ここに
railsチュートリアル格闘記Ⅲ
#環境
ruby 2.6.3
rails 6.0.3
AWS cloud9# 10.3.4 ユーザー一覧のテスト
“`
michael:
name: Michael Example
email: michael@example.com
password_digest: <%= User.digest('password') %>archer:
name: Sterling Archer
email: duchess@example.gov
password_digest: <%= User.digest('password') %>lana:
name: Lana Kane
email: hands@example.gov
password_digest: <%= User.digest('password') %>malory:
name: Malory Archer
email: boss@example.gov
password_digest: <%= User.digest('password') %><%
【基礎】Amazon Connect①(概要・電話回線システム導入)
#はじめに
業務でAWS Connectに触れる機会がありましたので、
利用者にとっては基礎的な部分になりますが、機能について整理して行きます。##変更履歴
6/15 スクリーンショットを一部修正
##Amazon Connectとは
AWS上へ容易にクラウド型PBXを構築できるサービスとなります。
単に構築するだけでは無く、ソフトフォン、チャット機能、通話録音などの、
電話に必要な機能も簡単にカスタマイズする事が可能です。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633458/8f2fc272-e709-7bb6-848c-1a62ee685ce1.png)
参考:サービス別資料(Amazon Connectより)
https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-service-cut/オンプレミスの電話回線システムと比較してみます。
一般的に考えられるだけでも以下の様な対応が必要になり
AWS Linux 2でのdocker-nginx ポートフォワード込み
# AWS Linux2 新規EC2インスタンス作成
[参考](https://qiita.com/TurkeyLeg0403/items/5f46c437c5eb74ef7517)# Docker インストール
[AWS公式のDocker導入マニュアル](https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/docker-basics.html)マニュアルにあるが一応コマンドだけ羅列。
“`bash
$ sudo yum update -y
$ sudo amazon-linux-extras install docker
$ sudo service docker start
$ sudo usermod -a -G docker ec2-user
“`# nginxインストール・起動
“`bash
$ docker pull nginx
$ docker run -d –name nginx-container -p 8080:80 nginx
“`# nginxへのブラウ
DynamoDBがどれだけ頑張れるかを実験してみる
# はじめに
初心者向けDynamoDB理解用。DynamoDBってフルマネージドでスケーラブルでサーバレスには欠かせないぜ!と言われているけど、実際どれくらい頑張ってくれるの?というところを知りたかったので実験してみた。
なお、記事中に記載した料金は目安までに。2020年6月時点のものを書いているので、今後の価格改定の可能性がある。また、記載分以外にも課金要素があるので、正確な料金を知りたければ[公式で料金計算して](https://aws.amazon.com/jp/dynamodb/pricing/provisioned/)ほしい。無料範囲を加味せず記載しているので、実際はもう少し安くなるケースもある。
# テーブル準備
テーブルはあくまでも実験用なので凝らずに作ろう。以下のHCLで“`$ terraform apply“`だ!
データ抽出の実験をしたいので、グローバルセカンダリインデックスを作っておく。
※プライマリキーのソートキーを使おうとすると、プライマリキー必須になってしまい美味しくないため、GSLを使う。なお、“`read_capacity“`と“
CodeBuild の結果をSlack に通知する (CodeBuild + Amazon SNS + AWS Chatbot)
いちいちAWSコンソールを開いてCodeBuild の実行結果を確認するのやだな…と思ったので、Slackに飛ばすことにしました:love_letter:
# やりたいこと
– CodeBuild の結果をSlack に通知したい![aws-sns-chatbot.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/d6d0625b-b351-1aa9-f392-58977423e872.jpeg)
まずSNS のトピックを作り、Chatbot で対象のトピック・通知先のSlackチャンネルを選択。
そのあとCodeBuild の通知ルールで ターゲットを対象のトピックにする、というのが大まかな流れです。## 事前準備
通知したいチャンネルがプライベートチャンネルの場合、AWS botくんを招待する必要があります。
以下のコマンドを実行すれば招待可能です。“`
/invite @aws
“`
# 作業手順
**1. [AWSコンソール](https://console.a
[AWS] CloudFront で MediaStore の CDN を構築する
# はじめに
[こちらの記事](https://qiita.com/ksh-fthr/items/64d7137409f3199557fd) の 「[まとめにかえて](https://qiita.com/ksh-fthr/items/64d7137409f3199557fd#%E3%81%BE%E3%81%A8%E3%82%81%E3%81%AB%E3%81%8B%E3%81%88%E3%81%A6)」で触れたとおり、 CDN として [CloudFront](https://aws.amazon.com/jp/cloudfront/) を利用した構成での Live 動画配信の構成を作っていく。
# 注意
本記事は 2020年6月14日 時点の情報です。
ご覧になられた時点で UI が変更されている可能性がありますので、その点ご注意ください。# 前提
– [こちらの記事](https://qiita.com/ksh-fthr/items/64d7137409f3199557fd) の構築が完了していること
# 環境
| サービス