AWS関連のことを調べてみた2020年03月19日

AWS関連のことを調べてみた2020年03月19日
目次

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上でも一応変換ができます。

“` 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’`を指定することでファイルが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の通り作る。
書いていないものはデフォルト

### トピックの設定
スクリーンショット 2020-03-19 7.10.20.png

スクリーンショット 2020-03-19 7.10.41.png

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 boto3

dynamodb = 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の使い方を解説する](

元記事を表示

Amplify apiで簡単バックエンド構築

今回は、Amplify-CLIを利用したGraphQLのバックエンドAPI構築を紹介します。
手順は[公式](https://aws-amplify.github.io/docs/js/api)を参考に。

# GraphQL/AWS AppSync
GraphQLはFacebookとコミュニティにより開発されたクエリ言語です。典型的なRESTでの大きく以下の3つの問題点を解消するために開発されました。
[GraphQL公式を](https://graphql.org/)見ると他にもメリットが記載されているようですが。

1. 過剰なデータ取得(クライアントにとって必要がないデータでも返却され不必要なリソース消費が起こる)
2. 複数URLへのアクセス(単一の動作の実現でも複数エンドポイントへのアクセスが必要)
3. フロントとバックエンドとの仕様不整合(仕様書などで規約を記載しても仕様変更に更新が追いつかない不整合がたびたび起こる)

AppSyncはそのGraphQLを使用したAWSのマネージド・サービスです。
今回は、apmlifyを利用したAppSyncのAPI構築方法をご紹介

元記事を表示

AWS Well-Architected フレームワーク

# 概要
* [AWS Well-Architected フレームワーク](https://wa.aws.amazon.com/index.ja.html)に記載されているAWSが推奨するアーキテクチャフレームワークについてまとめました
* 対象読者はアーキテクチャ設計に興味のある方です
* 一読してなんとなく雰囲気を掴み、必要に応じて参照するのが良いかと考えています

# はじめに
* フレームワークによって、現代のクラウドベースのシステムに期待する品質を評価するための一貫したアプローチと、その品質を達成するために必要な対応を提供することが目的
* [AWS Well-Architected(WA) Tool](https://aws.amazon.com/jp/well-architected-tool/?ref=wellarchitected-ws)は、AWS Well-Architectedフレームワークを使ってアーキテクチャをレビューし、測定するための一貫したプロセスを提供する
* AWS WA Tool は、ワークロードを信頼性が高く、よりセキュアかつ効率的で、コスト効率性

元記事を表示

Windows10ProでAWS SAMを使ってローカルでHelloWorld(サンプルはnode.js)

# 初めに
Windows10ProでAWS SAMを使ってHelloWorldしようと思ったら意外と大変だったので自分用メモ。
何も入っていない前提ですが、Dockerやnode等が入っている場合は飛ばしてください(特にこだわりがなければこの機会にすべて最新化をおススメします)

#### この記事ですること

– node.jsを使ってローカルでHelloWorldする

#### この記事でしないこと

– AWS上にソースをアップロードする
– node.js以外を使ってHelloWorldする

# 執筆時の各バージョン
#### GitBash
v2.25.1

#### Docker
v2.2.0.4

#### node.js
v12.16.1

#### aws sam
v0.45.0

# 必要なものインストール/設定
### Git for Windowsインストール
[Git for Windows公式](https://gitforwindows.org/)からダウンロードし、インストールする。
(特にチェック付けなくて大丈夫です)

### Dockerの

元記事を表示

Amplify auth は複数のコールバックURLに対応していない

Vueで作ったアプリケーションにAmplifyでFacebook認証機能をつけた。

ところが認証ボタンを押して見ると以下のアドレスにリダイレクトされ、「An error was encountered with the requested page.」というエラーが表示されてしまう。

`https://vueamplify-facebook1e4b7722-1e4b7722-dev.auth.ap-northeast-1.amazoncognito.com/error?error=redirect_mismatch&client_id=2ekt6keenqpntdpftetaeeqlh5`

**redirect_mismatch**??

あれこれ試してみたところ、`amplify add auth`の際に、認証後のリダイレクト先のURLを複数指定していたのが原因の様子。

## `amplify add auth` で複数のコールバックURLを指定

Amplify Consoleで`master`と`development`ブランチ用の環境が構築されているのと、あとは開発用

元記事を表示

[fondesk用bot]SlashCommandで表記ゆれに抗う

# はじめに
皆さんリモートワークしていますか?慣れてきましたか?
[前回の記事](https://qiita.com/myonoym/items/0541c0e74e0006a71870)で弊社が[fondesk](https://www.fondesk.jp/)を導入し、メンションをつけてくれるbotを開発しましたよというお話をしました。(無事にfondeskは正式採用されたようです。)

今回は、メンションをつけるために必要になる、表記ゆれ対策用の辞書を更新するSlash Commandを開発した話です。

# 関連ツール&技術
今回紹介する機能の関連項目です。

– Slack
– AWS
– API Gateway
– Lambda
– S3
– Serverless Framework
– Python3.7

# 事の発端
前回紹介のbotを導入してから、良い感じにメンションがついているのを喜んでいたのですが、(見ないふりをしていた)事態が勃発しました。そう、表記ゆれです。。

田が「た」なのか「だ」なのか、漢字で投稿されるのかカタカナで投稿されるのか等々…少

元記事を表示

ソリューションアーキテクトの有効期限が切れるため受験しましたが不合格でした(2週間後に再受験し合格)

旧試験から新試験を受ける方は気をつけてください的な記事
20200303.png
合格ラインは720のため、あと2問くらい足らず…

## 筆者のAWSスペック
– インフラの知識ほぼなし。Apache、ネットワークむずかしい…
– 昔はオンプレからAWSに移行する作業などしていました
– 今はフロントエンドしてます。たまに簡単なAWS構築(AWS/インフラ担当が他にいるため)
– 資格手当のためだけに受験
– AWSの知識が2015年くらい昔のまま
– 過去試験の成績
– 2015年 ギリギリ合格
– 2017年 再認定試験1回目不合格、2回目ギリギリ合格

## 試験前対策
– 1ヶ月間每日2〜3時間勉強
– 前回作成した試験対策メモで復習
– 前回利用した問題集550問で復習
– 最近発売された

元記事を表示

インフラCI/CDを試してみる(AWS CloudDevelopmentKit + CircleCI)

##概要
Infrastructure as Codeの勉強会にてAWS Cloud Development Kitを利用して、CircleCI上でCI/CDを行ってみた際の手順+所感メモです。
CDKについては、[こちらの公式チュートリアル](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html)を参照ください。
環境:AWS_CDK==1.28.0 python==3.7.5 npm==5.8.0
詳しくは[こちらのgithub](https://github.com/lottotto/infrastructure-as-code)で。
所感を3行でまとめると以下の通りです。

– 実際にCI/CDすることができた。インフラ部分のデプロイはジョブの実行コードはこれで大きく変わらないと思う。
– CI/CDといってもテストをしていないので、CDだけである。Python版はテストがまだできない。
– ブランチ戦略を適切に取れば、ステージングの環境も同時に作ることができそう。デプロイ戦略になりうる気がする。

元記事を表示

OTHERカテゴリの最新記事