- 1. エラー内容
- 2. 原因
- 3. 解決策
- 3.1. AWSでチーム開発をするための環境構築
- 3.2. Amplify Vue.jsアプリのフロントエンドからAWSリソースに直接リクエストしてみた
- 3.3. 【個人開発】バイト先のシフトアプリを作ったお話
- 3.4. ローカルの公開鍵をAWSに登録する
- 3.5. Amazon Route 53 Resolver DNS Firewall 検証
- 3.6. 【AWS】EC2踏み台サーバー経由でプライベートサブネットのDBに接続する
- 3.7. Amplifyでteam-provider-info.json’ does not existが発生したので解決してみた
- 3.8. PythonでRemoEから消費電力を取得する方法
- 3.9. 【Node.js】LINE MessageAPIで作った天気予報アプリをAWSでデプロイしてみる!
- 3.10. 【AWS CDK】cdk deploy, cdk destroyの `(y/n)?`を上書きする
- 3.11. FirebaseのAuthenticationのメールアドレス確認の文章を変更する方法
- 3.12. Fargate 環境のタスクにNew Relic Infrastructure エージェントをサイドカーとして設定する
- 3.13. AWSアソシエイト試験に向けて12(AWSにおける疎結合とサーバレス)
ゲーム開発するにあたってやることをまとめる。
前回の記事の続きから、ゲーム開発をしたいと思い、特にクラウドでの部分を勉強したいと思うので、その備忘録を書くことになりました。
必要な物 AWS
goofys の –use-content-type オプションが限られた拡張子でしか有効にならない問題の解消方法
# 問題
Amazon Linux 2 上で [goofys](https://github.com/kahing/goofys) を使ってマウントした S3 バケットにファイルをアップロードし、これを直接ダウンロードさせる場合、 S3 オブジェクト保存時に指定された Content-Type 設定が利用される。
しかし、何のオプションも渡さずに goofys で S3 オブジェクトをマウントした場合、デフォルト値として `binary/octet-stream` が利用されてしまい、予期せぬ挙動が起こることがある。 例えば PDF ファイルが binary/octet-stream 形式だと、ブラウザによっては別ページで開かずにダウンロードしてしまう。
これを解消するために、goofys の実行時に `–use-content-type` オプションを利用することができる。 少し古いが、以下の記事を参照。https://dev.classmethod.jp/articles/goofys-auto-setting-metadata-content-type/
これを付けてお
Amazon Elasticsearch Serviceで特定のIPからのみアクセスを許可する2つの方法
## はじめに
Amazon Elasticsearch Serviceで特定のIPからのみアクセスを許可する方法を紹介します。
調べた限り、大きく以下の2つの方法があるようです。1. VPCに配置してセキュリティグループを設定する
2. IAMポリシーで設定する## VPC配置してセキュリティグループを設定する
#### 設定方法
Elasticsearchドメイン作成のStep3でネットワーク構成を選択することが出来ます。
ここで、「VPCアクセス」にすると、VPC、サブネット、セキュリティグループの設定が行えます。
セキュリティグループにIPアドレスを登録することで、アクセスを制限することが出来ます。![スクリーンショット 2021-06-21 22.46.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/217116/6912e00a-9eb8-16af-da96-79b85fbae76b.png)
#### メリット
通信がVPC内で完結するので、パブリックで使うよりも安全です
cloud9 とは
## 勉強前イメージ
イメージ的には
ブラウザでプログラムかけるやつって感じ## 調査
### cloud9 とは
ブラウザ上で使えるIDE(統合開発環境)で、実行からデバッグまで可能です。
様々な言語の開発環境がパッケージ化されているため新たに開発環境を構築する必要がありません。### cloud9 のメリット
– ブラウザのみでコードが記述可能
local環境を自分で1から作らなくても
ブラウザがあれば、少し設定を行えばすぐに使用することが出来ます。– 追加費用がかからない
cloud9は、EC2を使用するので、EC2の費用だけで
cloud9の費用はかかりません。– リアルタイムに共同に編集ができる
リアルタイムに反映されるので、ペアプロをすることが出来ます。
また、チャット機能もあります。– ターミナルでの作業も可能
IDEの機能にターミナルが組み込まれていてsudoも使用できます。
### cloud9を使ってみる
– 環境の作成を始める
cloud9のサービスに行って環境を作成します。
![1Welcome to AWS Clou
Amplify functionをtypescriptで書くよ
今回は、[公式](https://docs.amplify.aws/cli/function/build-options)の手順に従ってamplify functionをtypescriptで書こうと思います。
# Functionの追加
この手順では、functionの名前を「generateReport」としているので合わせます。適宜読み替えましょう。“`
$ amplify add function
Using service: Lambda, provided by: awscloudformation
? Provide a friendly name for your resource to be used as a label for this categor
y in the project: generateReport
…略…
“`
手順では“`amplify function add“`と書かれてますが、“`amplify add function“`でもオケ。作成できると以下の場所にindex.jsが作成されます。
amplify
スケーラビリティのあるブログサービスを構築する
# 内容
この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
「冗長性のあるブログサービスを構築する(冗長構成)」のレッスンの続きです。
前回までの構成
![スクリーンショット 2021-06-21 9.54.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/790886/50bfad0b-633c-5ab8-407c-fd94769ca7b0.png)
前回の記事
https://qiita.com/zakinicof/items/a320268727f92d06a3b4
エンドユーザーから大量の通信があっても、ELBを配置しているので、2台のEC2インスタンスに対しては通信を分散して振り分けてくれる構成でした。
しかし、2台のEC2が処理しきれないほどの通信が大量発生することも想定し、Auto Scalingを設定してEC2を条件に合わせて増減してくれるように構成したいと思いま
AWSにデプロイ後ブラウザに反映されない問題(コンパイル関連のエラー)
エラー内容
デプロイ環境をherokuからAWSに移行して、ブラウザで確認したところ表示されないエラーが起こりました。そこでssh接続して、クローンしたオリアプのディレクトリにてエラーログを確認すると以下のエラー文がありました。
“`terminal
ActionView::Template::Error (Webpacker can’t find application in /var/www/projects/motivate/public/packs/manifest.json. Possible causes:
“`原因
自分はrailsのバージョン6を使用していたのですが、参考にした記事はrailsのバージョン5を使っており、その差異によってエラーが起こりました。具体的にはyarnとwebpackerが入っていないためコンパイルができないというものです。
解決策
原因にも書いた通りyarnとwebpackerが入っていないのが原因なので二つをインストールすればいいのですが適切なバー
AWSでチーム開発をするための環境構築
##全体の流れ
**AWSアカウント利用及びCode Commitの環境構築の手順**1.オーナー側設定
AWSでチーム開発する際のIAMによるアカウント設定方法2.開発メンバー側設定
AWSのCode Commitが使用できる環境を構築する※オーナーとはチームで権限を持っている人で、
それ以外のメンバーは開発メンバー側設定のみで問題ないです。#AWSアカウント利用及びCode Commitの環境構築の手順
##オーナー側設定
AWSでチーム開発する際のIAMによるアカウント設定方法
###1. AWSオーナーアカウント作成、サインイン
ルートユーザーでログインする
![スクリーンショット 2021-06-20 14.46.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/453316/d06ff516-31cd-031d-d7dc-60f29459d10a.png)
###2. 開発メンバー用のグループ作成
ログイン後、サービスからIAMを選択する
![iam.png](https:
Amplify Vue.jsアプリのフロントエンドからAWSリソースに直接リクエストしてみた
今回はAmplifyを使用して、Vue.jsアプリのフロントエンドから、AWSリソースに直接リクエストする方法を紹介します。
# きっかけ
[AWS SDK for JavaScript](https://aws.amazon.com/jp/sdk-for-javascript/)で、ブラウザからリクエストできることは知っていましたが、やり方が分からなかったので、すべてバックエンドからリクエストをしていました。
具体的には、Amplify CLIでAPI GatewayとLambda関数を作成し、Lambda関数からSDKを使用してリクエストしていました。## 複数の関数の実装が大変
特定の処理ごとに複数のLambda関数を作成していたため、実装が大変な部分がありました。
– Amplify CLIでAPI GatewayのパスとLambda関数追加
– 関数コードのコピペの繰り返しも必要
– Lambda関数ごとに作成されるIAMロールに対するIAMポリシーのアタッチ関数が増えるほど手間も増え、作業ミスも起きやすくなってしまうので、何とかしたいと思っていました。
##
【個人開発】バイト先のシフトアプリを作ったお話
# はじめに
こんにちは。Web開発が好きな情報系の学部4年生です。
3年生の夏〜秋にバイト先のシフトを管理できるWebアプリを開発して、4年生の6月くらいまで運用していたので、その経験を振り返りたいなぁと思い記事にしてみました。よかったら最後まで見てやってください:turtle:
# 背景
僕のバイト先は個人経営の小さな焼肉店でした。
忙し過ぎず、従業員もみんな優しくて、それでいてまかないまで頂けたので、とてもいい環境で働かせてもらってました。ただ、シフト提出は少し面倒だったんですよね。
1枚のシフト表に全員分の名前と1ヶ月分の日にちがプリントされていて、手書きで全ての日にちを埋めていく…といった感じでした。
スケジュールの都合が合わなければ、シフト入ってない日にわざわざ店に出向いて記入しにいくこともしばしば、、、
コロナが本格化して休業する機会が増えてきたときはスマホのメッセージでシフトを提出するようになりましたが、カレンダーアプリと見比べながら一つ一つ日にちと時間を入力して…っていうのもまぁ面倒な作業でした。他のアルバイトにもそれとなく聞いてみると、僕と
ローカルの公開鍵をAWSに登録する
自分で立てた EC2 に接続する時は、EC2インスタンス作成時に、公開鍵を登録することができます。
ただ他の人が作成した EC2 に ローカルの PC から SSH 接続する方法が分からなくて調べたのでメモ。## 1. マイセキュリティ資格情報へ移動
AWS マネジメントコンソールの 「マイセキュリティ資格情報」 をクリック。
![スクリーンショット 2021-06-22 13.48.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142797/5914929e-007a-af45-6779-129699c86216.png)
## 2. 公開鍵をアップロード
「AWS CodeCommit認証情報」タブをクリックして、「SSH パブリックキーのアップロード」から、ローカルの公開鍵ををアップロード。
![スクリーンショット 2021-06-22 13.49.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.co
Amazon Route 53 Resolver DNS Firewall 検証
こんにちは。弁護士ドットコム SRE 室のテイです。
今年(2021年)3 月にリリースされた Amazon Route 53 Resolver DNS Firewall を検証してみました。# DNS Firewall とは
DNS Firewall は VPC からのアウトバウンド DNS リクエストを保護するサービスです。保護方法は以下のとおりです。– 特定のドメイン名以外の名前解決をさせない
– 不良と判別されているドメイン名の名前解決をさせない# 作成手順
Route 53 Resolver DNS Firewall という名前ですが、作成は **Route53** ではなく、**VPC** のコンソールからです。VPC コンソール画面で「DNS FIREWALL」→「ルールグループ」→「ルールグループを作成」の順でクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260895/fe5a5d7f-13e2-9b1c-92d7-942a3
【AWS】EC2踏み台サーバー経由でプライベートサブネットのDBに接続する
#SSHトンネルが簡単
下記のコマンドでsshトンネルを作成します。(ec2-user@を忘れがち)
“`shell
ssh ec2-user@踏み台のhostname -i pemファイルのパス -L 3306:DBのhostname:3306
“`
今回は例としてmysql(aurora)に接続します。
別のシェルで、以下のコマンドでmysqlに接続します。
ホスト名を127.0.0.1ではなくlocalhostにすると、エラーが発生する場合があります。
(ソケット接続か、TCP接続かの問題らしい)“`
mysql -h 127.0.0.1 -P 3306 -u DBのユーザー名 -p
“`#接続成功!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659469/eccfb701-f923-feee-f2d3-4f0d3ce7e53e.png)バックエンドの開発の際にも、127.0.0.1でDBに接続できるので便利です。
Amplifyでteam-provider-info.json’ does not existが発生したので解決してみた
とある個人開発でAmplifyを使っているのですが、ある日`amplify pull`しようとしたら、
`File at path: ‘<プロジェクトディレクトリ>\amplify\team-provider-info.json’ does not exist`という謎のエラーが発生しました。
このエラーの再現ができたので、今回は解決方法を紹介したいと思います。# 結論
amplify\.config\local-env-info.jsonのprojectPathが実際のディレクトリと違うことでした。# GitHub issue
まずは[こちら](https://github.com/aws-amplify/amplify-cli/issues/3812)のGitHub issueを見つけたので、原因を探ってみたのですが、正直直接の原因が何かはよくわかりませんでした。とりあえず“`
I deleted everything inside of
/home/whatever/.nvm/versions/node/v12.18.4/lib/node_modules/@aws-
PythonでRemoEから消費電力を取得する方法
#目的
Nature RemoEに登録したスマートメーターから消費電力データを取得する。#方法
ざっくりの流れは以下の通りです。1. [Nature Remo Cloud API](https://swagger.nature.global/)のGET /1/appliances というエンドポイントを叩く
2. smart_meterというプロパティからepcとvalを取得する
3. 正方向の積算電力量に係数を掛けて、単位変換を行う
4. 任意の期間の積算電力量の差分をとるそれでは、コードを載せながら、それぞれ詳しく説明していきます。
####[Nature Remo Cloud API](https://swagger.nature.global/)のGET /1/appliances というエンドポイントを叩く
APIは、HTTPクライアントがNatureのサーバへHTTPSリクエストを行うことで利用します。レスポンスはJSON形式です。認証、認可にはOAuth2を利用します。
APIを利用する際には、必ず以下のHTTPヘッダを付加する必要があります。Auth
【Node.js】LINE MessageAPIで作った天気予報アプリをAWSでデプロイしてみる!
先日、Node.jsでアプリを天気予報アプリを作成しました。
https://qiita.com/Ryo9597/items/bf93618663f28e9d8f7f
この記事内ではデプロイは、`Glitch`を使いました。
https://glitch.com/
まぁ無料なわけで色々問題があります。
・プロジェクトは、利用されていないときは5分でスリープ状態になる
・4000件/1hのリクエスト制限がある(Error: 429 too many requests)ということでAWSにデプロイすることにします。
それではアーキテクチャに関してみていきましょう。## アーキテクチャ
![Architecture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/838372/479f319c-9032-4137-65d3-3aa6a37b9b5d.png)
ちなみにAWSのアーキテクチャなどを作るときは、`drawio`がおすすめです。
VSCodeから使えるので是非使ってみてください。
【AWS CDK】cdk deploy, cdk destroyの `(y/n)?`を上書きする
## はじめに
通常、`cdk deploy`、`cdk destroy`すると以下のように`(y/n)?`と表示される。
“`deploy.sh
$ cdk deploy
~~
Do you wish to deploy these changes (y/n)?
“`“`destroy.sh
$ cdk destroy
~~
Are you sure you want to delete: YourStackName (y/n)?
“`ただ、これらのコマンドを自動化する際はこの表示が煩わしいため、オプションなりで上書きする方法を調べてみた。
## `cdk deploy`
`–require-approval` オプションに `nerver` を指定する。
“`sh
cdk deploy –require-approval never
“`もしくは、`cdk.json` に `”requireApproval”: “never”` を追加する。
## `cdk destroy`
`-f` or `–force` オプションを用いる。
“
FirebaseのAuthenticationのメールアドレス確認の文章を変更する方法
## できるようになること
メールアドレス確認のテンプレートを使用せず、文章を変更できるようになります## 環境
* Amazon Simple Email Service(Sendgridでも可)
* FirebaseCloudFunctions## 大まかな流れ
1. `createUserWithEmailAndPassword` して、`auth.user` を `firebase` に作成する
2. `cloud functions` で `auth.user` が作成された時に、メールアドレス確認リンクを作成する
3. メール文章にリンクを載せて、メール配信サービスを使って送信する## コード
#### 1. `createUserWithEmailAndPassword` して、`auth.user` を `firebase` に作成する
“`js
firebase.auth().createUserWithEmailAndPassword(email, password)
.then((userCredential) => {
//
Fargate 環境のタスクにNew Relic Infrastructure エージェントをサイドカーとして設定する
#はじめに
本記事では、稼働中の Fargateの環境に New Relic Infrastructureエージェントをサイドカーに設定し、コンテナをモニタリングできるようにするまでの手順について記載しています。詳細:
https://docs.newrelic.com/docs/integrations/elastic-container-service-integration/installation/install-ecs-integration/
##前提条件
– AWS インテグレーションの設定が完了していること。
– AWS インテグレーションで、ECS サービスをモニターする設定にしていること。参考:
https://docs.newrelic.com/jp/docs/integrations/amazon-integrations/get-started/connect-aws-new-relic-infrast
AWSアソシエイト試験に向けて12(AWSにおける疎結合とサーバレス)
## はじめに
疎結合及びサーバレスの分野はWell-Architected Frameworkでは
– 信頼性……疎結合
– パフォーマンス効率……サーバレスの領域にありベストプラクティスではそれぞれ
– コンポーネントの疎結合
– サーバーではなく、サービスの領域になる。
## 疎結合とは(なぜサーバレスなのか)
疎結合とサーバレスは相互依存……というより疎結合にするためにサーバーレスを求め、サーバーレスを求めると疎結合になるという関係性にある。
じゃあなぜそうなのかを簡単に押さえてみる。### 疎結合とは
ざっくりいうと、コンポーネント間は連携はしているが相互依存度は低いもしくは0であるような状態のことをいう。
つまり、コンポーネントは基本的には独立している状態に近い。
これはで1つのコンポーネントが潰れることで、他のコンポーネントも連鎖的に障害となり結果サービスが停止してしまう事態(単一障害点)を避けることにもつながる。
AWSにおける疎結合に関連する主なサービスは– Lambda……サーバーインスタンスで直接連携するのではなく、Lambdaのトリガ