AWS関連のことを調べてみた2023年02月18日

AWS関連のことを調べてみた2023年02月18日
目次

Transformerに自分の好みのDLsite音声作品を学習させて、癖に刺さる新作を毎日通知するシステムを作った話

# 作ったもの
**DLsiteの新作音声作品をクローリング -> 好みかどうか推論 -> 好みならSlack通知**をするシステムを完全サーバーレス(AWS SAM)で構築しました。さらなる精度向上のため、Slackメッセージのボタンをもとに教師データを蓄積する処理も作りました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119757/792e01f9-28f1-f742-bac0-266789cdb919.png)

https://www.dlsite.com/home/

## デモ(ぼかしMAX)
とてもわかりにくいですが、好みであろう作品がPOSTされているSlackの画面です。各メッセージについている「興味あり!」「別に…」ボタンを押すとLambdaが起動し、DynamoDBに新たな教師データとして保存されます。
![demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119757/

元記事を表示

LambdaでSlackからのButton Actionを受け取って、それに応じて元のメッセージをupdateする

# やりたいこと

何らかのSlack app(Bot)からボタン付きのメッセージをPOSTし、押されたボタンに応じて元のメッセージを更新する。
![Animation.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119757/8e2aadd1-1343-0e33-1719-3fd13f140ff8.gif)
個人的には機械学習のアノテーションに使おうと思っていて、ボタンに応じた値をDBに保存して、元のメッセージに`アノテーション済みです`みたいな文言を出したいなと考えてます。

# 元のボタン付きメッセージの作り方
まず、元のメッセージはこのように作りました。
例は2択ですが、`elements`内の要素を増やせば何択でもできると思います。

また、`SLACK_TOKEN`はSlackアプリであればアプリの管理画面上の`OAuth & Permissions > OAuth Tokens for Your Workspace`から取得できるはずです。

“`python
# !pip insta

元記事を表示

【AWS/Python】Cloud9 環境で Lamda layer にアップロードするための zip を作成する

# Cloud9 環境で Lambda Layer にアップロードするための zip ファイルを作成する

## 要約
– Lambda に外部ライブラリを組み込むには、Lambda Layer が便利
– Lambda Layer へは python.zip としてアップロードする必要がある
– 非 AmazonLinux 環境で zip 化したパッケージは Lambda 上で呼び出せない可能性がある
– Cloud9 で zip 化→そのまま S3 にアップロードすると結構楽でした

## 前提

### Lambda の実行環境で、外部ライブラリを使うための方法

1. 外部ライブラリを含めて zip したものをデプロイする
– ライブラリのサイズが大きいときにインラインコード編集ができなくなることで、ブラウザ上でちょこっと確認とかができなくなる
2. 外部ライブラリを Lambda Layer として用意しておき、Lambda 上でそれを呼び出す
– 一つ Layer を用意しておけば、複数の関数で呼び出すことができる

容量的にも、管理的にも Lambda L

元記事を表示

OracleプラグインデータベースのAmazon RDS for Oracleへの移行

# はじめに
2/16のAWS blogにて [Migrate your Oracle pluggable database to Amazon RDS for Oracle](https://aws.amazon.com/jp/blogs/database/migrate-your-oracle-pluggable-database-to-amazon-rds-for-oracle/) が発表されました。
RDS for Oracleも[マルチテナント構成(※)がサポート](https://dev.classmethod.jp/articles/rds-for-oracle-supports-multitenant-cootainer-db/)されたのは最近だったので、ついに PDB の Unplug & Plug で移行できるようになったのかな、と思ったのですが残念ながらblogの内容は PDB のスキーマを全てexpdpして、それをRDSへimpdpする、という物でした。
(※)正確にはRDSはCDBとPDBが1:1となるシングルテナント構成のみがサポートされています

とはいえ

元記事を表示

AWSCLI+ShellScriptでクラウド基盤構築を効率化する

大畑です。

皆様は「AWSCLI」を使ったことはございますでしょうか。

私はインフラ部門に所属し、AWSを主に使っているのですが、クラウド基盤の構築は基本コンソールを使って行うことが多いです。

またAWSCLIを初めて触った時も、

「ドキュメントでコマンドを調べて入力するの面倒だなあ、コンソールしか勝たん」

のような状態でした。

しかし、現場でShellを使い始めてから、

「AWSCLIやるやん、ShellScriptと組み合わせたら最強やん」

と意見が反転し、謎の関西弁が出るようになりました(*’▽’)

ということで今回は

「AWSCLI+ShellScriptでクラウド基盤構築を効率化する」

をお送りします。

# AWSCLIとは?

AWSCLIとは、AWSコマンド(C)ライン(L)インターフェース(I)の略称で、コマンドの入力を通じてAWSサービスの管理を行える公式ツールです。

使用するためには

1.CloudShellを使う
2.AWSCLIをお使いのパソコンにインストールして使用する

のどちらかを選択できます。事前のインストール、およびセットア

元記事を表示

AWS ChaliceとAWS CDKを統合して、L2 ConstructでStepFunctionsを定義してみた

# はじめに

みずほリサーチ&テクノロジーズ株式会社 先端技術研究部の@yosuke_kosakaです。
今回は、AWS ChaliceとAWS CDKの統合の発展形として、AWS CDKのStep FunctionsのL2 Constructを利用して、Chaliceで定義したAPIとStep Functionsを統合しました。

# そもそもAWS Chaliceとは?

サーバーレスアプリケーションをAWSで作成するためのPythonのフレームワークです。
少量のコードで、API GatewayとLambdaを数分で作成してくれます。

【参考】
[Chalice公式](https://aws.github.io/chalice)
[爆速 API 開発を実現するサーバーレスアプリケーション開発向けフレームワーク](https://aws.amazon.com/jp/builders-flash/202003/chalice-api/?awsf.filter-name=*all)

# 前提

Chaliceの[Quick Start](https://aws.githu

元記事を表示

ChatGPTに「パブリックサブネットとプライベートサブネットを含むVPCを作成するAWS Cloudformationのテンプレート教えて」と聞いてみた

標題通りです、結果出てきたコードが下記、動くかどうか試してはないけど十分に実用に耐えるんではないかと思う。


#### 質問(1)パブリックサブネットとプライベートサブネットを含むVPCを作成する AWS Cloudformationのテンプレート教えて

出力されたコード

“`ruby:qiita.rb
{
“Resources”: {
“MyVPC”: {
“Type”: “AWS::EC2::VPC”,
“Properties”: {
“CidrBlock”: “10.0.0.0/16”,
“Tags”: [
{
“Key”: “Name”,
“Value”: “MyVPC”
}
]
}
},
“PublicSubnet”: {
“Type”: “AWS::EC2::Subnet”,
“Pro

元記事を表示

【読書】社会人1年目で読んだ本をおすすめ度とともに紹介する

大畑です。

大学を卒業し、22年新卒社会人になってから早くも1年が経とうとしています。
もう数ヶ月で後輩ができ、新卒カードは有効期限切れになるのが信じられません。( ;∀;)

私はインフラ領域を担当しており、この一年は特にAWSに触る機会がとても多く、AWS資格も3つ取りました。

今回はこれから社会人になる2023年新卒の方、またAWSをこれから触りたい方向けに、

「社会人一年目で読んだ本をおすすめ度と共に紹介する」

をお送りします。

# 社会人一年目で読んだ本 (AWS編)

AWSにまつわる本をまとめました。

資格取得のための本も載せているため、これからAWSの資格取得を目指される方もぜひご覧ください。

### AWSの仕組みと技術がしっかりわかる教科書

内容:AWSとは何かから始まり、主要なサービ

元記事を表示

ヒューマンエラーの少ないCloudFormationテンプレートの作り方

こんばんは、大畑です。

私事ですが、AWSを学び始めて半年ほどが経ちました。

業務でAWSを使用したクラウド環境の構築を行う際に、CloudFormationというサービスをよく触ります。

CloudFormationはクラウド基盤をコード化する(IaC : Infrastructure as Code)ことで

・Git等を使用したインフラ基盤のバージョン管理ができる
・構築を自動化し、業務効率化できる
・開発環境のクラウド基盤を複製し、ステージング環境、本番環境に同等の構成が作れる

など、様々なメリットを受けることができます。

一方で、yamlやjsonでコードを記述する際や、CloudFormationをコンソールから使用する際にはどうしても人の手が加わります。
これはエラーの原因となりえるため、なるべく排除していきたいところです。

ということで今回は

「ヒューマンエラーの少ないCloudFormationテンプレートの作り方」

について書いていきたいと思います。

# 【初心者向け】CloudFormationとは

> AWS CloudFormati

元記事を表示

【AWS】CloudFormtionでブログサービスを構築してみた(05.Waf編)

# 01.はじめに
[【AWS】CloudFormtionでブログサービスを構築してみた(概要編)](https://qiita.com/1k5/items/4f6d61373e80f824bd9a)の最終回である。
過去に公開した記事は下記の通りである。
・[【AWS】CloudFormtionでブログサービスを構築してみた(概要編)](https://qiita.com/1k5/items/4f6d61373e80f824bd9a)
・[【AWS】CloudFormtionでブログサービスを構築してみた(01.Network編)](https://qiita.com/1k5/items/d268697691ef2ef3dd0e)
・[【AWS】CloudFormtionでブログサービスを構築してみた(02.EC2,RDS,ALB編)](https://qiita.com/1k5/items/5acca0ee627ec37b56da)
・[【AWS】CloudFormtionでブログサービスを構築してみた(03.S3,CloudFront編)](https://qiita.com/1

元記事を表示

【AWS】CloudFormtionでブログサービスを構築してみた(04.Route53編)

# 01.はじめに
[【AWS】CloudFormtionでブログサービスを構築してみた(03.S3,CloudFront編)](https://qiita.com/1k5/items/a19cb65bb749b985970c)の続きである。
過去に公開した記事は下記の通りである。
・[【AWS】CloudFormtionでブログサービスを構築してみた(概要編)](https://qiita.com/1k5/items/4f6d61373e80f824bd9a)
・[【AWS】CloudFormtionでブログサービスを構築してみた(01.Network編)](https://qiita.com/1k5/items/d268697691ef2ef3dd0e)
・[【AWS】CloudFormtionでブログサービスを構築してみた(02.EC2,RDS,ALB編)](https://qiita.com/1k5/items/5acca0ee627ec37b56da)
・[【AWS】CloudFormtionでブログサービスを構築してみた(03.S3,CloudFront編)](https:

元記事を表示

【AWS】CloudFormtionでブログサービスを構築してみた(03.S3,CloudFront編)

# 01 はじめに
[【AWS】CloudFormtionでブログサービスを構築してみた(02.EC2,RDS,ALB編)](https://qiita.com/1k5/items/5acca0ee627ec37b56da)の続きである。
過去に公開した記事は下記の通りである。
・[【AWS】CloudFormtionでブログサービスを構築してみた(概要編)](https://qiita.com/1k5/items/4f6d61373e80f824bd9a)
・[【AWS】CloudFormtionでブログサービスを構築してみた(01.Network編)](https://qiita.com/1k5/items/d268697691ef2ef3dd0e)
・[【AWS】CloudFormtionでブログサービスを構築してみた(02.EC2,RDS,ALB編)](https://qiita.com/1k5/items/5acca0ee627ec37b56da)

`この記事で扱うものはコンポーネントは下記である。`
1.S3
2.CloudFront

# 02 構成図
下記のオレンジ枠

元記事を表示

【AWS】CloudFormtionでブログサービスを構築してみた(02.EC2,RDS,ALB編)

# 01.はじめに
【AWS】CloudFormtionでブログサービスを構築してみた(概要編)の続きである。
過去に公開した記事は下記の通りである。
・[【AWS】CloudFormtionでブログサービスを構築してみた(概要編)](https://qiita.com/1k5/items/4f6d61373e80f824bd9a)
・[【AWS】CloudFormtionでブログサービスを構築してみた(01.Network編)](https://qiita.com/1k5/items/d268697691ef2ef3dd0e)

`この記事で扱うものはコンポーネントは下記である。`
1.EC2
2.ALB
3.RDS(スナップショットを復元する)

`また、テンプレートを投入後、手作業が発生するのでこちらも対応する。`
`SSM経由でEC2にログインして実施する`
1.[こちら](https://qiita.com/1k5/items/32bbe213596aabcf3a59)でスナップショットを復元したRDSの接続先が
http\://localhost:500になっている(S

元記事を表示

【AWS】CloudFormtionでブログサービスを構築してみた(01.Network編)

# 01.はじめに
[【AWS】CloudFormtionでブログサービスを構築してみた(概要編)](https://qiita.com/1k5/items/4f6d61373e80f824bd9a)の続きである。
今回から実際のコードを記述する。
`この記事で扱うものはコンポーネントは下記である。`
1.VPC

2.Internet Gateway

3.Route Table

4.セキュリティグループ

5.サブネット

6.VPCエンドポイント

7.Route53(ゾーン登録のみ)
  ※後続の証明書発行でゾーン登録が
   必要になるのでこのタイミングでゾーンだけ作成しておく。[参考](https://docs.aws.amazon.com/ja_jp/acm/latest/userguide/dns-validation.html)
   
# 02.構成図
構成図にすると下記のようになる。
![構成図2-Network.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1050566/bd

元記事を表示

AWS EC2インスタンスで、OSのテンプレートに入れておくと便利なもの②

[前回](https://qiita.com/If_it_bleeds-we_can_kill_it/items/9280b6aa74263963d552)の続き。

前回はRHELにSSM-AgentとCloudwatchAgentをインストールした。
このあとはIAMロールの設定を行う。

IAMよりロールを作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/fb75b6e2-d8b9-aee6-148b-e3e573c357c2.png)

AWSサービスを選ぶ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/0ddedb76-2662-45d5-b23c-a3ea3bf0b512.png)

ユースケースとしてEC2を選ぶ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazona

元記事を表示

【AWS】CloudFormtionでブログサービスを構築してみた(概要編)

# 01.はじめに
マネジメントコンソールで構築したブログサービスをコード化したいと思い、構築してみた。
簡潔に言うとEC2にWordpressをインストールして、ブログサービスを公開するものである。
また、障害時にはSorryページを配信する。
なお、今回使用したEC2のAMIとRDSのスナップショットは[こちら](https://qiita.com/1k5/items/32bbe213596aabcf3a59)で取得したものを使用している。
一部コード化できていない部分はあるが(後述)、概ねCloudFormtionで構築している。
なお、一つの記事にすると長すぎるので下記要領で分割して記事を公開する。

・[【AWS】CloudFormtionでブログサービスを構築してみた(01.Network編)](https://qiita.com/1k5/items/d268697691ef2ef3dd0e)
・[【AWS】CloudFormtionでブログサービスを構築してみた(02.EC2,RDS,ALB編)](https://qiita.com/1k5/items/5acca0ee6

元記事を表示

AWS EC2インスタンスで、OSのテンプレートに入れておくと便利なもの

AWSでEC2インスタンスのOSといえば、いつもAmazon Linux2を使っていた。昔はAmazon Linuxの時代もあったけれど、いつの間にかサポート期限が切れて、AL2切替対応とかを騒ぎながらやってた時期もあったな。。。

Amazon Linux2も気が付けばサポート期限が近い。2025年まで期限はあるが、5年以上使う場合、ライフサイクルが短い。
このためRed Hat Enterprise Linux を選定したが、使ってるディストリビューションが同じFedoraだから、さほど困ることはなかった。ただ、ハマりポイントはあるので、そこをご紹介。

AWSで複数のEC2インスタンスを構築するとき、1台マスター的なOSテンプレートを作って、それをAMIコピーするとデプロイの時短となる。VMware時代もやっていた手法。

備忘兼メモ。以下はLinux(RHEL8.6)での手順だが、手順は異なれど、Windowsも同様に設定しておくといいと思います。

# 前提
・EC2インスタンスがインターネットに接続できること。
※またはSSMのエンドポイントが接続できるインスタンスである

元記事を表示

CodeBuild operational notification 対応

# 課題
AWS から CodeBuild operational notification が届きました。

> We are reaching out to you because you ran a build using the Ubuntu standard 4.0 [1] Docker Image, in the last 30 days.
Starting March 30, 2023, AWS CodeBuild will be moving these images to an unsupported status and they will not be cached on the build hosts anymore.
>
> You may continue using these images for your builds, but will notice an increase in provisioning latency after March 30, 2023.
These images will also not be getting any n

元記事を表示

ERROR: `GLIBC_2.29′ not found |Ruby AWS SAM で Nokogiri 使用時の回避方法

AWS SAMでLambdaを動かそうとした時、以下のエラーが出たため修正した。
M1だと発生するのかもしれない。

“`zsh
$ sam local invoke HelloWorldFunction –event events/event.json
Invoking app.lambda_handler (ruby2.7)
Local image was not found.
Removing rapid images for repo public.ecr.aws/sam/emulation-ruby2.7
Building image…………………………………………………………………………………………………………………………………………………………………………………………………….

元記事を表示

AmazonLinux2に最新のMariaDBをyumインストール

# AmazonLinux2へのMariaDBのインストール

通常の方法でMariaDBを導入する場合、次のような感じになります

“`
$ sudo yum -y update
$ sudo yum -y install mariadb-server
“`

これでインストールされるMariaDBのディストリビューションは `mariadb-server.x86_64 1:5.5.68-1.amzn2` (MariaDB 5.5.68) になります。

これを最新のディストリビューションにするためには、オフィシャルページの通り、yumのレポリストを作成(編集)して、その情報に基づいてインストールすることになります。

https://mariadb.org/download/?t=repo-config

念のためですが、バージョンが新しければ新しいほど良いというわけではありませんので、必要に応じて導入するバージョンを選択してください。(今回はサーバー設定からのスクラッチビルドだったため、ついでに最新版にしてみました)

https://qiita.com/katzueno/i

元記事を表示

OTHERカテゴリの最新記事