AWS関連のことを調べてみた2021年07月14日

AWS関連のことを調べてみた2021年07月14日
目次

AWS Elastic Beanstalk で作成したWordPress環境で、カスタムパーマリンクを設定すると404になってしまう問題の解決(Nginx)

# 発生した問題

## WordPressでカスタムパーマリンクを設定すると、記事ページなどが404になってしまう

「基本」であれば問題は無い。
しかし、カスタムパーマリンクに変更すると記事ページなどが404になってしまう。また、投稿ページでも一部JavaScriptファイルが404で読み込めないエラーが発生し、投稿、下書き保存などができなくなってしまう。

![スクリーンショット 2021-07-13 13.24.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85825/9a11a3b0-fcb8-ef45-6cf6-343c19cf7963.png)
![スクリーンショット 2021-07-13 13.53.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85825/5d1f8ec4-39e5-9d35-880a-3a81989b0660.png)

補足だが、ここで言う「カスタムパーマリンク」は「基本

元記事を表示

AWSソリューションTag Tamerを実装してみた

# はじめに

 AWSのソリューションTag Tamerを実装します。
 Tag Tamerは、タグ付けに関するソリューションです。
 試した感じだと、習熟に多少の時間が必要そうです。

https://aws.amazon.com/jp/about-aws/whats-new/2021/06/new-aws-solutions-implementation-tag-tamer/

https://aws.amazon.com/jp/solutions/implementations/tag-tamer/

 Tag Tamerはパブリック用とプライベート用がありますが、本記事はパブリックを選択しています。
 プライベート用はVPNまたはDirect Connectが必要なため、構築に時間とコストがかかってしまうからです。

 本記事では実装ガイド通りに行って、スムーズにいかなかったところだけ記載しています。
 公式実装ガイドと、以下のclassmethod様の記事を非常に参考にさせていただきました。

https://dev.classmethod.jp/articles/tag-

元記事を表示

AWS超絶初心者がSESを使ってメールの一斉送信やってみた

筆者のレベル感は

– AWSの構成図は読める、それぞれの機能の概要はなんとなく分かる
– AWSでの実装経験はゼロ(システム開発経験もゼロ)

なので、生暖かく見守ってください。

#やりたいこと

リスト化されたメールアドレス宛に、対応する宛名を文面に盛り込んだメールを送りたい。

基本的には以下の記事を参考に実装。項目も引用させてもらっています。

https://dev.classmethod.jp/articles/bulk-email-ses-lambda/

#SESで送信元メールアドレスを登録
ここはうまくいった。方法はネットに溢れているので割愛

#DynamoDBでユーザーテーブルを作成
???
userId(PK)とはなんぞや???プライマリキーということは分かったけど、
a06b7c45-1303-45bf-a2d7-fec53fbc224cとかが何を表しているのか分からないので、
いったん以下のように記載

| userId(PK) | name | emailAddress |
|:-:|:-:|:-:|
| 1|太郎 | test1@XXX

元記事を表示

ec2-linux(cent)でdpkgできない場合の3行

“`bash
$ sudo amazon-linux-extras install epel
$ sudo yum repolist
$ sudo yum -y install dpkg-devel dpkg-dev
“`
1行目は「sudo yum install epel」と書きたいところですが、
歯を食いしばって「sudo amazon-linux-extras install epel」と書いてみましょう。

元記事を表示

初学者がハマったLambda@Edgeの落とし穴たち

# 概要

私はAWS歴1年目のおじさんエンジニアです。当記事は、私が初めてLambda@Edgeを書くにあたってハマったポイントの備忘録です。

ご存じの方には今更な内容かと存じます。基本的には[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html)に記載してあることばかりです。

なお、私の都合上、ランタイムはNode.js前提です。

# 落とし穴たち

## リージョンはus-east-1(バージニア北部)のみ

これは皆さま最初に驚くポイントかと思いますが、Lambda@Edgeを設置できるリージョンは**us-east-1**のみです。

## 環境変数が使えない

Lambda@Edgeでは環境変数が使えません。私は今回扱いませんでしたが、どうしてもLambda@Edgeで機微情報を扱いたい場合には、SecretsManager等を参照する手段が一般的な様です。

## メモリなどの制約が厳しい

Lambda@E

元記事を表示

