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

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

絶対に止めれないシステムの作り方

# 絶対に止めれないシステムとは
もちろん銀行システムとかのクリティカルなシステムもそうなのですが、今回は、そこまでではないのですが、データ連携上一部のapiは止めれないシステムを指します。
僕は直面したのが、Lineでのユーザー登録によるwebhookを受け取るって奴です。
昔のキャリアのユーザー登録であれば、止まっていた時には別途データが飛んできてまとめて処理とかも出来ましたが、Lineさんのはありません。ユーザー登録時のwebhookを取りこぼすと2度と受信出来ないのです。
同様にSNS等で登録時にwebhookが来て、対応する必要があるシステムもあると思います。

# どうすれば良いか?
先ず思うのは、AWSでLambdaで受け取って処理すれば良いと思うでしょう。
これでも良いのですが、Lambdaがエラー処理で落ちたりすることもあります。
## 最初の構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/9d838c57-4857-540e-c8ee-7d5dec19

元記事を表示

ECSのクラスター、タスク、サービスの役割を確認しながらWEBサーバーを構築する

## はじめに
### 本記事を書くきっかけ
最近コンテナを学び始めました。

Docker Desktopや物理サーバーでコンテナを動かすことをしたあと、AWSのECS(Elastic Container Service)に挑戦したのですが、どこにどのような設定を入れるのか少し混乱しました。

ECSの仕組みや構成、設定項目(クラスターの設定、タスク定義、サービスの設定、コンテナの定義)の役割を理解しようと考え、本記事を書くことにしました。

### 自分のレベル
コンテナ初心者です。

本記事の対象読者はECSをこれから使う方で、コンテナの基礎的な知識は持っている方を想定しています。

### 今回やること(構成図)
ECSではどのようにコンテナを展開するのか、設定項目の役割を確認しながら単純なWEBサーバーを構築します。

__詳細な手順は記載しません。__あくまでもECSの設定項目が果たす役割を確認することが目的です。

AWS Fargateではなく、ホストはEC2を使用します。また、ALBは使用しません。

完成形の構成図と

元記事を表示

StepFunctions の parallel 処理

