AWS関連のことを調べてみた2019年12月22日

AWS関連のことを調べてみた2019年12月22日
目次

AWS Certified SAA を受けてみた

## 概要
[AWS Certified Solution Architect Associate(SAA)](https://aws.amazon.com/jp/certification/certified-solutions-architect-associate/)を受験し、合格しました。以下はその記録です。

## 経緯
~~会社の偉い人に「お金出すから受けてみたら?」と言われたので~~ 業務で使うことになっていきそうだったからです(その時点では未経験でした)。

## 前半
8月くらいに受験を考え始め、Udemyでそれっぽいハンズオンのコースを受講しました。それに満足し試験を受けるのをすっかり忘れていました。

12月になり、今年中にとっておこうと思い立って試験を予約、受験することにしました。試験の予約が難しかったです。日程や立地の都合が良かった[銀座の歌舞伎座タワー5階のテストセンター](https://cbt-s.com/kabukiza-tc/)を選びました。

情報収集を始め、いわゆる[黒本](https://www.amazon.co.jp/dp/B07M7S9G

元記事を表示

AWS Amplifyを使ってCognito User PoolsログインするSwiftUIのサンプル

# はじめに

Amplifyを使って、Cognito User Poolsログインする処理をSwiftUIで行う方法を説明します。

# 前提
バージョンは次の通りです。

– Xcode: 11.2.1

また、この記事では、サインインの処理を具体的にどう組み込むかを説明します。

CocoaPodsに依存関係を設定して、`$ amplify add auth`して、…のような基本的な手順は割愛します。基本的な利用手順については、以下のドキュメントをざっと読んでいただければと思います。
https://aws-amplify.github.io/docs/sdk/ios/authentication

# Podfile

“` Podfile
target ‘TrainSnap’ do
use_frameworks!

pod ‘AWSMobileClient’, ‘~> 2.12.0’
pod ‘Nuke’, ‘~> 8.0’

target ‘TrainSnapTests’ do
inherit! :search_paths
end

元記事を表示

AWS Lambdaのランタイムサポートポリシーについて、および、廃止が迫った場合の対処法

# TL;DR

知っているようで知らないAWS Lambdaのランタイムポリシー、そして、これまで使っていたランタイムが使えなくなったらどうしよう?

そんな疑問にお答えします。

# 背景

AWS Lambdaは2019/12/22現在、サポートランタイムが12個あり、それらは以下のとおり。これはマネージメントコンソールからいつでも確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6088/8db8c6fa-aa3d-e176-d939-662abd683464.png)

### re:Inventで新しいランタイムのサポートがアナウンスされました。

* AWS Lambda now supports Node.js 12
* https://aws.amazon.com/about-aws/whats-new/2019/11/aws-lambda-supports-node-js-12/
* AWS Lambda now supports Java 11

元記事を表示

Serverless FrameworkでAmazon API Gatewayのベースパスマッピングを作ろうとした時の話

この記事は [ハンズラボ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/handslab) 22日目の記事です。
昨日は、@jnuankさんの[「来月退職します」から始めるモブプログラミング](https://qiita.com/jnuank/items/ecae6b04279b89a990ef) でした。

はじめまして、今年4月に中途入社し、毎日AWSをがっつり触れて楽しい日々を送る@t-nmrです。
Advent Calendarに参加するの初めてなので何書こうか…?と悩みましたが、
業務でよく触れる機会のあるServerlessで、最近遭遇した内容について書こうと思います。

## 何があったのか
タイトルにもある通り、ServerlessでAPI Gatewayとそのカスタムドメインを作ろうとしたところ、
ベースパスマッピングが上手く作成出来ず、ちょっとハマってしまう事がありました。

何故かというと、ベースパスマッピングはパスと一緒に対象のステージを指定しなければいけないから。
つまり、初回sls

元記事を表示

LogstashとFilebeatでIISログをあれこれしてみた話

この記事は[Elastic Stack (Elasticsearch) Advent Calendar 2019](https://qiita.com/advent-calendar/2019/elasticsearch)の22日目の記事です。
21日目は@yukata_unoさんによる[「Elastic Machine Learningの歴史を振り返る」](https://qiita.com/yukata_uno/items/bff9e2599b8f77d60df1)でした。

##はじめに
先日、知人より下記のご相談を頂きまして、この機会に技術検証してみることにしました^^

**AWS環境上のIISサーバのアクセスログを使って**
**リアルタイムログ監視をやりたいけど、Elasticsearchで宜しくやれないの!?**

ということで、、
IISサーバのアクセスログを**Logstash**と**Filebeat**を使って、どんな構成が最適か追求してみました。

余談ですが、LogstashとFilebeatは「どちらが良いの?」という質問をよく頂きます。
この記事を通して

元記事を表示

CloudFormation内のDynamoDBリソース更新でハマった話

# 背景
AWS使ってサーバーレスで自分用の家計簿的なwebサービスを勉強も兼ねて開発中。基本的にAWSリソースはCloudFormationで管理中。AWS Amplify使えばいいんじゃね?という話もあるけど、AWSの勉強兼ねてるので、はい。

# やりたかった事
**既存テーブルにレンジキーを追加したい。** はい、普通でもテーブル削除&再作成が必要な処理です。この時、このテーブルにデータは存在していないので新規キーに対する値不整合問題は無し。

# とりあえずやってみた。

“`console:出たエラー
CloudFormation cannot update a stack when a custom-named resource requires replacing. Rename {対象テーブル名} and update the stack again.
“`

カスタム名があるスタックで(更新でなく)交換が必要なリソースはCloudFormationでは更新できないという事ですね。
リネームせよと言ってるけど、DynamoDBのテーブル名は後から変えられない。

元記事を表示

Python3.7ランタイムのAWS LambdaでC拡張ライブラリを使用したい!

本記事はamazonlinuxでpython3.7を使用したい人、lambda上でpythonのC拡張ライブラリを使用したい人向け。

# 動機
Python3.7ランタイムのlambda上でscrapyを動かそうとしたところ以下のエラーでうまく実行できなかった。

“`
{
“errorMessage”: “Unable to import module ‘spider’: cannot import name ‘etree’ from ‘lxml’ (/var/task/lxml/__init__.py)”,
“errorType”: “Runtime.ImportModuleError”
}
“`

調べたところ、どうやらlxmlライブラリはC言語の拡張を使用しており、そのままではlambdaで使えないとのこと。

諦めればいいものの、Python3にこれから移行していくというタイミングで困ることが多そうなので頑張って解決してみる。

PCはMacを使用。

# とりあえずEC2上で動かす

lambdaはサーバレスといっても裏ではamazonlinuxのサーバ上で動

元記事を表示

code-server オンライン環境篇 (4) EC2 インスタンス上で、code-server を立ち上げる

これは、2019年 code-server に Advent Calender の 第15日目の記事です。

前回に続き、EC2 Instance を 立ち上げたいと思います。

目次
[ローカル環境篇 1日目](https://qiita.com/kyorohiro/items/35bab591cd4a6b975c80)
[オンライン環境篇 1日目 作業環境を整備する](https://qiita.com/kyorohiro/items/603d6ee693fc2300079e)
[オンライン環境篇 2日目 仮想ネットワークを作成する](https://qiita.com/kyorohiro/items/6f2452ec2a2fe3640979)
[オンライン環境篇 3日目 Boto3 で EC2 インスタンスを立ち上げる](https://qiita.com/kyorohiro/items/32c9b7f9ebfccbeb6ac5)
[オンライン環境篇 4日目 Code-Serverをクラウドで動かしてみる](https://qiita.com/kyorohiro/items/3

元記事を表示

サーバーレス・アーキテクチャで量子コンピュータ・アプリケーションを運用する方法

こんにちは。@snuffkin と言います。
これは、「[量子コンピューター Advent Calendar 2019](https://qiita.com/advent-calendar/2019/quantum)」の21日目の記事です。

# 身近な量子コンピュータ・アプリケーションを作ろう!

量子コンピュータに関するニュースが活発になってきて、興味を持った方も多いと思います。
特に、AWSによる量子コンピュータのクラウド提供(AWS Braket)は、ITエンジニアにとって量子コンピュータが身近となるきっかけになりそうです。
しかし、AWS Braketを待たずとも、以前からIBM等が量子コンピュータをクラウド提供していることをご存知でしょうか。
そうなんです、**今すぐ量子コンピュータの実機を使ったアプリケーションを作ることができる**んです。

ただ、いざ量子コンピュータに関する勉強をすると、アルゴリズムの理解にはある程度の知識が必要となります。
特に量子の世界の考え方や数学の壁にぶつかって挫折することが多いようです。

実は、**難しいアルゴリズムがなくても量子コンピュー

元記事を表示

Oracle Cloud Infrastructureブロック・ボリューム・バックアップDeep Dive

この記事は[**「Oracle Cloud Infrastructure Advent Calendar 2019」**](https://adventar.org/calendars/4516)の12月22日の記事として書かれています。

# 1. はじめに

Oracle Cloud Infrastructure Computeでバックアップ/リカバリしたことがあるだろうか? とくに本番システムでは重要なのに、紹介している記事があまり見当たらない。あっても、マニュアルと大差ないものが多いように感じる。

そこで今回は、Oracle Cloud Infrastructure Computeにおけるバックアップ/リカバリ方法について書いてみようと思う。なお、内部構造は公開されていないので、一部推測で書いている。また、Oracleデータベースのバックアップは複雑なので今回は触れない。

### 1-1. TL;DR

* バックアップは重要なのにQiitaを含め紹介記事が少ない
* オンプレミスとクラウドではバックアップ手法が異なる
* ブロック・ボリュームのバックアップ方法が複数ある

元記事を表示

【MQTT】AWS IoT CoreとSoracom Beamを使ってデバイスとお喋りしてみた

## はじめに

このアーキテクチャで実装する理由ですが、すでにSMSを使ってデバイスに対して通知をする仕組みがあって、通信が安定しないことや、他社のサービスを使っていることもあって調査がしにくいという問題がありました。そこでMQTTを使って管理できるようにして安定化を図る狙いがあります。

## 要件
– IoT Coreからpublishされるメッセージを元に、デバイス側で処理を実行させる
– セキュリティ面を考慮してSoracom Beamを利用する

## 利用技術
– AWS IoT Core(以下 IoT Core)
– SORACOM Beam(以下 Beam)
– MQTT
– Python
– AWS SDK(AWSIoTPythonSDK)

## 内容
– デバイス側のソースコード(AWS SDK)についてがメイン
– 実装内容の注意点

## 事前準備
1. IoT Coreと、Beamの設定

まずはじめにIoT CoreとBeamの設定を行います。

SORACOMのガイドが非常にわかりやすいので参考にしてください。
手順に沿って作業すれば間違えないと思いま

元記事を表示

新サービスに触る前に学び直す、AWSのネットワーク基礎知識まとめ

最近のAWSでは、Transit GatewayやDirect Connect Gatewayなど、ネットワークをよりシンプルに分かりやすくするための高度なネットワークサービスが増えてきました。
忙しくなってくると、ただでさえアップデートに追いつくのは大変ですが、既存のサービスの考え方を上書きするような高度なサービスが出てきたので、ワケワカラン!となる前に何とかしなければ、と不安に思っていました。

ただ、これらのサービスを腹落ちして使うためには、これらのサービスが登場する以前のAWSのネットワークについて、基本的な考え方であったり、概念や知識を今一度押さえておきたいところです。

そこで一念発起して、これまでの総復習として、AWSの公式ドキュメントを読みまくり、AWSのネットワークに関する基礎知識を調べ、これらの基礎知識をさらっとおさらいできるようにまとめてみました。
最初は自分の知識整理のためだったのですが、少しずつ整理していたところ、かなりの量がまとまってきたので、公開してしまおうと思い立ちました。
気軽にスマホで1時間くらいで総復習できるようにと、できるだけ短くまとめ、簡単な表

元記事を表示

k8s Deschedulerを使いこなしてスムーズなオートスケールを実現する

この記事は基本的にGKEでの利用を想定して解説していますが、AWS等他のプロバイダでも大きくは変わりません。適時読み替えてもらえると。

## クラスタオートスケーラーの課題点

kubernetesでNodeのオートスケールは、ざっくり説明すると以下のような流れになる訳ですが・・・

1. Podの負荷が上がり、HPAによって新しいPodがスケジューリングされる
2. PodをスケジューリングさせるためのNodeが不足して、新しいNodeが立ち上がる
3. 新しいNodeにPodが立ち上がる

このスケーリングには少々問題がありまして、新しいNodeがすぐに有効活用されるかと言えば、そうでも無いんですよね・・・

時間が経つに連れて新しいNodeにもPodが増えますし、負荷も分散されて行くでしょう。しかし、すでに負荷が上がりきっている既存Nodeに配置されているPodが再スケジューリングされる訳では無いので、急なスパイク等には対応できません。GKEだとNodeの立ち上がり自体は早いんですけどね・・・

## deschedulerで負荷が高いNodeのPodを再スケジューリングする

元記事を表示

AWS SPEKEでHLS-AES 128な動画をパッケージング&配信

どうもこんにちは。
みなさん、「動画配信」やって行っていますか?
僕は最近AWSで動画をいじくりまわすシステムを作ってました。
多分これを読んでいるストリーミング畑のあなたはご存知だと思いますが、AWSにはElemental Serviceという総称で動画をいじれる機能があます。ライブ配信・パッケージング・DRM・ABR・オンプレのエンコーダとの連携などなど。
今回は、Elementalの機能の1つであるAWS SPEKEという便利機能について紹介します。

## AWS SPEKEとは

公式ドキュメント https://docs.aws.amazon.com/speke/latest/documentation/what-is-speke.html

SPEKE = Secure Packager and Encoder Key Exchange

簡単にまとめると、動画のパッケージャ(AWS Elemental)とDRMエンクリプタ間で、DRMキーなどの情報をセキュアにやりとりできる仕様のことです。
SPEKEが定めるI/OインターフェースにのっとってDRM情報(キーやHLS A

元記事を表示

AWSからリリースされた、JavaでDeepLearningが扱えるライブラリDeep Java Library(DJL)に触れてみる

# 概要
2019/12/03AWSよりJava で機械学習モデルを開発およびデプロイするDeep Java Libraryが発表されました。


DJL - Deep Java Library

ほんの少しですが、触ってみましたので紹介します。
なお、事前知識としては、Javaは普段使っているが、ML/DLの知識は自身ほぼゼロです。


AWS RekognitionとRaspberry Piでプリン警備システムを作ってみた

この記事は[IoTLT Advent Calendar 2019(Neo)](https://qiita.com/advent-calendar/2019/iotlt_neo)の21日目の記事です。

#作ったもの
今回はAmazon Rekognitionを使った職場のプリンを守る警備システムを作りました。
![Blog1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309197/cd5ab118-4e4b-1648-cbb5-cb9dc5da5dfd.png)
これで大切な職場のプリンを守ります。
[aNo研](https://anoken.jimdo.com/products/%E3%83%97%E3%83%AA%E3%83%B3%E3%82%92%E5%AE%88%E3%82%8B%E6%8A%80%E8%A1%93/)様の[SIerIoTLT vol.16発表](https://togetter.com/li/1331827?page=2)で職場のプリンを守る技術を知り、警備といえばプリンだ

元記事を表示

SAM+CodeDeployでlambdaへデプロイする。

前回まではCodeDeployを用いてEC2インスタンスへのデプロイを学習しました。
今回はデプロイ対象をlambdaでやってみたいと思います。CodeDeployのアプリケーション作成画面でlambdaを選択できるので同じ要領かと思っていましたが、SAMというやつを一緒に使うみたいです。

[公式チュートリアル](https://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/tutorial-lambda-sam.html)は普通に分かりやすいです。なので、今回はテンプレートyamlファイルの設定項目をここで指定していきましょう。

_contents_

* AWS SAM
* AWS CloudFormation
* 公式チュートリアル実施時の備忘録/トラブルシューティング
* template.ymlの解読(本題)

# AWS SAM

AWS Serverless Application Model(AWS SAM)は、yaml形式で記述したテンプレートを元にして種々のAWSリソースを用いたアプリケーションを構築

元記事を表示

code-server オンライン環境篇 (3) Boto3 で EC2 インスタンスを立ち上げる

これは、2019年 code-server に Advent Calender の 第14日目の記事です。

前回に続き、EC2 Instance を 立ち上げたいと思います。

目次
[ローカル環境篇 1日目](https://qiita.com/kyorohiro/items/35bab591cd4a6b975c80)
[オンライン環境篇 1日目 作業環境を整備する](https://qiita.com/kyorohiro/items/603d6ee693fc2300079e)
[オンライン環境篇 2日目 仮想ネットワークを作成する](https://qiita.com/kyorohiro/items/6f2452ec2a2fe3640979)
[オンライン環境篇 3日目 Boto3 で EC2 インスタンスを立ち上げる](https://qiita.com/kyorohiro/items/32c9b7f9ebfccbeb6ac5)
[オンライン環境篇 4日目 Code-Serverをクラウドで動かしてみる](https://qiita.com/kyorohiro/items/3

元記事を表示

CloudFormationのYAMLを分割管理する

CloudFormation は JSON or YAML で作成したテンプレートを元に構成を管理しています。
コメントが書ける YAML を選択している方も多いかとは思いますが、CloudFormation のテンプレートは1ファイルになっている必要があり、設定項目が多くなると管理がかなり面倒です。

JSON も YAML もそれ自体には import や require する機能はないのですが、[json-refs](仕様は [JSON Reference], [JSON Pointer] 参照)を使うと別ファイルを参照できるので、簡単にツール化してみました。

[@u-minor/cftemplate – npm]

## 使い方

### インストール

通常は、CloudFormation を使うプロジェクト内にインストールすれば OK です。

“`command-line
npm install -D @u-minor/cftemplate
“`

> global に入れても OK です。

### CloudFormation 分割テンプレートの作成

[テンプ

元記事を表示

[Tips]AWS Lambdaにzipファイルアップロードをコマンド一発で行う

# 前提
– Node.js
– aws-cliインストール済みであること

# 説明
lambda関数をzipアップロードする場合、zipに固めて管理画面ポチポチするよりも、npm(Node.jsの場合)でスクリプト化しておくと良い。

## コード
“`json:package.json

“scripts”: {
“predeploy”: “zip -r Lambda.zip * -x *.zip *.json”,
“deploy”: “aws lambda update-function-code –function-name {{ Lambda関数のARN }} fileb://Lambda.zip”
},

“`

## 実行
“`shell
npm run deploy
“`

# 補足

npm-scriptsの「pre」プレフィックスを付けると、特定のコマンドの前に自動で実行される。
なので、上の例でpredeployを直接実行する必要はない。
「post」プレフィックスも同様で、事後

元記事を表示

OTHERカテゴリの最新記事