Flutter+Amplify(DataStore)でデータ登録がAWS側に反映されない

# 内容
公式の手順に沿ってAmplifyのDataStore使ってデータ登録してるのに、
ローカルには保存出来てるっぽいが、クラウド側のDynamoDB見ててもデータ全然入ってこない!

コンソール見ててもそれっぽいログ流れてこないし、めっっちゃ悩んだ。

※公式は以下を参照
https://docs.amplify.aws/lib/datastore/getting-started/q/platform/flutter

“`dart
Todo newTodo = Todo(name: ‘HOGE’);

try {
await Amplify.DataStore.save(newTodo);
List todos = await Amplify.DataStore.query(Todo.classType);
print(todos); // ここでは取得出来ているので、どうやらクラウド側への反映がうまくいってない?
} on DataStoreException catch (e) {
pri

元記事を表示

AWSでAIサービスを使ってみる〜③polly編〜

## Amazon Pollyとは
AIのテキスト読み上げのサービスです。テキストから音声を合成することができるAWSのサービスです。また、他言語にも対応指定たりニューラル音声といったより流暢にテキスト読み上げる機能(現状一部言語のみ)もあります。

## テキストから音声ファイルを作成してみる

エディタでpythonファイルを作成し、pollyサービスクライアントを利用してテキストの音声合成を行います。

“`warabimochi.py
import boto3
import contextlib
import os

#pollyサービスクライアントを作成
polly = boto3.client(‘polly’)
#音声合成のテキスト
text=’Nさんは次のミーティングまでにSさんにわらび餅を買う予定です。’

#テキストから音声を合成
result = polly.synthesize_speech(
Text=text, OutputFormat=’mp3′,VoiceId=’Mizuki’)

#出力ファイルのpath
path = ‘warabimochi.m

元記事を表示

Vue.jsで環境変数を超簡単に切り替える

# 環境変数
本番環境、検証環境、開発環境の複数環境を作成したときにAPIの向き先を変えたりする必要がある。その都度ベタがきのコードを改修してfirebase,AWSにデプロイするなんていうのは嫌ですよね?
また、中にはビルド時に秘密にしたい秘密情報が必要な場合があります。そういったものをデプロイ・ローカルホストの起動時だけ利用できるように設定する簡単な方法がVue.jsには用意されています。

## 環境変数の切り替え
環境変数の切り替えをローカル上での起動とビルド時にできるようにするための7ステップを紹介します。

###1 .env.\*\*\* に変数を追加する

VUE_APP_\*\*\*をプレフィックスにして変数名を定義

例 : http://hogehoge を develop に登録する場合

“` .env.develop
VUE_APP_API_DOMAIN = http://hogehoge
“`

###2 .env.\*\*\* に登録した環境変数を利用する

process.env.\*\*\* で利用したいところから呼び出す

記入例

