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

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

re:Invent 2019 で発表された Kendra を早速使ってドキュメント検索 slack コマンドを作ってみた

こんにちは,[ABEJA Advent Calendar](https://qiita.com/advent-calendar/2019/abeja) の8日目です.

## はじめに
先日の re:Invent 2019 で面白いサービスが発表されました.そう,エンタープライズ向け検索サービス [Amazon Kendraのリリース](https://aws.amazon.com/jp/about-aws/whats-new/2019/12/announcing-amazon-kendra-reinventing-enterprise-search-with-machine-learning/)です.
![Screenshot from 2019-12-08 07-56-38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130762/1e587471-6abd-f438-f454-afad7d384b31.png)
社内にはさまざまなコミュニケーションツールが存在します.ただし,どれもフロー情報とな

元記事を表示

CloudFront で Lambda@Edge を使って OpenID Connect 認証する

CloudFront と S3 を使うとサーバーレスなウェブサイトを安価で立てることができるが、特定のユーザーにのみ公開するために Google, GitHub など外部の認証プロバイダ(IdP)を使って認証をおこないたい。CloudFront では中継時に Lambda 関数を実行することで処理をおこなうことができる。OIDC による認証をおこなう Lambda 関数は [Widen/cloudfront-auth](https://github.com/Widen/cloudfront-auth) というツールを使って生成することができる。

ここでは Google で認証し、特定ドメインのメールアドレスのユーザーのみをアクセス許可してみる。

## 構築手順

CloudFront によるウェブサイトが構築済みであること。

### 設定項目

– **Client ID/sercet**: IdP で認証をおこなうために払い出したクライアント用のIDとシークレット。この場合 CloudFront で動作する Lambda 関数が OIDC のクライアントという位置付け。
– *

元記事を表示

S3に配置した動画をMediaLiveでスケジュール組んで配信してみる

この記事は [NewsPicks Advent Calendar 2019](https://qiita.com/advent-calendar/2019/newspicks) の8日目の記事です。

# はじめに

こんにちは、NewsPicksでサーバーサイドエンジニアをしている@d-kumoです。

NewsPicksというとオリジナル記事等の文字ベースのコンテンツをイメージされる方も多いかと思いますが、動画コンテンツにも力を入れており、今では週に4回配信することもあります。
今後増えていく動画コンテンツをより安定的に配信するため、最近はいろんな配信技術に触れる機会も増えてきました。

そんな中で、今回はAWSが提供しているライブ配信サービス[AWS Elemental MediaLive](https://aws.amazon.com/jp/medialive/)を使った配信構成を試してみたのでご紹介したいと思います。

※NewsPicksの動画配信構成については、以下の記事で解説しています。ご興味のある方はご覧ください。
https://qiita.com/kirihata

元記事を表示

Container Insightsの料金

# これは何

EKSでのContainer Insightsの料金を試算したりしたので、そのまとめを残したもの。
基本的には**[ここ](https://aws.amazon.com/jp/cloudwatch/pricing/)の例7**を読んで試算する。

間違えてたら教えてください。

# 前提

* EKSで考える
* EKS自体の料金は含まない

# 料金

## 観点

* メトリクス
* Container Insightsを有効化すると、自動的に必要なメトリクスが多数作成される。
* これはCloudWatchのカスタムメトリクスで作られる。
* **1メトリクスにつき月額0.30 USDとし、カスタムメトリクスの数で料金が決まる。**

* ログ
* 1メトリクスあたり、1時間で38KBのログが取り込まれる。
* **取り込んだログの容量1GBにつき0.50 USDとし、料金が決まる。**

## 試算

### メトリクス
例として、**Cluster数:1/Node数:4/Namespace数:6/Service数:20/

元記事を表示

Amazon API GatewayとAWS LambdaでつくるインタラクティブなSlackAppその1(Slash Command)

GitHub Organizationの管理をしているのですが、運用が少し面倒なのでなんとかできないかといろいろ考えています。
今回はチャットボットでの運用を導入できないかと考えて検証してみたのでまとめました。
(いろいろな制約により残念ながら実用には至ってません。)

今回の記事ではSlackAppにおける機能として`Slach Command`を利用しています。

また、この記事では以下の要素を利用して、SlackAppを構築するための基本的な部分を実装していますが、
個々の要素の具体的な利用方法や言語の実装についてはあまり触れません。

– Amazon API Gateway
– AWS Lambda (Golang)
– CloudFormation (AWS SAM)

# TL;DR

SlackとAWSを利用して対話型なインターフェイスを作成するサンプルを作りました。
以下のアニメーションにある`コマンドで呼び出し → 選択肢の応答 → ボタン押下による応答 → メッセージ書き換えによる応答`の流れのうち、選択肢の応答までを説明しています。

以下のような動作をします。

元記事を表示

ブラウザ上のJSエラー情報をAWS Elasticsearch+Kinabaで収集・可視化する

2019-12-07 18-29-13.png
2019-12-08 00-39-55.png

Web ブラウザ向けの JavaScript 開発を行っていると、利用者のブラウザ上で発生しているエラー情報を収集したくなってきます。
開発時には入念にテストはしているものの、利用者のブラウザ環境は多種多様であり、全ての問題を事前に検知して対処することは不可能なため、実際に発生しているエラー情報を早期に検知して収集することには重要な価値があります。

元記事を表示

[AWS] LINEWORKSでリマインダBOTを作ってみた

Advent Calendar7日目です。

今回は、AWS環境でリマインダBOTを作成してみました。
Cloudformationのテンプレートも掲載しますので、興味がある方はご覧ください。

## 完成したBOT
BOTのやりとりはこんな感じです。
![iOS の画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504215/afb367bc-bc86-dbba-4aed-89eba7869a70.png)

以下の機能があります。

– イベント登録機能
– イベントのタイトル、時間を入力することでリマインドしたいイベントを登録できます。
– 「イベント登録」ボタンを押すことで登録が開始します。

– イベント参照機能
– 登録したイベントを参照することができます。
– 「イベント参照」ボタンを押すことでイベントを参照することができます。

– イベント通知機能
– 登録したイベントの日時が近づくとBOTが通知してくれます。

今回は、BOTにトーク固定

元記事を表示

AWS-S3を使用した画像保存

画像をAWSのS3を使ってアップロードする方法について学習したので、備忘録として以下にまとめます。
デプロイはCapistranoを使用します。

#AWS-E3とは
まずはAWSについて、記述いたします。
Amazon Web Service(以下、AWS):
Amazonが提供するインフラ系クラウドサービス。
クラウドなのでどこからでもアクセスや設定ができること、セキュリティに優れていること、様々なサービスを連携して強力なインフラを構築できることが特徴です。
https://aws.amazon.com/jp/registration-confirmation/

AWS S3:
様々なファイルを保存しどこからでも呼び出すことができるクラウドストレージサービスのひとつ。
AWSが提供しており、高いセキュリティと利便性を兼ね備えています。

#なぜやるのか。
画像をアップロードするアプリやページを作成・使用する際、投稿された画像を保存しておく場所が重要となります。
仮に画像の保存場所を、アプリケーションの/public以下とすると、アプリケーションのディレクトリ内に画像を保存している

元記事を表示

S3 × Lambda × Cloudwatch Eventsで、簡単にバッチ処理の監視機構を導入する

コンニチハ。川野です。

[Fusic Advent Calendar 2019 – Qiita](https://qiita.com/advent-calendar/2019/fusic) 7日目の記事です。
昨日は [@ya_ma23](https://qiita.com/ya_ma23) による [Rustでcsvを読み込みDBにインポートする](https://qiita.com/ya_ma23/items/58cdbb96099c339d70bd) でした。
最近よく目にするRust、気になる存在です。

—————-

さて本日は、簡単に導入できるように設計・実装したバッチ処理の監視機構について紹介します。

本記事は「一日一回 **決まった時刻に** 動く処理が、何らかの理由で失敗していたことを検知したい」という方向けです。

# 概要
アプリケーションサーバ上で、毎朝1回決まった時刻にcronによって実行されるphpファイルがあります。
当然、毎朝このファイルが実行されないと困りますね。
そこで、ファイルの実行に失敗したことを検知し、システム管理

元記事を表示

AWS CDKでStepFunctionsを構築しました。

この記事は [ハンズラボ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/handslab) 7日目の記事です。

お疲れさまです。@naokiurです。
今年も担当させて頂きます。

最近は業務でAWSリソースを構築する際に、
CloudFormationやServerlessで、
コード化することを心がけています。
(用法用量と守り、目的を忘れないようにしつつ…)

おかげでYAML形式ファイルを書くことはだんだん慣れてきました。

そんな中、
[AWS CDK](https://aws.amazon.com/jp/cdk/)というものの存在を知り、
しかも[AWS CDKで、Javaと .NET 用が一般利用が可能に!!](https://aws.amazon.com/jp/blogs/news/aws-cloud-development-kit-cdk-java-and-net-are-now-generally-available/)

個人的にJavaも好きな自分、
せっかくなので、AWS CDKをJ

元記事を表示

[AWS][CFn]CloudTrailの設定

## はじめに

こんにちは。なじむです。
前回に引き続き、クラスメソッドさんのブログ記事、[AWSアカウントを作ったら最初にやるべきこと ~令和元年版~](https://dev.classmethod.jp/cloud/aws/aws-1st-step-new-era-reiwa/)を参考にさせていただき、AWSでの初期設定をCloudFormationで実施していきます。
今回は「CloudTrailの有効化」をCloudFormationで実施していきます。CloudTrailは言わずもがなですが監査ログに関する設定です。企業でAWSを使用する場合、こちらは有無を言わさず設定することをお勧めします。

## 前提

サンプルコードで実施しているのは以下です。
本来であればCloudwatchLogsへの出力も実施し、特定のAPIが実行された場合にSNS通知するように設定した方が良いのかもしれません。

– CloudTrailを有効化する
– CloudTrailをS3に保存する
– S3に保存したログは13ヶ月(400日)経過後、削除する
– S3に保存したログはKMSで暗号

元記事を表示

【AWS・Lambda】Python外部ライブラリ読み込み方法

# 概要
 AWS lambdaでは初期状態でpandasやnumpyなどの外部ライブラリを読み込むことはできません.読み込ませる方法は二つあって,一つ目はインストール済みのライブラリと実行ファイルをまるっとzipファイルにまとめてlambdaにアップロードする方法,二つ目はlambdaでLayerとして読み込ませる方法です.後者の方法がおすすめですが,本記事ではこれらの方法をコード管理の面と合わせてTipsとしてまとめました.

# 環境
MacOS Catalina
docker 導入済み
AWS CLI 導入済み

# はじめに
 lambda開発をブラウザ上で行うのはコード管理の面でよろしくないのでローカルで開発できるようにします.つまりgitHub管理できるようにローカルで作業を行いコードの変更を随時lambdaにアップロードするという形を取ります.
 ということで[docker-lambda](https://hub.docker.com/r/lambci/lambda/)を使用してデプロイ環境つくりました.(使用する場合はcloneしてください)
https://gith

元記事を表示

AWS認定クラウドプラクティショナーを受験したのでまとめてみた。

# クラウドプラクティショナーとは?
AWSクラウドの全体的な理解を証明であり、専門知識認定を受けるための前提条件である。
まあ、基礎的な知識と評価が求められるわけです。
![](https://cdn-ak.f.st-hatena.com/images/fotolife/A/AdwaysEngineerBlog/20181210/20181210200354.png “”)
クラウドを全体を理解することで、導入するメリットを説明・回答することが可能であり
また、AWSの評価部分である**「AWS Well-Architectedフレームワーク」**の観点から、アーキテクチャにおけるベストプラクティスを導く能力が求められます。
[AWS Well-Architectedについてはこちらをご参照ください。](https://aws.amazon.com/jp/architecture/well-architected/ “”)

左端の下にあるのがそうですね。入り口に位置しているのがわかります。
また既に設計に携わっている方は**ソリューションアーキテクトアソシエイト(SAA)**から受

元記事を表示

同人誌の組版をGitLab CIを使ってやってみた

同人誌を執筆するにあたって、一番面倒なのが環境設定と反復ビルドである。
だるいので、自動化したい。じゃあCIすればいいよね、となる。このため、CI環境を構築してみた。

## 環境構築開始

環境構築は、今回は以下の通りとする。

– AWSのEC2インスタンスを使う
– GitLabでレポジトリ管理を行い、GitLab CIでビルドを行う

というわけで始めていこう

## EC2インスタンスの起動

まあ難しいことは何もない。注意しないといけないのは、GitLabはメモリを最低4GB以上必要とするため、あまり低いインスタンスだと動かないという点である。また、諸々考えると、こんな感じの設定にした。

– インスタンスサイズはt3a.medium T3 Unlimitedは無効
– IAMロールとしてS3の無制限アクセスがあるロールを割当
– ディスクサイズは20GB(6GBをswapに割り当てるので実質使えるのは10GB程度)
– セキュリティグループでは22・25・80・443を全IPアドレスに開放

永続的に起動するならElastic IPの設定をお忘れなく。

## DNSの設

元記事を表示

AWS Lambda関数を非同期で呼ぶ場合の動きを改めて確

### はじめに
2019年11月から12月5日までに発表されたAWS Lambdaに関する新機能の中で、以下の二つを取りあげて構成方法とテストした結果についてまとめたいと思います。
1. [AWS Lambda Supports Destinations for Asynchronous Invocations](https://aws.amazon.com/jp/about-aws/whats-new/2019/11/aws-lambda-supports-destinations-for-asynchronous-invocations/)
(非同期呼び出し時の結果出力先を指定できるようになった件)
2. [AWS Lambda Now Supports Maximum Event Age and Maximum Retry Attempts for Asynchronous Invocations]
(https://aws.amazon.com/about-aws/whats-new/2019/11/aws-lambda-supports-max-retry-attempts

元記事を表示

TerraformにおけるCloud FunctionsとAWS Lambda比較

## はじめに
こんにちは、SREエンジニアをやっています。@hayaosatoです。
今回はサーバレスなインフラを構築する上で、Cloud FunctionsとAWS Lambda(以下、Lambda)についてTerraformにて管理する観点で比較してみようと思います。
構築する構成はそれぞれ以下のようになります。
コードは[こちら](https://github.com/hayaosato/advent-calendar-2019/tree/master/server_less)

### Cloud Function
![terraform_cloud_functions.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312728/28fa593b-6b19-c613-7253-cac983789ded.jpeg)

### Lambda
![torm_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312728

元記事を表示

AWS Chaliceでchalice localしているかどうかを判定する

# はじめに
AWS上で[API Gateway](https://aws.amazon.com/jp/api-gateway/)と[Lambda](https://aws.amazon.com/jp/lambda/)を使ってWEBサービスを作るときに便利なPythonフレームワークの[AWS Chalice](https://github.com/aws/chalice)。便利ポイントの一つが、`chalice local`コマンド一発で、手元のPC(ローカル)にWEBサーバが立ち上がって、AWS上で動かすものと同じものが動いてしまう、というところ[^1]。テストとデバッグがめちゃくちゃ捗ります。

# 課題
という便利な`chalice local`なんですが、ローカルで動かしていることをコードで判定する直接的な方法が無さそうだったので、考えてみました。
*きっかけは、[実施例](#実施例)にも示したとおり、AWS上で動かすときとローカルで動かすときでログのフォーマットを変えようとしたことです[^2]。*

# 解決方法
以下でできます。環境変数を活用します[^3]。

– cha

元記事を表示

S3オブジェクトの整合性について

## 1. はじめに

今年入って、Amazon Web Serviceを使用したアプリケーション開発する機会をいただき、様々なマネージドサービスに触りました。
その際、S3へファイルアップロードをする機能に携わったので、やった内容を残します。

### 環境

* macOS X 10.15.1
* .NET Core 2.1
* aws-sdk-dotnet

### 要件

* アップロードするファイルは主に動画ファイル(中には5GB以上のものも)
* アップロードしたファイルは、その後、各種マネージドサービスで利用可能性あり(動画変換、AI…)
* サービスポリシーの都合により、アップロードしたファイルとの整合性を担保する必要あり

## 2. やったこと

上記の要件を満たすために、ハッシュ値を使って整合性をとろうと考えました。AWSの様々な記事を読んでいくと、以下のことがわかりました。

* PUT API を使用すると、ETagにMD5のハッシュ値が入る
* ただし、マルチパートでアップロードすると、**分割したファイルのMD5値を合算した値 – 分割数** になって

元記事を表示

軽量フレームワークMicronautでサーバーレスJavaを始めよう!

サーバーレスがとても盛り上がっていますね。
Javaはいわゆるコールドスタートの問題でサーバーレスには向いていないとの声もありましたが、今回紹介するMicronautを始めとしたマイクロフレームワークや、GraalVMのネイティブイメージ作成機能(SubstrateVM)の登場により状況が大きく変わってきています。

この辺りの流れは、@_kenshさんや@jyukutyoさんの「JJUG CCC 2019 Fall」での素晴らしい講演資料がありますので、そちらを見てワクワクしましょう。

– [Serverless時代のJavaについて](https://www.slideshare.net/AmazonWebServicesJapan/serverlessjava-199195000)
– [多言語対応の仮想マシンGraalVMが照らす未来](https://www.slideshare.net/jyukutyo/guide-to-graalvm-jjug-ccc-2019-fall)

さあ、ではMicronautで実際にサーバーレスJavaを作ってみましょう!

## なんでM

元記事を表示

AWS amplify ReactでIAM認証付きAPI作成

前回は、ログイン画面を作成しました。
[AWS amplify Reactでログイン画面作成](https://qiita.com/hf7777hi/items/004b00bb23123ffd805b)

今回はIAM認証付きAPIを作成したいと思います。

# 1. API作成
構成としては、
API Gateway + Lambda + DynamoDB
で作成します。

今回は、認証済み以外のユーザからはAPIを叩けないようにします。

RESTApiを作成します。
authと比べて設定量が多いです。

amplify add api コマンドで作成できます。
以下で実行しました。

“`
$ amplify add api
? Please select from one of the below mentioned services: REST ★★
? Provide a friendly name for your resource to be used as a label for this category in the project: mytodo ★

元記事を表示

OTHERカテゴリの最新記事