この記事は[ケーシーエスキャロット Advent Calendar 2022](https://qiita.com/advent-calendar/2022/kcscarrot)の4日目の記事です。

`StepFunctions` では [parallel ステート](https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/amazon-states-language-parallel-state.html)を使用すると並列処理が行えますが、受け渡し方法でハマってしまったのでメモを残します。

以下のように、`lambda aaa` と `lambda bbb` を並行に処理した後、受け取った値を [DnamoDB API](https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/connect-ddb.html) を使用して登録する流れだったとします。
(諸事情により、パワポで図を作成している為、細部は異なる可能性があります)
![image.png](htt

元記事を表示

DatabricksにおけるクロスアカウントIAMロールの作成

[Create a cross\-account IAM role \| Databricks on AWS](https://docs.databricks.com/administration-guide/account-api/iam-role.html) [2022/10/13時点]の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

Databricksがお使いのAWSアカウントにワークスペースをデプロイできる様に、どのようにクロスアカウントIAMロールをセットアップするのかを学びましょう。

:::note
**ティップ**
[Databricks Terraformプロバイダー](https://qiita.com/taka_yayoi/items/691ee4909b0961de5ad1)を用いてIAMロール作成を自動化することができます。[Terraformを用いたDatabricksワークスペース\(E2\)の配備](https://qiita.com/taka_yay

元記事を表示

AWS Certified Data Analytics – Specialty(DAS)要点まとめ

# はじめに
**AWS Certified Data Analytics – Specialty(DAS)** 取得にあたり、備忘がてら、各サービスの要点をまとめした。

これからDASを取得しようとしている人への参考になれば幸いです。

# 【収集】
## ▼ AWS IoT Core
– 閾値を超えた時にSNSを使用して通知できるIoTルールを作成できる

### ルールエンジン
– 大量のデータをSQLライクな文法で取り込み、分析や視覚化のために10以上のサービスを利用可能
– JSON形式のメッセージをサポート

### デバイスシャドウ
– デバイスの状態を把握し、管理

## ▼ Kinesis Data Streams

### 拡張ファンアウト
– コンシューマーごとに専用のスループットを提供できる
– 他のコンシューマーと競合することがない
– シャードあたり1秒間に最大2MBのデータスループットでストリームからデータを受け取ることができる
– Kinesiss Data Firehorseは拡張ファンアウトをサポートしてない

![スクリーンショット 2

元記事を表示

AWS re:Invent 2022 AWS Glue for Ray の翻訳まとめ記事

## はじめに

AWS re:Invent 2022 が開催されており、様々なサービスの情報が公開されております。
今回は、AWS Glue for Ray の情報が公開されたので、記事の内容をまとめてみました。
AWS Glue for Ray の詳細については、下記リンクを参照ください。

■リンク
– [Announcing AWS Glue for Ray (Preview)](https://aws.amazon.com/jp/about-aws/whats-new/2022/11/aws-glue-ray-preview/)
– [Introducing AWS Glue for Ray: Scaling your data integration workloads using Python](https://aws.amazon.com/jp/blogs/big-data/introducing-aws-glue-for-ray-scaling-your-data-integration-workloads-using-python/)

## AWS Glue
#

元記事を表示

Redis 7 の Sharded Pub/Sub まとめ

こちらは [AWS for Games Advent Calendar 2022](https://qiita.com/advent-calendar/2022/aws-for-games) の 4日目の記事です.

リーダーボード, メッセージング, キャッシュなどゲームワークロードに必要なコンポーネントの実装するのに便利な機能を提供してくれる Redis. 本記事は, このうちのメッセージングに焦点を当て, ゲームにおける Redis でのクライアント通知のユースケースと Redis 7.0 で 追加された Sharded Pub/Sub についてまとめてみました.

## クライアント通知のユースケースと Redis Pub/Sub

マッチメイクの成立, ロビーの入退室, アチーブメント表示, チャット投稿などサーバー側や他プレイヤーの状態変化をクライアントにリアルタイムに通知するといったユースケースが挙げられます.
このようなクライアント通知の実現方式はいくつかあります. 短い間隔でポーリングすることで擬似的にクライアント通知のようなものを実装することもあります. 最近では

元記事を表示

aws-sdkのタイムアウト設定はデフォルトから変更しよう

本記事はハンズラボアドベントカレンダー2022の4日目の記事です。

## はじめに
下記のようなElasticBeanstalk上で動作するAPI(Node.js-Express)がありました。APIは主にDynamoDBやS3にアクセスします。
通常は問題なく動いてくれます。が、しばしばAPIの呼び出し元が504エラーを受け取ることがありました。
発生頻度は不定で規則性もなく、対応の優先度が低かったのですが、先日1日あたりのリクエスト総数の0.1%程度が504エラーで返ってしまうという事象が数日間続き、なんとかせねば、、、となりました。

“`mermaid
flowchart LR
Client[Client]–>ALB
subgraph ElasticBeanstalk[ElasticBeanstalk]
ALB–>nginx
direction LR

subgraph EC2
direction LR
nginx–>node
end

end

node–>DynamoDB[(Dy

元記事を表示

AWS認定クラウドプラクティショナー合格に向けて Day3

# 前回の内容
[AWS認定クラウドプラクティショナー合格に向けて Day2](https://qiita.com/Ayako_0224/private/d3087ce68ab2ba7cbabb)

# 仮想化
仮想化… 物理的なインフラの構成を仮想化した単位に分けたり統合し利用する技術
SDI(Software Difined Infrascructure)…コードによってインフラ構成を実現する機能
JSONやYAMLファイルで記述することが多い

仮想化領域をセットアップし仮想化ソフトウェアを用いて容量を分割するなどして効率的に利用することができる。

## サーバーの仮想化
1台のサーバ上に複数のOSを動作させる
ホスト型(VMWARE)、ハイパーバイザ型、コンテナ方式(Docker)などがある。
### Docker
環境設定をコードで行うためファイルを共有すれば誰でも同じ環境を簡単に構築することができる
インフラの構築・削除がより簡単に早く行え、CI/CI/CDによる開発も行うことができる
## ストレージの仮想化
複数のストレージを統合してストレージプールを構成する

元記事を表示

AWS CDKのILocalBundlingでLambda FunctionとLayerを構築する

# 概要

AWS CDKを使ってLambda FunctionとLayerを構築する。
やりたいこととしては、

– FunctionのソースはTypeScriptで書く
– Functionにはnpmモジュールを含めない
– Layerはnpmモジュールのみ含める
– 開発中は `node_modules` を参照/解決できるようにする
– 事前準備のためのスクリプトを用意したくない
– 設定ファイルでパスをゴニョゴニョしたくない
– AWS CDK標準の仕組みを使う(FunctionとLayerへのバンドリングの話)

やってないこと/考慮してないことは、

– Layerにユーザー定義のモジュールを含める
– `sam local invoke` で動作すること
– `bash` の動かない環境でのローカルバンドリング

# ファイル構成

最終的にこのようなファイル構成になった(主要なファイルのみ)。
`project/package.json` の `devDependencies` には型定義やら開発時に必要なものが色々入っている。
`project/src/lambda

元記事を表示

EC2でWindowsインスタンスを立ててRealityCaptureやーる

# はじめに
EC2でWindowsインスタンス立てて、RealityCaptureやりたいよね

# 導入
1.AMIの選択
Deep Learning系のWindowsPCを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/501ae407-dd20-ae03-b168-5a3e1631adf2.png)

2.インスタンスタイプの選択
g4dn.xlarge
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/efbcb647-eecf-adcc-4c1a-efb0e6511961.png)

3.確認と作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63863/5d0efdfd-0054-ff4b-26ab-2f396e4ac555.png)

4.インスタン

元記事を表示

AppSyncでDynamoDBのトランザクション処理

# はじめに
この記事は [NTTテクノクロスAdvent Calendar 2022](https://qiita.com/advent-calendar/2022/ntt-tx) の 4日目の記事です。

NTTテクノクロスの井上です。
普段はAWS関連の業務をしています。

この記事では、
AppSyncでDynamoDBのトランザクション処理をおこなう方法についてご紹介します。

# 目次
1. [構成](#1-構成)
1. [DynamoDB](#2-DynamoDB)
1. [IAM](#3-IAM)
1. [AppSync](#4-AppSync)
1. [実行](#5-実行)

# 構成
作成するアーキテクチャはこのような図になります。

DynamoDBの2つのテーブルに、同時にデータを書き込む処理を作ります。

![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2318120/60f3de2e-fd76-d033-1e15-26030e13e631.png)

# Dynam

元記事を表示

AWS Lambdaの関数URLとコールドスタートの付き合い方について

この記事は、[Supershipグループ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/supership) の4日目の記事になります。

## はじめに
Supership株式会社の [@masahito-suzuki](https://github.com/masahito1977) です。
最近ではAWSやDatabricksに関する管理を中心にコストレポート・見える化などをAWS Lambdaを中心に作成しています。
今回Lambdaを久しぶりに利用していると見慣れない機能「関数URL」と言うものがあり、これについて調べてみると、なるほど「今までより簡単にWebアプリが作れる」ようで、更に深掘りして調べた結果を記載しまとめてみました。

serverless関連に興味のある方は是非見ていただければと思います。

## 関数URLとは
2022/04/05 より AWS Lambdaアップデートで新機能 `関数URL` が登場しました。
これまで`API Gateway`を使って、Lamdaを実行する形で

元記事を表示

TransitGatewayについて

# 本記事の内容
この記事では3回目のANS-C01を受けるにあたって勉強した内容を整理するための記事です。
今回はTransit Gatewayの記事となります。

# Transit Gatewayとは
Transit GatewayはVPCやオンプレ間の通信をハブ&スポーク型でルート管理するリージョナルサービスです。
TransitGatewayを使用する際は使用するリージョン毎にTransitGatewayを設置します。
TransitGatewayにアタッチできるサービスは以下
– VPC(リージョン内のみ)
– Direct Connect
– VPN
– 別リージョンのTransitGateway(Transit Gateway Peeringにより接続)

# Transit Gateway内のルート制御
アタッチしたリソース毎に1つルートテーブルを設置可能。
リソースからのTransitGatewayに送られた通信はリソース毎のルートテーブルのレコードをもとにルート先を決定する。
ルート決定時の優先順位は以下の通り
– 基本はロンゲストマッチ
– もし同じCIDR向け

元記事を表示

AppSync×DynamoDB(UPDATE編)

# 概要
AppSyncとDynamoDBを使用した簡易的なAPIの作成方法を紹介します。

この記事では、DBのデータを変更する処理を紹介します。

# 前提条件
– DynamoDBが用意されていること

# AppSync

## スキーマ
“`graphql
input CreateRadioInput {
id: ID!
program_name: String
cast: [String!]
weekday: Int
time: String
favorite: Boolean
}

type Mutation {
createRadio(input: CreateRadioInput!): Radio
updateRadio(input: UpdateRadioInput!): Radio # 今回追加する箇所
}

type Query {
getRadio(id: ID!): Radio
listRadio(filter: TableRadioFi

元記事を表示

【AWS】Lexのボイスボットに数字をそのまま読ませる方法(「123」を「イチニイサン」と読ませる)

# 1.はじめに
どうも、ARIの名古屋支社に勤務している愛知県民こと、
新藏(にいくら)と申します♪
(/・ω・)/

先日、Lexのボイスボットを作成したのですが、
「123」を「イチニイサン」と読ませるのに少々苦労しました・・・

:::note info
デフォルトの場合「123」は「ヒャクニジュウサン」と読まれます。
:::

そこで**今回はLexのボイスボットに数字をそのまま読ませる方法について**記事にしたいと思います!
AWSやLexについて勉強中の方の参考になれば幸いです。
(*^^)v

ちなみに、12月は**ARIのアドベントカレンダ**もやっていますので、
もしよろしければ、こちらも応援お願いします♪

https://qiita.com/advent-calendar/2022/ari-group

https://qiita.com/advent-calendar/2022/aichi_lover_yomoyama

# 2.前提条件
前提条件は以下となります。

* Lexボットが作成済であること

# 3.Lexの設定
では、早速設定していきましょう!

元記事を表示

呪文:&[]bool{true}[0], aws.Bool(true)

Golangを書いている時に、ワンライナーでbooleanのポインタを実装したいと考えていたら出会ってしまった**悲しき化け物**を紹介します。

### ワンライナーでbooleanのポインタを実装

ある日、Golangを書いているときにbooleanのポインターをワンライナーで実装したいという願望が生まれました。
そこで生まれたのがコイツです。

“`Golang
IsFoo: &[]bool{true}[0]
“`
~~`IsFoo: &true`~~ のように書ければいいのですが、Golangではbooleanのポインタを取ることはできません。

どうしてもワンライナーで実装したかったので、booleanのスライスの要素のポインタを取ることで解決しました。

### ワンライナー実装の仲間

booleanワンライナー実装は、以下の書き方でも可能です。
“`Golang
IsFoo: aws.Bool(true)
“`
`aws-sdk-go`を使っているプロジェクトであればこんな書き方もできます。

でもawsを使っている場所でもないのに`aws

元記事を表示

【AWS】クロスアカウントでDNS委任設定を行う

ミロゴス株式会社では複数のAWSアカウントを運用していますが、クロスアカウントで大元のドメインからサブドメインへDNSの管理を委任したい場合があります。
よくやる手順の割にまとまった情報がなかったので記事にしました。ついでにCloudFrontとAPI Gatewayへのサブドメイン内でのドメインの設定も合わせて記載しておきます。

## 前提
構成図は以下です。
![arch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141823/451d055d-6155-1aab-57e3-ef812752f977.png)
要件が単純なアプリなので、Next.jsはCSR/SSGのみ(next export)でCloudFront + S3でホストし、BFFを挟んでバックエンドへアクセスするように作っています。
Next.jsのサーバーは建てないで普通に素のNode.jsでLambdaを動作させていて、これらをCI/CD含めてほぼAWS CDKで完結させています。

ただ、ドメインの設定はACM周りの関係上

元記事を表示

CloudFormationで暗号化されたシングルAZのRDSを構築する方法

## 構成
![スクリーンショット 2022-12-04 4.12.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2983197/bb1ffc19-b3e9-06ff-59a8-02df901e4af0.png)

## 完成したテンプレート
“`:テンプレート
AWSTemplateFormatVersion: 2010-09-09
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:

Label:
default: RdsInstance
Parameters:
– DBName
– DBInstanceClass
– DBAllocatedStorage
– Engine
– EngineVersion
– DBUsername

元記事を表示

Spotインスタンスをもっと活用してみよう

こんにちは。NetAppの大野です。NetAppアドベントカレンダー4日目の記事になります。

アドベントカレンダーのお題には、「データ管理について」とありますが、
ちょっと方向を変えて AWSの Spotインスタンスの活用について書きたいと思います。

個人で リザーブドインスタンス/セービングプランとかは金額的にも、ちょっと無理ですが[^RI]、
Spotインスタンスは、再起動がたまに入るのが気にならないサーバ用途で 個人的に使っていたりします。

ここで「でも、SpotインスタンスだとInterrupt入ったときに消えちゃうでしょ?」と思った方には、是非読んでもらえればと思います。

[^RI]: こういう猛者もいるのでしょうか……?

## はじめに

記事の内容は以下となっており、2022/12/01時点の情報で記載しています。

– AWS EC2 Spotインタンスについて
– EC2の OnDemandインスタンスの代わりに、Spotインスタンスを使う事の検討
– 実際に[Stateful Nodes]を使ってみる

ちょうど re:Invent等もあり、AWSが提供す

元記事を表示

OTHERカテゴリの最新記事