- 1. AWS API GatewayのAPIタイプ概要
- 2. AWSマネジメントコンソールにフェデレーテッドログインしてみた。
- 3. 【AWS】CDKで出力されるテンプレートからCDKMetadataを除く方法
- 4. EC2サーバで生成した公開キーはどこからどこまでなのか
- 5. AWSが提供するサービス
- 6. AWS Lambdaのカスタムランタイムを開発する際、失敗したこと
- 7. elasticbeanstalkにcronoを設定したので、そのconfig
- 8. CloudFrontは同じURL+QueryStringでもキャッシュ応答しないケースがある
- 9. AthenaでCSVファイルからParquet形式へ変換
- 10. AWS,Azure,GCPの3大クラウドのDevOps試験に合格してみての個人的比較
- 11. Amazon CloudWatch EventsのルールでAmazon S3のキーをプレフィックス指定できた
- 12. AWS/Azure/GCP における SQL Server の高可用性パターンまとめ
- 13. ハンズオンテスト
- 14. 今!!流行りのSTUDIOでポートフォリオサイトをNoCodeで作り直してみた
- 15. ec2をターミナルで操作するときに詰まった話(fatal: Could not read from remote repository.)
- 16. URLを気軽に「www」なしにしてトラブった話
- 17. Python(boto3)でDynamoDB上のデータを更新しようとすると「ExpressionAttributeNames contains invalid key: Syntax error; key: 」となる
- 18. awsで大容量zipファイルをBasic認証かけてダウンロードさせる仕組みを組んだ
- 19. AWS CDKに触れてみる
- 20. EC2インスタンスからAWS CLIを実行する際には
AWS API GatewayのAPIタイプ概要
## 動機
AWS API Gateway を触る機会があったので、メモする。REST API と HTTP API の機能比較を簡単にまとめる。
## REST API と HTTP API の概要
[よくある質問](https://aws.amazon.com/jp/api-gateway/faqs/)から抜粋した内容を下記に記載する。
> HTTP API は次のような場合に適しています。
1. AWS Lambda または HTTP エンドポイント用のプロキシ API を構築する
2. OIDC および OAuth2 の認証を備えた最新の API を構築する
3. 非常に大規模になる可能性があるワークロード
4. レイテンシーに敏感なワークロード用の API> REST API は次のような場合に適しています。
1. API の構築、管理、公開に必要なすべての機能が含まれているセットに対して単一価格の支払いを希望されるお客様。HTTP API は REST API と比較して機能を絞っている分、低レイテンシー低コストをウリとしているらしい。レイテンシーの差異
AWSマネジメントコンソールにフェデレーテッドログインしてみた。
#はじめに
皆さん、業務でAWSは使われているでしょうか。
AWS、インフラの構築から運用までいろいろサポートしてくれていて、とても便利ですよね。
それこそインフラ担当だけじゃなくて、CloudWatchやセッションマネージャーのような環境に接続するすべての関係者にとってメリットがある機能なんかもよくリリースされています。#ところで (問題提起)
これらの素晴らしいAWSの機能って、インフラ担当ばっかりメリットを享受していて、コンサルタントや製品開発者にはあまり届いてこないことが多いです。
何故かというと、「マネジメントコンソール」を使える人間が限られているからです。
AWSはどんどんいい機能を出してくれるのに、それを使える人間が限られているのはとてももったいないですよね。
かといって、それらをいろんな人が使えるようにインターフェースを実装するのは大変ですし、AWSが機能拡張するたびに対応する必要があるのも格好が悪いです。#だったら (解決案)
AWSのあらゆる機能にアクセスできる最強のインターフェース、「マネジメントコンソール」を「AWSユーザーが割り当てられていない人」に
【AWS】CDKで出力されるテンプレートからCDKMetadataを除く方法
# TL;DR
* コマンドで制御するならこれ
“`shell
cdk synth {app_name} –version-reporting false
“`“`shell
cdk synth {app_name} –no-version-reporting
“`* 設定ファイルで管理したい場合
* cdk.jsonに`”versionReporting”: false`を加える“`json
{
“app”: “…”,
“versionReporting”: false
}
“`* 詳しいことはここの「Opting Out from Version Reporting」見てください
* [AWS CDK Toolkit (cdk)](https://docs.aws.amazon.com/cdk/latest/guide/tools.html#cli)# なぜ除きたいか
* 社内のルールでは、AWSのリソース管理は基本的にCFNテンプレート管理
* テンプレートを出荷して商用環境に適用する
* CDK
EC2サーバで生成した公開キーはどこからどこまでなのか
>cat ~/.ssh/id_rsa.pub
コマンドで作った公開キーは、どこからどこまでなのか?
###結論
ssh-rsa AAA…
から始まって、…== ec2-user@ip-000-00-00-000
までが公開キーです
GitHub で SSH keyを登録するときの参考になればと。
AWSが提供するサービス
IT未経験のスクール生が勉強したことをアウトプットします:open_mouth:
##AWSとは
AWSとはAmazon Web Servicesの略称で、Amazonが提供するクラウド型Webサービスの総称。
クラウドの基本的なサービスである、レンタルサーバー、データベース、ストレージを利用したデータの保存、バックアップをはじめ、ソフトウェアのオンデマンド配信、IoTシステムの構築、機会学習、画像認識といったAmazonが保有する最新の技術を利用することもできます。アプリケーションをWeb上に公開するためにはデプロイする必要があります。
AWSはデプロイするためのサーバを用意してくれます。##EC2
AWSが提供するサービスの一つにEC2があります。
EC2は仮想サーバといって、LinuxやWindows 、Red Hat等様々なOSの仮想サーバをすぐに実行できる環境が用意することができます。
AWS上にデプロイするための仮想サーバを作れます。
EC2はサービス名です。自分たちで立てたサーバひとつずつのことを***インスタンス***と呼びます##EC2のメリット
◼️低価
AWS Lambdaのカスタムランタイムを開発する際、失敗したこと
# 概要
とある作業にてAWS lambdaで今度はperlを動かすことになりました。
その際、perlのライブラリ`/usr/share/perl5`などが見えなかったり、コマンドが実行できなかったりしたので、いろいろ調べたことをメモしておきます。~~用意されているランタイム使えば余計な苦労しないのにね~~
# 結論
さっさと結論だけ記載すると、以下の環境のカーネルとlibcなどの基本的なライブラリが乗っているものになります。
– Amazon Linux
– イメージ – amzn-ami-hvm-2018.03.0.20181129-x86_64-gp2
– Linux カーネル – 4.14.154-99.181.amzn1.x86_64
– ami-00a5245b4816c38e6注意点として、このイメージは、EC2インスタンスを作るときに、クイックスタートとして表示される、Amazon Linuxのイメージとは別物ということです。
– Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Typ
elasticbeanstalkにcronoを設定したので、そのconfig
# Elasticbeanstalk + rails + crono
railsでcron的なものを使いたかったけど、crontabを触りたくなかったので、cronoを使うことにした.その設定ファイル(結構作るのに時間かかったので。。。)
Cronoは[こちら](https://github.com/plashchynski/crono)
I would like to use something like cron with rails, but didn’t want to use crontab, so I try to use crono(I know it may not be maintained, but…), here is the config which I used.## 環境
“`console
# rails -v
Rails 6.0.2.1
# uname -a
Linux ip-172-31-27-188 4.14.165-103.209.amzn1.x86_64 #1 SMP Sun Feb 9 00:23:26 UTC 2020 x86_6
CloudFrontは同じURL+QueryStringでもキャッシュ応答しないケースがある
## はじめに
あるAPIサービスが、CloudFront + API Gateway + Lambda という構成で稼働しており
CloudFrontは、`URL+QueryString`ごとにキャッシュし、応答速度をあげるために使用しています。## 事象
このAPIサービスには、Go/PHPそれぞれで実装されたプログラムがHTTPリクエストを送ります。
CloudFrontの設定は以下の通り。(関連設定のみ)| 設定項目 | 設定値 |
|——–|——-|
| Cache Based on Selected Request Headers | None |
| Object Caching | Customize
MinTTL:0
MaxTTL: 86400
DefTTL: 86400 |
| Forward Cookies | None |
| Query String Forwarding and Caching | Forward all, cache based on all |
| Compress Objects Auto
AthenaでCSVファイルからParquet形式へ変換
## Parquetにしたい場合
AthenaでCSVファイルを読み込んでいるとクエリによってスキャンデータ量が大きい場合があります。
例えばカラム数がかなり多いが、実際に使うカラムは少ない場合などが該当すると思います。
またCSV自体を圧縮できていなかった場合は単純にファイルサイズも減少します。## Parquetに変換
変換したい際にPythonなどを使ってCSV形式からParquetへ変換を行っていたのですが、Athena上でも一応変換(指定ディレクトリに新しいParquetファイル)ができます。“` sql:convert.sql
CREATE TABLE new_table_name
WITH (
format=’PARQUET’,
external_location=’path/to/new/files/directory’
) AS
SELECT * FROM original_table_name
“`このようにして、元々CSVを読み込んでいたテーブルから新しいテーブルを作成します。そのときに`format=’PARQUET’`を指定する
AWS,Azure,GCPの3大クラウドのDevOps試験に合格してみての個人的比較
以下の記事でAWS、Azure、GCPの3大クラウド(?)のアーキテクト試験について書きましたが、今度はDevOps試験も制覇したので同じ視点で書いていこうと思います。
[AWS,Azure,GCPの3大クラウドのアーキテクト試験に合格してみての個人的比較](https://qiita.com/yomon8/items/f812079d0ce631f73d45
)今回、取得したのは以下の3試験です。全部DevOpsというワードがついています。
– AWS Certified **DevOps** Engineer – Professional
– Microsoft Certified Azure **DevOps** Engineer Expert (※ 後述しますが試験ではなく認定名です
– Google Cloud Certified – Professional Cloud **DevOps** Engineer#「そもそもDevOpsって何だっけ?」と考えさせられる
私は普段の仕事でもいわゆるDevOpsという分野には良く関わります。CI/CDのパイプライン作っ
Amazon CloudWatch EventsのルールでAmazon S3のキーをプレフィックス指定できた
Amazon CloudWatch EventsでS3のイベントをトリガーにすることができますが、ソースに指定できるのは完全一致するバケット名とキーだと思っていたのですが、プレフィックス指定できること知って、ふぁーっ!となったのでメモ。
## イベントルールを用意する
イベントルールの作成方法は下記を参考にしました。
Amazon S3 ソースの CloudWatch イベント ルールを作成する (コンソール) – CodePipeline
https://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/create-cloudtrail-S3-source-console.htmlイベントルールのカスタムイベントパターンは下記のように指定するのですが、**`my-bucket/my-key` オブジェクトのイベントのみ**を検知してトリガーされます。単一のオブジェクトではなく、`detail.requestParameters.key` 配下のオブジェクトすべて(例えば`my-key/*` )を対象にしたいケ
AWS/Azure/GCP における SQL Server の高可用性パターンまとめ
## はじめに
各クラウドごとに以下のパターンを記載しています。* マネージドサービスを利用する場合
* VM で Always On Availability Groups を構成する場合
* VM で Always On Failover Cluster Instances を構成する場合## AWS
### Amazon RDS with SQL Server Always On Availability Groups
RDSのマルチAZ配置では以下のバージョンおよびエディションで Always On AG をサポート。* SQL Server 2017:Enterprise Edition 14.00.3049.1以降
* SQL Server 2016:Enterprise Edition 13.00.5216.0以降上記以外のSQL Server 2012 以降の Starndard Edtion および Enterprise Edtion では
データベースミラーリングによるマルチAZ構成となる。**Microsoft SQL ServerのマルチA
ハンズオンテスト
#### 参考に設定
https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-sns-ses-dynamodb/### dynamoDB
参考URLの通り作る。
書いていないものはデフォルト### トピックの設定
Lambda
今!!流行りのSTUDIOでポートフォリオサイトをNoCodeで作り直してみた
# STUDIOとは
**「コードを書かずに、Webサイト制作を完結」** できるという国産デザインツール。
![FireShot Capture 017 – STUDIO – コードを書かずに、Webサイト制作を完結。 – studio.design.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62822/59f42be6-e530-07e8-7c14-741b4bb5469e.png)
「デザインの後のコーディング作業や、サーバーのセットアップは必要ありません。」
「[STUDIO](https://studio.design/ja)でデザインした画面は、瞬時にコードに変換されそのまま公開が可能です。」
という素晴らしさ!!そして弊社[no plan inc.](https://noplan-inc.com)の案件でもよく使うようになりとても便利に使わせてもらっていました。([no plan株式会社の技術スペック](https://note.com/noplan_inc/n/n5
ec2をターミナルで操作するときに詰まった話(fatal: Could not read from remote repository.)
[(デプロイ編①)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで](https://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e)
を参考に、AWSにrailsアプリをあげようとしていたときの凡ミスについて。##エラー箇所について
上記の記事で
“`
[~]$ ssh mumu_key_rsa
“`
でログインした後に、“`
[ユーザー名|~]$ vim .gitconfig
“`で、諸々の設定を記述するところがある。
そこで、記事通り、下記のように設定すればよかった。
“`
[user]
name = your_name (#gitに登録した自分の名前)
email = hoge@hoge.com (#git登録時の自分のメアド)[alias] (#これはお好きに)
a = add
b = branch
ch = checkout
st = status[color] (#色付け)
ui = true# githubの場合
URLを気軽に「www」なしにしてトラブった話
# 背景
Webサイトの要件決めの時に、URLを「www」なしのZone apex(ドメイン名そのもの)で気軽に了承してしまい、環境引き渡しが遅れてしまった話。# 環境(初期構築時)
+ AWS
+ ELB+EC2
+ お名前.com# 問題点
ELBのDNS登録はCNAMEレコードを使う必要があるが、Zone apexのようなサブドメインなしのドメインそのものの場合、CNAMEにマッピングすることはできません。
今回の環境では使用していませんが、CDNも同様の制約があります。
この制約は何処でドメインを購入しても同様です。その辺りの詳細な話は、以下の記事で簡潔にわかりやすくまとめてありました。
https://qiita.com/haruyosh/items/95b20bef7beb63d200ab# 解決方法
Route53のAliasレコードならZone apexをマッピングすることは可能です。
幸いなことにネームサーバをお名前.comからRoute53に変更するのは、お名前.comのドメインNaviネームサーバー設定で、ネームサーバ情報をRoute53のものに変
Python(boto3)でDynamoDB上のデータを更新しようとすると「ExpressionAttributeNames contains invalid key: Syntax error; key: <キー名>」となる
## 事象
AWS上に以下のようなDynamoDBテーブルがある。
– テーブル名:`client_id_master`
– パーティションキー:`client-id`(str)
– アトリビュート:
– `device-time-stamp`(int)今回、このテーブル上のデータの`device-time-stamp`列の値を、Python(boto3)から`update_item()`メソッドにより更新する以下のようなコードを作成した。
“`py
from datetime import datetime
import boto3dynamodb = boto3.resource(‘dynamodb’)
now_unix_time = datetime.now().strftime(‘%s’)
clientId = ‘ef5b728f4a74aed’
option = {
‘Key’: {‘client-id’: clientId},
‘UpdateExpression’: ‘set #device-time-stamp = :timeStam
awsで大容量zipファイルをBasic認証かけてダウンロードさせる仕組みを組んだ
# 記事内容を三行で
– EC2とフレームワークを利用してやろう
– サーバレスでは組めない(組めるけど容量制限でNG)
– API Gateway便利(難しい)# 概要
容量が大きいファイルを共有するとき、メールではだいたい8MBを超えるとメールサーバなのでブロックされたりします。ブロックされてなくてもそもそも大容量のファイルをメールで送るにはサーバへ負荷を与えたりなど結構迷惑かなと思ったりします。なので、ストレージサービスを利用したいですが、Gigaファイル便だとセキュリティ規約で怒られそうだし(過去よく使ってましたが)、GoogleDriveはGoogleアカウントがないと共有に不安(URLを知っていないとアクセスできないとはいえ、全員がアクセスできる状態は厳しい)があります。
ほしいのは、一時的にID&パスをかけて、大容量ファイルをシェアできるURLがほしいだけなのに…(おわったら削除 or タイムリミット過ぎたら非公開になるとか)
そこで、最近awsのSAAに受かったことだし、復習もかねてawsで楽にファイル共有する仕組みできないかなとチャレンジしたのがこの記
AWS CDKに触れてみる
# はじめに
CDKを使ってLambdaを作成してみるところまでを目標とします。# 環境
今回はCloud9を使用します。“`
$ python –version
Python 3.6.10
$ cdk –version
1.27.0 (build a98c0b3)
“`CDKが入っていなければ以下のコマンドでインストールします。
“`
$ npm install -g aws-cdk
“`# やってみる
## CDKを使う準備
まずCDKを使うために色々準備します### プロジェクトフォルダを作成
“`
$ mkdir hogehoge
$ cd hogehoge
“`### CDKの初期設定
初期設定をします“`
cdk init –language python
source .env/bin/activate
pip install -r requirements.txt
“`AWSユーザーデータの利用設定も行う
“`
$ cdk bootstrap
Bootstrapping environment aws
EC2インスタンスからAWS CLIを実行する際には
個人的メモになります
#インターネットアクセスかエンドポイントが必要
## 対応策
1. EC2インスタンスにパブリックIPを付与する
1. NATゲートウェイを使用する
1. エンドポイントを使用する## EC2インスタンスにパブリックIPを付与する
- 自動割り当てパブリック IPを利用
- ElasticIPを付与パブリックサブネット上に踏み台サーバを配置する構成は、最近は少ないのではないだろうか
## NATゲートウェイを使用する
プライベートサブネット上のEC2インスタンスではこちらの構成
ただ、アウトバウンドを絞りたい為、簡単にインターネットに出れない場合も## エンドポイントを使用する
CLIで実行するサービスのエンドポイントが必要
### EC2の場合
> インターフェースエンドポイント
> com.amazonaws.ap-northeast-1.ec2### S3の場合
> ゲートウェイエンドポイント
> com.amazonaws.ap-northeast-1.s3## 参考
[AWS PrivateLinkの使い方を解説する](