- 1. Amplifyアプリのリダイレクト設定をaws-cliで行う
- 2. 【サーバーレス初心者向け】Serverless Framework + SwaggerでWeb APIを作る!第3回 Dynamo編(全3回)
- 3. SQSでCognitoユーザー一覧をS3に作成するキュー処理を行う関数とAPIをLambdaにSAMでデプロイする
- 4. 【JavaScript】String配列の要素をキーとするオブジェクトを作成する方法
- 5. AWSで割とモダンな技術使う大学生日記①
- 6. NUXTJS公式:S3 と CloudFront を使用して AWS へデプロイするには?の補足
- 7. AWS Fargate サービスを Terraform で構築、 コマンドラインからデプロイ
- 8. QuickSightのDatasourceをCLIで操作した
- 9. 【AWS】Cognito + Amplifyでオリジナルのサインアップ・サインイン・サインアウト画面を作成する
- 10. マネコンからRDSを作る時に迷ったこと
- 11. ライブラリを活用したPythonを気軽にAWS Lambda関数にする
- 12. AWS SAA学習 1分でSQS
- 13. AWS Organizations の一括請求と誤請求
- 14. コマンド1発でAWSに極小構成のWebサーバー(SSL/TLS対応済み)を構築したい
- 15. 雰囲気でEventBridge使ってたらS3PutでECSタスク起動するチュートリアルで詰まった件
- 16. AWS公式『現代的なウェブアプリケーションの構築』ハンズオンのハマリどころ
- 17. カーネルを一時的に変更できるgrub2-rebootが便利。結局GRUB2のことをいろいろ調べたよ
- 18. 【AWS SOA】Systems Managerでインスタンスを起動させよう
- 19. 【AWS】AWS CDKでECRを構築する
- 20. 【VueSlsApp】LambdaでPYTHONPATHを指定して外部ライブラリをシンプルに使う
Amplifyアプリのリダイレクト設定をaws-cliで行う
create-react-appとamplify-cliでアプリを作成していたところ、[ここ](https://docs.aws.amazon.com/amplify/latest/userguide/redirects.html#redirects-for-single-page-web-apps-spa)をみてリダイレクトの設定をしようと思ったのですが、AWS Consoleからしかできなくて調べました。
amplify-cliの設定でうまくやる方法が無いようでした[^1]が、aws-cliではできました。### 方法
まずリダイレクトのルールを書いたJSONファイルを作成します。
~~~json:custom-rules.json
[{“source”: “^[^.]+$|\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>“, “status”: “200”, “target”: “index.html”}]
~~~以下のようにappIdを指定してコマンドを実行します。
~~~
【サーバーレス初心者向け】Serverless Framework + SwaggerでWeb APIを作る!第3回 Dynamo編(全3回)
# はじめに
こんにちは!
本記事は先日公開した本記事は先日公開した[【サーバーレス初心者向け】Serverless Framework + SwaggerでWeb APIを作る!第2回 WAF適用編](https://qiita.com/nekoze-climber/items/92916700b9375690c1ef)の続きとなります。前回はWAFを適用し、特定のIPアドレスにのみAPI Gatewayへのアクセスを許可するようにしました。
第3回となる今回は、Lambda関数からDynamoDBにアクセスするAPIのロジック部分を実装したいと思います。
過去の記事はこちら
– [【サーバーレス初心者向け】Serverless Framework + SwaggerでWeb APIを作る!第1回(全3回)](https://qiita.com/nekoze-climber/items/30ca7da8d86629d1e50c)
– [【サーバーレス初心者向け】Serverless Framework + SwaggerでWeb APIを作る!第2回 WAF適用編(全3回)
SQSでCognitoユーザー一覧をS3に作成するキュー処理を行う関数とAPIをLambdaにSAMでデプロイする
日本語が不自由なタイトルになりましたが順に設定していきます。
構成図は以下のとおりです。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/36723717-c969-cbe0-73e3-4b139d0c1c44.png)
### AWS-CLIのインストールとIAMの設定
“`
$ brew install awscli
$ aws configure
AWS Access Key ID [None]: ************
AWS Secret Access Key [None]: ************************
Default region name [None]: ap-northeast-1
Default output format [None]: json
“`### SAMのインストール
※ Dockerも必要になるためインストールと起動をしてください。“`
$ brew tap aws/tap
$ brew ins
【JavaScript】String配列の要素をキーとするオブジェクトを作成する方法
# はじめに
ループしながら、配列内の要素をキーとするオブジェクトを作成する方法を紹介します。
# 方法
“`javascript
const array = [‘key1’, ‘key2’, ‘key3’,]const createObj = (array) => {
const obj = new Object();
array.forEach(item => (Object.defineProperty(obj, item, {
enumerable: true, // ループのために必要!
value: ‘ここに値’
})));
return obj;
}console.log(createObj(array));
// {key1: ‘ここに値’, key2: ‘ここに値’, key3: ‘ここに値’}
“`オプションとして設定する、`enumerable: true`が重要です。
これがないと動きません。# まとめ
配列内の要素をキーとするオブジェクトを作成することができました。
AWSで割とモダンな技術使う大学生日記①
## 前置き
terraformで構成しようとしたが、まずはAWSを理解するためコンソールから構築|使用技術 |
|:———————————–|
|Laravel6.x |
|AWS ECS(Fargate), RDS, ElasticCache |
|Docker, docker-compose |## ネットワーク構成
VPCは10.1.0.0/16を利用。
サブネットの利用感は下記みたいな感じ| サブネット | 用途 |
|:—————–|——————:|
| 10.1.0.0/24, 10.1.1.0/24|Publicサブネット。LBに使うサブネット |
| 10.1.2.0/24, 10.1.3.0/24|Privateサブネット。LBからECSに行くサブネット |
| 10.1.4.0/24, 10.1.5
NUXTJS公式:S3 と CloudFront を使用して AWS へデプロイするには?の補足
# はじめに
※画像多めです
公式ドキュメント内の`AWS: S3 バケットと CloudFront Distribution の設定`の参考記事が古く、そのままの手順では動かなかったので、画像多めで手順をまとめたいと思います。[(公式ドキュメント)S3 と CloudFront を使用して AWS へデプロイするには?](https://ja.nuxtjs.org/faq/deployment-aws-s3-cloudfront/)
[(参考記事)S3 と CloudFront をセットアップするためのチュートリアル](https://reidweb.com/2017/02/06/cloudfront-cdn-tutorial/)(次の記事でデプロイをdocker-composeコマンド1つでできるようにカスタマイズする記事を書く予定です。)
# 前提
– AWSアカウントを作成済み
– Route53に作成予定のドメインを設定済み
– サブドメインを作成して公開する# AWSの環境準備
S3、CloudFront、Route53、Certificate Manag
AWS Fargate サービスを Terraform で構築、 コマンドラインからデプロイ
# 動機
[【AWS】 Fargate CLI + Terraform で Docker コンテナを動かす簡単なチュートリアル](https://qiita.com/items/512ad160fb78e421214c) というのを書いたんですが、下記の問題点を感じました。
– Fargate CLI のインストールが若干手間。
– Fargate CLI を使うと、 Terraform だけで完結しないため、一部ハードコーディングが必要になる。
– Fargate CLI は冪等性が無い。
– SSL 証明書周りで、どうしても手間がかかる。よって、最近は
– インフラ構築は Terraform に任せる
– デプロイは AWS CLI でやる
– 環境変数は `.env` 経由で読み込むとしています。
Terraform は長くなるので aws-cdk とかに移行しようとしたのですが、 CloudFormation は ECS に適用するのは難しいことが分かったので、 Terraform の方が確実だとなりました。
# Terraform
`”subnet-xxx
QuickSightのDatasourceをCLIで操作した
# 背景
QuickSightで作成するAnalysis、Dashboardなどユーザによって作成したユーザでないと何も
できない。それらをCLIにて操作して変更を加えたらいろいろできることを試してみた。
以下Datasourceの権限追加した時の操作です。# DataSourceの確認とユーザの権限追加
– ユーザのリストを出して権限など確認する。
“`
aws quicksight list-users –aws-account-id ACCOUNT_ID –namespace default –region us-east-1結果:
{
“Status”: 200,
“UserList”: [
{
“Arn”: “arn:aws:quicksight:us-east-1:ACCOUNT_ID:user/default/xxxxxxxxxxxxx”,
“UserName”: “xxxxxxxxxxxxx”,
“Email”: “xxxxxxxxx
【AWS】Cognito + Amplifyでオリジナルのサインアップ・サインイン・サインアウト画面を作成する
# はじめに
ユーザ管理基盤の実装というのはいつだって考えることや懸念するセキュリティリスクが多くてめんどくさい。。。
というわけでAWSが提供するフルマネージドなユーザ基盤の[Cognito(コグニート)](https://aws.amazon.com/jp/cognito/)と[Amplify(エンプリファイ)](https://aws.amazon.com/jp/amplify/)のAuth SDKを使って~~手抜きで~~簡単にログイン認証基盤を作ろうと思い立ったのですが、一番ラクそうだった[Cognitoが予め用意している認証UIは日本語対応不可](https://www.slideshare.net/slideshow/embed_code/key/2cEJN3Tcx0GDI4?startSlide=41)だったためオリジナル管理画面を作るしかない…ということに。
いざオリジナルのユーザ管理画面を作成するぞ…と思い立ったら結構めんどくさくて忘れそうだったので環境構築から実装までの手順をまとめてみました。
## システム構成
今回構築するシステム構成図をま
マネコンからRDSを作る時に迷ったこと
最近はもっぱらTerraformばかりで、リソースをマネジメントコンソールから作ることがなかったので、久々にマネコンを使った時に迷ったことを書きまーす。
##何で迷ったのか
Single-AZ構成でRDSを作成しようとした時に、配置するサブネットにAZ指定を指定していなかったために、RDSのサブネットグループの指定ができなかった。#Region,AvailabilityZone,VPC,Subnetの違い
RDSの内容だが、Region,AvailabilityZone,VPC,Subnetの違いは意識的に覚えておかないと初心者のうちは苦労をする。
“`
リージョン/AZが物理的な区分であるのに対し、VPCとサブネットは論理的な区分
“`
#サブネットグループはRDS特有の概念
サブネットグループのことをただのサブネットと思い込んですすめると後で混乱する。“`
サブネットグループはサブネットだけを指すのではなく、RDSインスタンスが配置されうるVPCサブネット群をグループ化したもの
“`————————————-
ライブラリを活用したPythonを気軽にAWS Lambda関数にする
# 課題
データを分析してまとめたりするのは、Pythonでライブラリを利用するのが便利です。よく使うのは Numpy, Matplotlib, Pandas, Seaborn。
Jupyter Notebookでいろいろ分析を試行錯誤して、こんな処理をするといいというのが決まったらスクリプト化して毎日自動で走らせたくなります。
毎時間ごとにスクリプトを走らせたりするにはAWS Lambdaがお気軽。サーバのメンテなどやらずに済みます。しかも安い。
でもAWS LambdaのPythonでライブラリを使おうとすると、[ディプロイパッケージを作って](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/python-package.html)あげないといけません。しかもNumpyなどコンパイルが必要なライブラリを使うなら、Amazon Linuxの環境などが必要になり面倒な感じです。
# Cloud9 で気軽に開発環境を立ち上げる
AWS Cloud9 はEC2にサーバを立てたうえで、手元のPCのブラウザからアクセスして開発環
AWS SAA学習 1分でSQS
#よく聞かれる問題
AWS SAAについて勉強中なのでよく聞かれる問題についてメモです。アウトプットすることによって覚えることが目的です。
違っていたら申し訳ないです。
##Q.1 メッセージ重複しておくっれてくるけどなんで?
A.メッセージを送信した後に削除していない可能性あるよ〜明示的に削除しましょう。
##Q.2 ショートポーリングとロングポーリングの違いについて
A. ショートポーリングが空のメッセージをたくさん送るから注意
ロングポーロングに設定すれば、待ち時間が発生する分空のメッセージが減ります。
##Q.3 標準キューとFIFOの違いについて
A. 標準キューは順番を守らない!
FiFOは順番を守る!
AWS Organizations の一括請求と誤請求
# 1. はじめに
AWSの個人用アカウントは完全無料で使い続ける方針なのに請求が来た。
なんですとー!?
しかも支払用アカウントでなく一括請求の子アカウントに来るとかありえない。放置で。
放置していたら横文字のメールが来たけど横文字読めないから華麗にスルー。
そして忘れた頃に、AWSから誤請求でしたと訂正が入った話。# 2. できごと
時系列で発生した事象を記載します。
## 2.1. 何故か請求が来た
無料のはず以前に、そもそも一括請求しているのに子アカウントに請求が来るとかありえない。
(全ての支払いは一括請求の親アカウントに請求されます)
念のため一括請求出入りの履歴を確認するときちんと入っている事を確認。問題無い。
放置しましょう。
![bill.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96018/783f8b24-29a2-bd3f-d231-466b90e416bd.png)## 2.2. 金払えメールが来た
横文字で読めないし華麗にスルーしていました。
`
コマンド1発でAWSに極小構成のWebサーバー(SSL/TLS対応済み)を構築したい
「とりあえず動けばいい。お金払いたくない。ドメインとかSSL証明書設定めんどい。ロードバランサーとかいらん。」という忙しくてケチな人向け。
# なにする
SSL/TLS対応済みのWebサーバーの極小の構成をささっと作ります。CloudFormationを使います。要点をつかめばDockerなどとの組み合わせで、コマンド1発でWebサーバーとそのインフラを構築、削除できます。
今回書いたコード等:
https://github.com/ponsea/aws-minimal-webserver## 要点
– サーバーはEC2インスタンス1個のみ
– WebサーバーのURLのホスト名は適当になるがHTTPSで接続できる。(自前でドメインや証明書の用意をする必要無し)
– このようなURLになる => `https://xxxxxxx.execute-api.ap-northeast-1.amazonaws.com/`
– サーバーにSSHできる
– ベース課金はほぼEC2のインスタンスだけ(のはず)
– 今回使用するCloud MapのNamespaceで月10
雰囲気でEventBridge使ってたらS3PutでECSタスク起動するチュートリアルで詰まった件
# 前提
ぜんぜんわからない。俺は雰囲気でAWSをやっている。# この記事の内容
[チュートリアル: ファイルが Amazon S3 バケットにアップロードされたときに Amazon ECS タスクを実行する](https://docs.aws.amazon.com/ja_jp/eventbridge/latest/userguide/eventbridge-tutorial-ecs.html)を斜め読みして、
S3 PutでECSタスク起動しようとしたら詰まったので、最初からちゃんとやった。
そして、やっぱりチュートリアルは真面目にするべきだと反省した。# 作業メモ
1. [Fargate を使用して Amazon Elastic Container Service (Amazon ECS) の使用を開始
](https://ap-northeast-1.console.aws.amazon.com/ecs/home?region=ap-northeast-1#/firstRun)ってのを用意してくれてたから、それを雰囲気で進める。
2. firstRunで作るFar
AWS公式『現代的なウェブアプリケーションの構築』ハンズオンのハマリどころ
AWSは、AWSのサービスを活用した実践的なハンズオンコンテンツを多数公開しており、
日本語化もされています。アマゾン ウェブ サービス (AWS) の実践的チュートリアル https://aws.amazon.com/jp/getting-started/hands-on/
社内向けにコンテナやAPI Gateway初学者向けのハンズオン教材を探していたところ、
ちょうどいいチュートリアルをみつけました。現代的なウェブアプリケーションの構築 https://aws.amazon.com/jp/getting-started/hands-on/build-modern-app-fargate-lambda-dynamodb-python/
このチュートリアル、
– **ECS/Fargateを活用したコンテナアプリケーションの公開**
– **Codeサービスを活用したCI/CDパイプラインの構築**
– **Amazon API Gatewayを活用したAPIの公開**
– **データストアとしてDynamoDBの利用**
– **Cognitoを活用した認証処理の追加
カーネルを一時的に変更できるgrub2-rebootが便利。結局GRUB2のことをいろいろ調べたよ
# 1. はじめに
Linuxを使っていて「新しいカーネルモジュールをインストールしたら起動しなくなった」「カーネルに渡すブートオプションを変更したら起動しなくなった」という経験をしたことがあるだろうか。このような状況で便利なのが、次回起動時だけカーネルを変更する**grub2-reboot**コマンドだ。続けて再起動すると元のカーネルに戻るので、コンソールアクセスが制限されているクラウドでとくに便利だ。またテスト目的で複数カーネルを切り替えるときにも役に立つ。
意外に知られていないコマンドなので紹介しようと考えていたが、調べていくうちに結局以下のことを書くことになってしまった。
* GRUB2の設定ファイルと仕組み
* BIOSとUEFIにおける設定ファイルの違い
* RHEL7系とRHEL8系の設定方法の違い
* デフォルトカーネルを変更する方法
* 一時的にカーネルを変更する方法### 1-1. モチベーション(記事の目的)
* デフォルトカーネルの起動に失敗したとき、リカバリーにはコンソールログインが必要だが、クラウドではコンソールログインできないことがある
*
【AWS SOA】Systems Managerでインスタンスを起動させよう
#はじめに
現在AWS SOA試験対策のため、色々勉強しています。今回はSOAによく出るとされるSystems Managerを取り上げたいと思います。私はSAAはすでに合格しているのですが、SAAにはあまりこちらのサービスは登場しないため、他のサービスと比べて試験対策向けの記事が少ないです。ひとまずSystems Managerでインスタンスを起動させる所まで進めていきたいと思います。#Systems managerとは?
AWSでインフラストラクチャを可視化し、制御するためのサービス。Systems Managerを使用すると、AWSリソース全体の運用タスクを自動化が可能。Amazon EC2インスタンス、Amazon S3バケット、Amazon RDSインスタンスなどのリソースをアプリケーションごとにグループ化し、運用データを表示できる。#手順
##SSM Agentを開くため、EC2インスタンスの作成
AMIで「Amazon Linux 2 AMI」を選択。次のステップに進む。
![スクリーンショット 2020-09-05 10.25.25.png](https://q
【AWS】AWS CDKでECRを構築する
みなさんAWS CDK使っていますか?
私はCFnを使用していたのですがYAMLで書くのがいろいろ辛くなってきたので、最近AWS CDKに乗り換えましたという訳で今回は、AWS CDKを使ったECRの構築方法を書いていきたいと思います
# 環境
![language](https://img.shields.io/badge/language-python-blue.svg) ![python3.8](https://img.shields.io/badge/python-^3.8-blue.svg) ![pipenv](https://img.shields.io/badge/package_manager-pipenv-blue.svg)
# 前提
以下のコマンドがインストール済み
– pipenv
– aws-cdk# ディレクトリ構成
“`
.
├── Pipfile
├── Pipfile.lock
├── README.md
├── app.py # CDKのPython用メインスクリプト
├── cdk.json # CDKのコンフィグ
├── cd
【VueSlsApp】LambdaでPYTHONPATHを指定して外部ライブラリをシンプルに使う
注:本記事はnote記事の転載です。内容の更新があった場合noteのほうを更新します。qiita記事が古くなってきている場合、noteもご確認ください。
https://note.com/thiroyoshi/n/nfcb0be8c0a22
—
こんにちは。thiroyoshiです。
今回は、LambdaでPythonライブラリを使うときのちょっとしたテクニックを紹介したいと思います。これをVueSlsAppに組み込みました。見た目などは何も変わらないですが、ソースがシンプルになるのでオススメです。
VueSlsAppのことをご存じない方は、以下の紹介記事とマガジンからどうぞ。
https://note.com/thiroyoshi/n/na16112b4ec1bデプロイしてあるものは、以下から実際に触ってみてもらえます。
https://vueslsapp.thiroyoshi.com/VusSlsAppのリポジトリは以下です。
https://github.com/thiroyoshi/vueslsapp**目次**
– LambdaでPythonライブ