“`

元記事を表示

最強のWiki「GROWI」を Terraform を使って超絶簡易的に EC2 にデプロイして個人利用する【GROWI】【AWS】

# この記事の目的
GROWI をインターネット上で使いたい人が使えるようにすることのみです。
技術的な解説などは全て省きたいと思います。手順と手順の目的と概要のみを記します。
ただ、超簡易的な方法になるので念のため自己責任でお願いします。

# 注意事項
* 本当に簡易的です。
* Elastic Searchは使いません。
* httpsでの接続はしません。
* アクセス数によっては費用が発生する可能性があります。
* この記事はクオリティ的には未完成ですのでフィードバックをいただけると嬉しいです。すぐに改善します。

# 前提知識
手順通りやればできるようになっています。基本的な知識があればできます。ググれば誰でもできます。

# デプロイに必要なもの
* AWS アカウント
* Docker がインストールされているPC

# 今回のデプロイの方針
今回は、とにかく個人利用でセキュリティも何もいらなく、とにかく GROWI が使えればいいと言う方針でやっていきます。

さらに、ほぼ無料で使いたいと言う欲望から、Elastic Searchは使わないことにします。これがあるだけで

元記事を表示

CloudWatchログ監視

# CloudWatchロググループ

[![Image from Gyazo](https://i.gyazo.com/861fbbf471bf0bde82f3c2c5a35ffec7.png)](https://gyazo.com/861fbbf471bf0bde82f3c2c5a35ffec7)

# メトリクスフィルター

[![Image from Gyazo](https://i.gyazo.com/0a9fc29cf9dcb826da1782cd789a7b7f.png)](https://gyazo.com/0a9fc29cf9dcb826da1782cd789a7b7f)

[![Image from Gyazo](https://i.gyazo.com/9c2dced5fc32d27fa09805c525729270.png)](https://gyazo.com/9c2dced5fc32d27fa09805c525729270)

[![Image from Gyazo](https://i.gyazo.com/3056ac3c293186f356534c4468

元記事を表示

CloudWatch Logs Insightsのbin関数で指定できるperiodの種類

AWSではCloudWatch Logsにたまったログを集計する場合、ElasticSearchなどに連携する以外にCloudWatch Logs Insightsを使って検索することもできます。Insightsのクエリではstats句で簡単な集計を行えるのですが、ここで日付のまるめを行うbin関数の単位(period)についてドキュメントに言及がなかったので試してみました。

[CluudWatch Logs Insights bin関数の定義](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html#:~:text=bin)

例えば、.NET の1日当たりの例外件数を集計したいならこうなりますね。

“` s
filter Level = ‘Error’
| stats count(*) by bin(1d)
“`

m(分)やh(時)で丸めることはありますが、月で丸めたくなり、おや??どうするんだろう?あっmonthでいいのか、他に何使えるんだろう?が事の発端でした。
結果こ

元記事を表示

AWSでAIサービスを使ってみる〜②translate編〜

##はじめに
前回AWSでAIサービスを利用するにあたっての導入をさせて頂きました。
今回はAWSのAIサービスのひとつであるTranslateを使用していきます。

##Amazon Translateとは
Translateを使うとテキスト(文字列)を別の言語に翻訳することができます。

##テキストを翻訳してみる
それでは早速テキストを翻訳してみましょう。

“`trans_text_ja.py
#boto3をインポート
import boto3
translate = boto3.client(‘translate’)
text = ‘昨日のご飯は美味しかった。’

#翻訳
result = translate.translate_text(
Text=text, SourceLanguageCode=’ja’, TargetLanguageCode=’en’)
print(result[‘TranslatedText’])
“`

ターミナル上でtrans_text_ja.pyを実行

“`
python trans_text_ja.py
“`

実行す

元記事を表示

[AWS]CloudBuildのビルドコンテナからEC2にアクセスしたい

自分メモ用。

## 概要

CloudBuildのビルドコンテナからEC2にアクセスする方法。
前提として、EC2にはIP制限&SSHキーで接続する。

**手順**

1. CloudBuildのビルドコンテナをVPC内で立ち上げる
2. SSMパラメータストアにSSHキー登録する
3. ビルド時にSSHキーを読み込んで接続

## 1. CloudBuildのビルドコンテナをVPC内で立ち上げる

基本的に上の手順の通り。
CodeBuildのロールにVPCのポリシーをアタッチする必要がある。

## 2. SSMパラメータストアにSSHキー登録する

SSM(Systems Manager)パラメータストアにSSHキー登録。
id_rsa.pub(公開鍵)、id_rsa(秘密鍵)の二つをKMSを利用して登録する。
IAMでCodeBuildのロールにAmazonSSMReadOnlyAccessのポリシーをアタッチする必要あり。

![スクリーンショ

元記事を表示

Amazon Mechanical Turk に課題を作成・発行する方法(画像分類課題)

# はじめに
先日、研究で画像分類タスクの人間データを集める際に、Amazon Mechanical Turk (以下AMT)を使用したのですが、一つにまとまった情報がなかったので、(所属ラボの資産にする意味も込めて)この記事でまとめて共有します。(AMT自体の説明や詳細については、少し古いですが[こちらのスライド](https://www.slideshare.net/Ayako_Hasegawa/amazon-mechanical-turk-92372451)が参考になるかと思います。)
今回は、AMT側で用意されているテンプレートとCrowdHTMLというAMT用のタグを使用してシンプルな画像分類課題を作成しました。他の課題もテンプレが用意されているので、適宜自分の目的に合わせて作成してください。
また、より複雑な課題をオンラインで実施したい場合は、他のサービスなどを組み合わせる必要があると思います。詳しくは [#より複雑な課題を提出したい場合は?](#より複雑な課題を提出したい場合は)で考察しています。

OTHERカテゴリの最新記事