- 1. 【Data + AI Summit 2022】McAfeeがDatabricks on AWSを大規模に活用する方法
- 2. EC2 Classic 環境廃止の確認(Macの場合)
- 3. Amazon SageMaker Studioにデフォルトで用意されているコンテナイメージのECRのURIを見つける方法
- 4. API Gateway、Lambda(Node.js)、DynamoDB を使ったAPIの作り方
- 5. Amazon ConnectとAmazon Chime SDKを連携してビデオ機能が利用できる問合せシステムを試してみた
- 6. AWS CLIを使ってVMWare・Hyper-Vなどの仮想データをAWSのEC2上に移行したい
- 7. オンプレミスとEC2 AutoScalingで負荷分散できる構成を検討した
- 8. AWS Certified Machine Learning – Specialty(MLS-C01) を取得しました
- 9. 【AWS SSO】AzureAD+AWSSSOで、弊社のAWSアカウントにおけるユーザー管理をAzureADに集約しつつ、アクセス権限をアカウント管理者側で管理できるようにしてみた
- 10. AWS Greengrass + Raspberry Pi Zeroの環境構築
- 11. s3とローカルとの間でファイルの簡易同期
- 12. せっかくAWS上に作ったk3sクラスタにローカルからアクセスしたいのだが、、、
- 13. FULL KAITENがAWS Athena移行に至った訳と、RustでAWS Athenaにリクエストを投げる際の実装例について
- 14. AWS Database Migration Service (DMS) でいくつかのテーブルにデータが入らないエラーを解消する方法
- 15. AWS NLB-ALB多段構成を組み、更にはパスベースルーティングを確認してみた。
- 16. Ectoのconfigに1行足してAuroraのフェイルオーバーに対応する
- 17. 【Qiitaでも使える】テキストから図が生成できるMermaidでAWS構成図をつくる
- 18. Terraform 入門から精通まで(二)
- 19. AWS Elastic Disaster Recovery Workshopをやる
- 20. AWS Cognitoでワンタイムパスワード(MFA認証)を設定していても自動テスト(Cypress)をする方法
【Data + AI Summit 2022】McAfeeがDatabricks on AWSを大規模に活用する方法
# はじめに
2022/6/27(月)~2022/6/30(木)に開催されたData & AI Summit 2022に関する最新情報をお知らせします。
本記事では、[McAfeeがDatabricks on AWSを大規模に活用する方法](https://dataaisummit.com/session-virtual/?v2477da705118cc74fd14460db021e1784e2eed5a7982c6482ec95cb2e86d259644b8741959f52a49e0e6908b82a9d860=A631D469348D640B7F3695570773A71CA4DD9B8565F014582F31ED522290929FA6EBDF3CFCDF0B9FDBFBFD874E55F5C0)を翻訳してまとめました。# アジェンダ
Databricks on AWSとはなにか?McAfeeがDatabricks on AWSをどのように運用したか、そのために何をしたか、移行と運用の両方についての話です。
・Databricks on AWSの簡単な概要
・McAf
EC2 Classic 環境廃止の確認(Macの場合)
EC2 Classic 環境が 2022年8月15日に廃止になるということで確認した時のメモ
Macでやりました
# セットアップ
・Python 割愛
・pip割愛ちょっとハマったところ
実行したら下記のようなメッセージをいただいた
“`
Traceback (most recent call last):
File “/Users/xxx/Documents/work/ec2-classic-resource-finder/py-Classic-Resource-Finder.py”, line 27, in
import boto3
ModuleNotFoundError: No module named ‘boto3’
“`こちらを参考にさせていただいてboto3をセットアップ
https://qiita.com/hiroyuki7/items/a2246511a4f24a75f02dチェックスクリプトはこれ
https://github.com/aws-samples/ec2-classic-resource-finder
Amazon SageMaker Studioにデフォルトで用意されているコンテナイメージのECRのURIを見つける方法
# はじめに
Amazon SageMaker StudioにはデフォルトでPyTorch、TensorFlowなどを組み込んだコンテナイメージが用意されています[^1]。このコンテナイメージを別の場所(AWS Batch)でも使いたくてECRのURIが書かれているドキュメントを探したのですが、見つからずに苦労した[^2]ので、備忘録として残しておきます。# ECRのURIの見つけ方
`/opt/.sagemakerinternal/internal-metadata.json`にECRのURIが記載されています。
例えば下記のようにしてこのJSONファイルを開くことで、ECRのURIが分かります。1. SageMaker Studioを開く
2. File -> New -> Terminal でターミナルを開く。
3. 下記のコマンドを実行する。
“`
cat /opt/.sagemakerinternal/internal-metadata.json
“`注意点として、将来的には動作が変更になる可能性があります。
# 参考:2022/0
API Gateway、Lambda(Node.js)、DynamoDB を使ったAPIの作り方
API Gateway、Lambda、DynamoDB を使ったAPIの作り方を備忘録も兼ねて記載します。
プログラム言語にはNode.jsを利用します。# システム構成
システム構成は以下のようになります。
![AWS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348676/d172c951-87f7-ef41-4bb4-cf660f65d99b.png)# システム概要
今回はサンプルとして、DynamoDBに格納されているイベント情報をPOSTリクエストで取得して、Jsonを出力するAPIを作ります。# 1. DynamoDBにテーブルを作成
最初にイベント情報を格納するテーブルを作成します。
![dynamodb1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348676/c813f1e4-6c70-8b35-a53a-57a532ede10a.png)テーブル名は **event**、
Amazon ConnectとAmazon Chime SDKを連携してビデオ機能が利用できる問合せシステムを試してみた
# 1.はじめに
コンタクトセンター最適化支援チームのbayashiです。一般的にコンタクトセンターでは電話音声やテキストチャットを通してお客様と応対することが多いですが、ビデオ機能としてWebカメラ、またはPCの画面共有を活用できればより利便性の高いカスタマーサービスを提供できると思います。
AWSサービスのAmazon Connectでは標準でビデオ機能は提供されていませんが、AWS公式ブログにAmazon Chime SDKと連携してビデオ機能が使えるシステムを紹介されていたので、実際に構築して動かしてみました。・Video-Call Escalation powered by Amazon Connect and Amazon Chime SDK
https://aws.amazon.com/jp/blogs/business-productivity/video-call-escalation-powered-by-amazon-connect-and-amazon-chime-sdk/
https://github.com/amazon-connect/video-
AWS CLIを使ってVMWare・Hyper-Vなどの仮想データをAWSのEC2上に移行したい
## 簡易流れ
・移行元の仮想データエクスポート
・AWS S3に仮想データアップロード
・S3からAMIイメージインポート
・AMIからEC2インスタンス起動
・各ネットワークなどの設定をする## VMImport参考手順
## S3へのアップロードは160GB以上であればAWS CLIでのアップロード作業が必要
https://qiita.com/seyself/items/43426f57c50021ea55f8※Web画面からのアップロードと同時にCLIのアップロードなどしていたら失敗する事があった、
1つずつの方が安全かと思われる## マルチパートアップロード時の問題
ファイルのアップロードが中途半端な状態で終了してしまった場合、中途半端なデータが裏側で残り課金され続ける## AMIへの複数仮想データファイルインポート方法
### AWS EC2ユーザーガイド
オンプレミスとEC2 AutoScalingで負荷分散できる構成を検討した
# 概要
負荷が小さい夜間はオンプレミスのみ、負荷が大きい日中はEC2 AutoScalingでインスタンスを増やしハイブリッドに処理を分散させたいという要件があり、構成を検討しました。## 課題
日中のみAutoScalingを稼働させるのはScheduled scalingで実現できるので、オンプレミスとEC2で負荷分散させる方法を考えました。
httpリクエストを受け付けるシステムのため、前段にはALBを配置します。オンプレミスのサーバーをターゲットにするため、ターゲットグループはIPターゲットにする必要があります。しかしIPターゲットにするとAutoScalingが新しいインスタンスをターゲットグループに自動登録してくれません。https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/getting-started-elastic-load-balancing.html
> ターゲットグループは、`instance` のターゲットタイプを指定する必要があります。Auto Scaling グループを使用する場合
AWS Certified Machine Learning – Specialty(MLS-C01) を取得しました
# はじめに
AWS認定コンプリートを目指すべく、MLS-C01を取得しました。# AWS Certified Machine Learning – Specialty(MLS-C01) とは
[この辺](https://aws.amazon.com/jp/certification/certified-machine-learning-specialty/)を参照ください。# 教材
機械学習の経験は全く無く、下記を約2週間かけて取り組みました。1. 書籍:[ディープラーニングG検定(ジェネラリスト)最強の合格テキスト](https://www.amazon.co.jp/gp/product/481561167X/)
– 最初は書籍無しで取り組むつもりでしたが、下記の問題集を見ても、さっぱり分からないため、購入しました。一般的には[公式テキスト](https://www.amazon.co.jp/%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92%E6%95%99%E7%A7%91%E6%9B%B8-%E3%83%87%E3%82%A3%E3%
【AWS SSO】AzureAD+AWSSSOで、弊社のAWSアカウントにおけるユーザー管理をAzureADに集約しつつ、アクセス権限をアカウント管理者側で管理できるようにしてみた
うぇっしゃっしゃーす。
クラウドアーキテクチャチームの齋藤です。AWSをご利用の方の中で、マルチアカウント運用されている方ってどれくらいいらっしゃるでしょうか。
アカウント一つならまだしも、いくつもAWSアカウントがあって個別にIAMユーザー発行とかしてると退職者アカウントの削除忘れとかあったり、色々面倒ですよね。え?わからないって?
ほんじゃぁ、ソースコードのいろんなところに同じような処理をコピペしたせいで、修正加えるときに全部手作業で直さないといけないめんどくささを思い出してください。
めんどいでしょ?
同じような処理は一か所にまとめて使いまわせるほうがメンテナンス楽でしょ?
いやオブジェクト指向的な話したいわけじゃないんですけどね。そんなわけで、いろんなところで独自に管理してたアカウント情報を一か所にまとめて、管理の手間やリスクを減らしてやろうじゃん。
っていう話です。
別にマルチアカウントじゃなくても、社内のいろんなアカウント管理が必要なものは全部一つのIdPにまとめたいみたいな話もあると思うので、参考になると思います。それじゃぁいってみよう。
# 概要
AWS Greengrass + Raspberry Pi Zeroの環境構築
Raspberry Pi Zero WでAWS Greengrassを導入しようとした時のメモです。
## 参考
https://mstevetodd.com/raspberrypi-zero-w
raspberrypi zero wモデルだったので、Java 8 までしか動かないことに注意!
Java 11などを入れようとすると失敗します。## スペック
“`
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseyeuname -a
Linux rpi 5.15.32+ #1538 Thu Mar 31 19:37:58 BST 2022 armv6l GNU/Linux
“`## OS、Javaのダウンロード
`Raspberry Pi OS 32 bit`をRaspberry Pi Imagerでダウンロードした。
s3とローカルとの間でファイルの簡易同期
s3上のファイルを頻繁に扱う場合の作業方法について
・s3上のファイルをマウントして直接作業する
同一ディレクトリ上に一時ファイルなどが生成されるような場合に適さない(一時ファイルの更新が重い)・ローカルで作業して、定期的にAWS CLIのS3 syncで同期
単純に更新日時を元に同期するので、複数人で編集の競合が発生した場合に困る。バージョン管理みたいな多機能は望まないが、スクリプトでシンプルに同期&編集競合を検出したい。
ということでスクリプトを書く。
“`c#
# -*- coding: utf-8 -*-
import boto3, sys, time, os, datetime, json
import pprint# 前回同期時の「localファイル一覧」「s3上のファイル一覧」を覚えておく。
# s3上とローカル、「更新日時の新しい方」ではなく、「前回から変更があったか?」で判定させる。(更新日時の新旧は信用しない)
# 誤削除が怖いので、「片方にのみ存在するファイル」について、削除に関する処理は行わない(前回の存在有無に関わらず)。片方にのみ存
せっかくAWS上に作ったk3sクラスタにローカルからアクセスしたいのだが、、、
この間書いた記事で、AWS上にk3sクラスタを作ることができました。
AWSのインスタンスにログインしてからkubectlで操作してもよいのですが、せっかくなのでローカルのWindows端末からもアクセスしたいですよね。でも、どういうわけかてこずってしまいました。# 1.準備
## 用意したインスタンス
**サーバー用×3**
名前:k3s-a,k3s-b,k3s-c
インスタンスタイプ:t3.large
ストレージ:20G
AMI:Debian 11を指定**エージェント用×1**
名前:k3s-d
インスタンスタイプ:t2.micro
ストレージ:20G* 各インスタンスは、同じサブネットに所属するように設定しておきました。
* セキュリティグループも各インスタンス同じものを設定しておきます。このセキュリティグループは、同じセキュリティグループに所属するインスタンスからは無制限にアクセスできるようにしておく必要があります## ソフトウェアのバージョン
**k3s側**
Debian GNU/Linux 11
k3s version v1.23.8+k3s1 (53f
FULL KAITENがAWS Athena移行に至った訳と、RustでAWS Athenaにリクエストを投げる際の実装例について
# はじめに
フルカイテンが提供する在庫分析SaaS「FULL KAITEN V3」(以下FULL KAITEN)では、顧客データをETLを介してデータストアに格納しています。日次バッチとして、ETLでのデータ処理→データストアに処理したデータの投入を実行しています。
“`mermaid
flowchart LR
subgraph 日次バッチ
id1(ETL)–>id2(データ投入)
end
id2–>id3[(データストア)]<-->id4(WebAPI)
“`AWS Athana移行前のFULL KAITENでは、データストアとして、[Elasticsearch](https://www.elastic.co/jp/elasticsearch/)を使用していました。多くの顧客データを扱うようになり、Elasticsearchへのデータ投入後から利用可能な状態になるまでに時間がかかってしまう問題が発生しました。そこで、データストアをS3へのデータ投入後に速やかに利用することができる[AWS Athana](https://aws.amazon.com/jp/a
AWS Database Migration Service (DMS) でいくつかのテーブルにデータが入らないエラーを解消する方法
# 現象
AWS Database Migration Service (DMS) で複数のテーブルにデータを入れようとすると、いくつかデータが入らないテーブルが出てきます。# 原因
テーブルにリレーションを張っていると、参照元テーブル→参照先テーブルの順にデータを入れないとデータが入りません。
しかしAWS Database Migration Service (DMS)は順番関係なくデータを入れようとしますので、データが入らないことがあります。# 対応策
エンドポイントの「追加の接続属性」に“`
initstmt=SET FOREIGN_KEY_CHECKS=0
“`を入れておくことで、リレーションのエラーを回避させることができます。
エンドポイント→エンドポイント名を選択→右上の「アクション」ボタンを押し「変更」ボタンを押す→「エンドポイントの変更」画面で
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/561175/0a071ca7-4df9-2d16-bc
AWS NLB-ALB多段構成を組み、更にはパスベースルーティングを確認してみた。
# 概要
このページでは、AWSにおける以下の確認内容を記載します。①NLB-ALB多段構成を行うことで静的なIPアドレスで、ALBが利用できること(基本的なバランシングが出来ていること)。
②さらに、NLB-ALB多段構成にて、本来ALBがもつパスベースルーティング(パスバランシング)機能が利用できること。# はじめに
オンプレ設備からDirectConnect(以下、DX)経由で、アドレス帯が異なるAWS上のELBと通信を行うことがあると思います。そのAWS上で利用されるアドレス帯がオンプレ設備側で許容することが出来ない場合、
NAT(Network Address Translation)を利用することが多くオンプレ側にもアドレス消費を求められるアーキテクチャになると思います。特にELBがALBを使う場合には、IPが静的にアドレスをアサインすることができないため
ある程度利用されるIPアドレスを想定したアドレスを確保しなくてはいけませんでした。例)
![pptお絵描きネタ.png](https://qiita-image-store.s3.ap-north
Ectoのconfigに1行足してAuroraのフェイルオーバーに対応する
MyXQLやPostgrexのドキュメントを読めば書いてあるのですが、結構調査に時間がかかったのでメモ。
MySQLの場合は`disconnect_on_error_codes: [:ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION]`、また、PostgreSQLの場合は`disconnect_on_error_codes: [:read_only_sql_transaction]`を足せばOKです。
MySQLの例
“`elixir
config :my_app, Repo,
database: “ecto_simple”,
username: “user”,
password: “pass”,
hostname: “localhost”,
disconnect_on_error_codes: [:ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION]
“`### 備考: Auroraのフェイルオーバー問題とは
AWSのAuroraはMultiAZでフェイルオーバーすると、ReaderとW
【Qiitaでも使える】テキストから図が生成できるMermaidでAWS構成図をつくる
# はじめに
Mermaid記法で記述したテキストからダイアグラムの図が生成できるMermaidでAWS構成図をつくる方法を紹介します。
また、MermaidはGithubやQiitaなどのWebサービスやVSCodeやIntelliJなどのツール、コマンドやWebシステムでも使用できますので、詳細は[[【Qiitaでも使える】テキストから図が生成できるMermaidについてのザックリ解説]](https://qiita.com/b-mente/items/97a4296666faccd53a72) (以下ザックリ解説)をご覧ください。
Mermaidのことはなんとなくわかったけど、AWSの構成図や配置図が描けないか考えていた人にも参考になれば幸いです。
# AWSの構成図をつくる
## ・どんな感じの図ができるのか
AWSの構成図を描くときにはAWS公式から提供されている[[AWS Architecture Icons]](https://aws.amazon.com/jp/architecture/icons/)というAWSのダイアグラムを書く際のアイコンセットを利用す
Terraform 入門から精通まで(二)
## 概要
今回、Terraformを使って、AWS VPCを構築して、VPCのpublic subnetに外部からアクセスできるec2を起動します。## システム構成図
![截屏2022-07-07 0.01.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2531066/747d23e8-8bbd-e036-126c-4316b3cda96c.png)## やること
– VPCを構築
– Internet Gatewayを作成
– Route Tableを作成
– サブネットを作成
– Route Tableにサブネットを関連付け
– port22,443,80を許可Security Groupを作成
– network interfaceを作成
– 作成したnetwork interfaceにElastic IPを関連付け
– EC2を作成して、ec2にApacheをインストールして、起動する## 前提条件
・MAC
・VS code
・リソースを作成するためのAWSの権限設定をも
AWS Elastic Disaster Recovery Workshopをやる
# はじめに
この記事は[AWS Elastic Disaster Recovery Workshop](https://catalog.us-east-1.prod.workshops.aws/workshops/080af3a5-623d-4147-934d-c8d17daba346/en-US)をやった際のメモ書きです。
リンク先のWorkshopは英語で書かれています。もし、英語を読むことが大変である方はこの記事をぜひ参考にしてください。
ただし、リンク先の情報を全てこちらに記載しているわけではないため、詳細な情報を得たい方は本家Workshopを実施してみてください。# Introduction
AWS Elastic Disaster Recovery(DRS)は、OS、データベースやアプリケーションなどのマシンを、低コストなステージングエリアに継続的にレプリケートするサービスです。
災害発生時にDRSに指示することで、レプリケートしていたマシンをリカバリーインスタンスとして、数分で自動的に起動することができます。以下はDRSの基本的なネットワーク図です。
左手
AWS Cognitoでワンタイムパスワード(MFA認証)を設定していても自動テスト(Cypress)をする方法
## Cypressとは
cypressはブラウザをクライアントとして、WebアプリケーションのE2Eテスト(End to End Test)を実現するためのテストツールです。テストコードをjavascriptのコードで記述することでテストを自動化することができます。
https://www.cypress.io/
### Cypressと認証
cypressでE2Eテストを行う際の対象Webシステムが認証を必要とする場合、cypress側が認証を通過する必要があります。IDとパスワードのみの認証であれば、テストコード側に認証情報を渡してキーボード入力で認証を通過することが可能です。ただ、最近のアプリケーションではSNS認証や多要素認証など様々な認証方法があります。
cypress公式でもAuth0やAWS Cognitoなど最近よく使われる認証サービスに関するガイドがあり、実装の参考になります。https://docs.cypress.io/guides/end-to-end-testing/amazon-cognito-authentication
私がやりたかったA