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

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

AWS EC2 AMIを利用して構築したRedash9.0(beta)でCloudWatch Logs Insightsのデータを取得する

# What’s this?
Redash9.0(beta)でデータソースとしてCloudWatch Logs Insightsが新規追加されたので、Redash9.0の構築からデータ取得までの手順をまとめた記事です。

# Redashとは
Redashは、(主に)SQLの分析結果をわかりやすく可視化し共有するオープンソースBIツールです。
「RDS」「Redshift」「BigQuery」「Google Spreadsheet」など50種類以上の様々なデータソースと連携が可能で、複数のデータソースのデータを結合させることも可能です。

# Redash9.0で追加されたデータソース
– [redash/CHANGELOG.md](https://github.com/getredash/redash/blob/master/CHANGELOG.md)

> New Data Sources: Amazon Cloudwatch, Amazon CloudWatch Logs Insights, Azure Kusto, Exasol.

Redash公式のchange logを見る

元記事を表示

sdk-goでdynamoDBの複雑なstructの値をupdateする

## やりたいこと
GoでのdynamoDBに対しての操作は割とめんどかったりします。単純なStringやIntのものであればまだ良いのですが、ListのMapのなかのListとか、値の構造が複雑になってくると気が滅入ります。

“`go
// シンプルなパターン
&dynamodb.UpdateItemInput{
TableName: aws.String(“sampleTable”),
Key: // 省略,
ExpressionAttributeValues: map[string]*dynamodb.Attribute{
“:ssv”: {
S: aws.String(“sampleStringValue”)
},
“:siv”: {
N: aws.String(strconv.Itoa(0)) // ここもintをstringに型変換してそれをaws.String()してkeyにはNを指定って感じでわかりづらい。
},
},
UpdateExpression: aws.String(“set samp

元記事を表示

AWS 認定 デベロッパー – アソシエイト(DVA-C01)取得するまでにやったこと

![dva-c01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534812/25a3cd8f-1d57-582d-c98e-d9c9d88c7479.png)

## はじめに

DX 技術本部の yu-yama です。
[AWS 認定 デベロッパー – アソシエイト](https://aws.amazon.com/jp/certification/certified-developer-associate/)を取得したので取得までの流れを記します。

## 受験前の AWS 経験

AWS 経験は 4, 5 年で、コアサービスは一通り触っており、ソリューションアーキテクトアソシエイトを 2020 年 6 月に取得しています。

[AWS 認定ソリューションアーキテクトアソシエイト\(SAA\-C02\)取得するまでにやったこと](https://qiita.com/yu-yama-sra-airline-erp/items/7d30c3772c3075837939)

## 学習期間

– 7

元記事を表示

CloudWatchAlarmの動作確認をしてみる

# 目的
わが社ではCloudWatchAlarmを設定し、アラート内容をタスクとしてチケット化するシステムを作っているのですが、「アラート内容をタスクとしてチケット化」の部分を確認したいので、CLIで無理やりアラートを発報させる方法を調査しました。備忘録です。

# 手順
CloudWatchの権限を持ったユーザでCloudShellからCLIをたたくだけ。

“`shell-session
cat << EOF > ALARM.json
{
“AlarmName”: “【Alarm名】”,
“StateValue”: “ALARM”,
“StateReason”: “Test Alarm”
}
EOF
aws cloudwatch set-alarm-state –cli-input-json file://./ALARM.json
rm -f ./ALARM.json
“`

今回はファイルインプットを採用。
ファイルインプットのほうが、設定内容の可視性を上げやすいのでよさげですね。

以上。

元記事を表示

[Alibaba Cloud] オンプレミスからVM移行ができるServer Migration Center 触ってみた

## この記事の目的
Alibaba CloudのマイグレーションツールがServerMigrationCenterとして新たにリリースされていたので軽く触ってみました。
CentOSのサーバーのイメージコピーして、Alibaba Cloud環境に移してみます。

## ServerMigrationCenterの概要
– Alibaba Cloudのマネージドサービスの1つ
– `オンプレミス`や`クラウド環境`から複数サーバーをAlibaba Cloud環境に移行するために利用するツール
– 増分移行をサポートしているので、サーバーを停止する必要なく移行が可能
– 複数タスクを同時実行可能(利用シチュエーションは不明)
– ソースディスクのパーティションスキーマを取得してディスクパーティションも複製可`※この際にディスクサイズを指定可`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274358/1202cdee-c221-3811-2bae-fbd045e819c9.png)

元記事を表示

sam local start-apiでヘッダーが勝手にキャメルケースになるんだが?

表題の通り、sam local start-apiでヘッダーが勝手にキャメルケースになる問題についてです。

こちらにドンピシャの回答があるのですが、内部で使っているFlaskの仕様だそうです。
[Headers are received in Camel\-Case · Issue \#1860 · aws/aws\-sam\-cli](https://github.com/aws/aws-sam-cli/issues/1860)

仕方ないのでNode.jsでは下記ワークアラウンドをしてヘッダーをすべて小文字にして対応しましょう。
(Pythonならissueのコメントにサンプルコードが載っています)

“`javascript
const toLowerCaseKey = function(object) {
let newObject = {};
for (let key in object) {
if (object.hasOwnProperty(key)) {
newObject[key.toLocaleLowerC

元記事を表示

AWSのRDSを削除したのに課金され続けてしまった話。。。原因が分かった。。。

AWSのRDSを使いアプリを作成していましたが、
結構月額が高いし、あまり使わなくなったので
RDSを削除しました。

ですが、なぜが、まだ課金されている???

![スクリーンショット 2021-01-21 11.10.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355517/7a58f18b-3a94-b0ad-4023-77f7d6e28c5c.png)

なぜ?????

### 結論:スナップショットが残っていると課金し続けるようです。。。

https://ap-northeast-1.console.aws.amazon.com/rds/home?region=ap-northeast-1#snapshots-list:

スナップショットが残っている人は削除しましょう!!!!!!

やはり
AWSは奥が深いですね。。。

元記事を表示

CloudFormationでApiGatewayのログを有効化に必要な諸々の設定をする

共通の設定が必要なのでどっかに書く

“`yaml
Resources:
APIGatewayPushToCloudWatchLogsRole:
Type: AWS::IAM::Role
Properties:
Description: “Allows API Gateway to push logs to CloudWatch Logs.”
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
Effect: Allow
Principal:
Service: apigateway.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
– arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLog

元記事を表示

RailsアプリをAWSにデプロイするまでにすごく苦労したので教訓メモ

# 何コレ
ポートフォリオを作成する上で以下の環境構築を行っていたが、個人的にとても苦労したので備忘録として残しておきたいと思い書いた。

## 設定環境
AWS EC2(1年間無料で使えるインスタンス)
AWS RDS
Ruby 3.0.0
Rails 6.1.1
puma 5.1.1
mysql 5.7

アプリはまだRails newしただけの状態

## 使った教材
こちらの記事を参考に環境構築を行った。わからない単語などは都度調べながら。
https://qiita.com/take18k_tech/items/5710ad9d00ea4c13ce36
記事自体はタイトルの通り、知識としては今は無くとも環境構築できるのではと思う(インフラ大事だからいずれはもっと学習するつもり)。

## 何が苦労したのか
主に以下の点でとても苦労した。

・記事とおりやっているが、capistranoの設定あたりから壮大につまずく
→これは記事が悪いわけでは無く(それ以外はすんなり設定できたので非常に感謝している!)、環境というのはどうしても個々で異なるので、あまり鵜呑みにせず、できたらラッ

元記事を表示

AndroidからAWS Cognitoのユーザプールをさっくり使う

![スクリーンショット 2021-01-21 8.25.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/924658/026507a3-3977-e0d2-c867-46e2c94ed8b3.png)

サインアップやサインイン、パスワード再発行など、ユーザ管理がないアプリケーションを見かけない日はありません
とはいえ自前でバックエンドのシステムを作るのも大変…
でもAmplifyはちょっとリッチすぎる気がする…

そんな私のための備忘録です

下記のことができます

– メールアドレス、パスワードによるサインアップ、ログアウト
– メールアドレス認証
– パスワード再発行

メールアドレスやパスワードはガッツリ個人情報です
その辺りの管理をAWSにお願いできるのはかなり気楽ですよねー

# 前準備
## SES (Simple Email Service)に配信用のメールアドレスを登録する
![0_SESにメールアドレスを登録し、送られたURLをクリックしてVerifyする.PNG](

元記事を表示

LaravelアプリをAWSにデプロイする

LaravelアプリをAWSにデプロイする手順をメモ書き程度に残す

元記事を表示

PythonでS3バケット内の一覧を取得し、特定のKeyで検索 Key名と最終更新日、カウント数をファイルに出力

所用で必要になったので

“`
# -*- coding: utf-8 -*-
import boto3

PUBLIC_S3_BUCKET_NAME_TEST = ‘バケット名’

def access_count():
count = 0
with open(‘file.txt’, ‘w’) as f:
# バケットの一覧取得
S3 = boto3.resource(‘s3’)
S3BUCKET = S3.Bucket(PUBLIC_S3_BUCKET_NAME_TEST)

for obj in S3BUCKET.objects.all():
if ‘検索名’ in obj.key:
count += 1
print(count, obj.key, obj.last_modified, file=f)

print(‘total=’ + str(count), file=f)
“`

元記事を表示

AWSのControl Towerマスターアカウントからセルフマネージド型StackSetsを展開してみた

# 構成

 前回、[AWSのControl Towerマスターアカウントからサービスマネージド型StackSetsを展開してみた](https://qiita.com/kazu_kazu/items/51f97632d1dc40c314e5)の記事を作成しましたが、いくつかデメリットがあったのでセルフマネージド型StackSetsバージョンとしてこちらの記事を執筆します。
 今回の構成はこちら。

![StackSetsSelfService.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344711/fdb3400e-ec9d-8f98-c0a5-bb8c90b57675.png)

 アカウント払い出し時に、BudgetsとSNSをアカウントに展開した上で払い出します。
 セルフマネージド型StackSetsで、OUではなくアカウント指定でBudgets,SNSを展開します。
 セルフマネージド型StackSetsを使用するには、以下のロールが必要です。

|アカウント|ロール|
|—|—

元記事を表示

Cloud Runでカスタムドメインの設定方法(Route53編)

Cloud Runでカスタムドメインの設定方法(Route53編)
ドメインはさくらインターネットで取得した

**Cloud Run コンソールからカスタムドメインを管理をクリック**
![custom_domain1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59264/04aec12e-f325-aea2-407e-cad96ef5b8b7.png)

今回はベースドメインをtoyscreation.jp サブドメインをweekend-hackathonにする
toyscreation.jpと入力して続行

![screencapture-console-cloud-google-run-domains-2021-01-20-23_30_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59264/e1f9aabb-03e6-2212-770c-d58e52b6423c.png)

ドメイン所有の確認、TXT

元記事を表示

【初心者】Amazon Inspector を使ってみる

# 1.目的
– セキュリティ関連サービスを一通り復習している。一度も触ったことの無かった Amazon Inspector について、チュートリアルレベルの確認を行い概要を理解する。

# 2.Amazon Inspector とは(自分の理解)
– EC2インスタンスに対する脆弱性評価を実施し、リスクを可視化するサービス。
– 分かりやすい解説は [Developers.io記事:「AWS再入門ブログリレー Amazon Inspector編」](https://dev.classmethod.jp/articles/re-introduction-2020-inspector/) などにあるので、それを見ながら、自分の手で確認したことを記載する。

# 3.やったこと
– 評価対象とするインスタンスを作成する。
– Inspectorで以下を行う。
– 評価ターゲットの作成: ターゲット(評価対象インスタンス)を指定し、Agentをインストールする。
– 評価テンプレートの作成: ターゲット及び評価項目の選択を行う。
– 評価を実行し、結果を確認する。

元記事を表示

AWSのアクセスキーを間違えないようにする方法

 2社以上の案件を同時にこなしている場合など、AWS Access Key IDを複数切り替えて使いたい場合にキーを間違えて使しまうと、大変なことになってしまいます。そこで、以下のようにすると明示的に切り替えられるので、間違いが減るのではないでしょうか。

### aaa社向けのプロファイルを作成する。
\>aws configure –profile aaa
AWS Access Key ID [None]: AKIASHE7LMTU4XXXXXXX
AWS Secret Access Key [None]: RlMpPqE19cnfwIS6XGatw3Y5RncQYpIdL+XXXXXX
Default region name [ap-northeast-1]:
Default output format [None]: json

### デフォルトプロファイルが存在するかどうかを確認する。
\>aws configure
AWS Access Key ID [****************26WM]:
AWS Secret Access Key [*************

元記事を表示

AppSync & GraphQL 入門

![AppSync](https://user-images.githubusercontent.com/7469495/105184322-9179a580-5b72-11eb-8f73-5bbe20a686ec.png)

## AppSync とは?

GraphQL というAPI仕様を用いて「柔軟なAPI」を提供するAWSのマネジメントサービス

ちなみに、従来の REST API 形式だと AWSは API Gateway を提供している

## GraphQL とは?

Facebookが開発しているWeb APIのための規格

「クエリ言語」 と 「スキーマ言語」 からなる

REST API は、1URLに対し1つのAPIや情報を提供できるのに対し、

GraphQL は欲しいデータを以下のようなクエリとして発行すると、**欲しいデータを欲しいObject形式で**得ることができます

“`javascript
// リクエスト
query GetCurrentUser {
currentUser {
id
name
}
}

“`

元記事を表示

Amazon linux2 でsshpassを使う

# Amazon linux2 でsshpassを使う

## 概要
Amazon Linux2でsshpassを使う場合はEPELのリポジトリを有効化する一手間が必要でしたので、その手順をご紹介します。

## 手順

### 1. RHEL 7 用の EPEL リリースパッケージをインストールし、EPEL リポジトリを有効にします。

“`bash
sudo amazon-linux-extras install epel -y
sudo yum-config-manager –enable epel
“`

### 2. sshpassをインストール
“`bash
sudo yum install -y sshpass
“`

### 3. sshpassの設定
“`bash
sshpass -p {パスワード} ssh {user名前}@{SSH先}
“`

## 参考
– [CentOS、RHEL、または Amazon Linux を実行している Amazon EC2 インスタンスの EPEL リポジトリを有効にするにはどうすればよいですか?](https://

元記事を表示

GitHubへのpushをトリガにCodePipelineを走らせてテスト・デプロイする

以前の記事([【知識0からのCloudFormation】LambdaをデプロイするCodePipelineを組む](https://qiita.com/Kept1994/items/b791e7a92b8e9a93653f))でCodeCommitにPushしたらデプロイするパイプラインの作成までやった。
今回は以下の変更を目標とする。

* デプロイする前にテストコードを挟む。
* ソースコードをGitHubで管理する。

### 前提

* Admin権限のIAMユーザを作成している。(adminである必要はないがとりあえず面倒なので)
* AWSコンソールに上記ユーザでサインインしている。
* git、aws-cliインストール済。

## CodeCommitにリポジトリを用意

### 秘密鍵と公開鍵の作成

“`sh
$ ssh-keygen -t rsa -C “hogehoge@gmail.com”
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/

元記事を表示

Amazon Cognitoを利用したIDPとのシングルログアウト連携の実現

複数のWebサービスに1つのIDでシングルサインオン (SSO)・シングルログアウト (SLO) できるように、IDプロバイダ (IDP) を構築して各サービスとOpenID Connect (OIDC) やSAMLで連携する構成について考える。このときに、IDPと連携するWebサービスの構築にAWS(Amazon API GatewayやAWS AppSyncなど)を利用する方法を検討した。

IDPと連携してAWSサービスの認証を行うにはAmazon Cognitoを使うのが常套手段となる。SSOのみが要件であれば公式ドキュメントや解説記事も多く悩むポイントは少ないが、SLOの実現についてはあまり取り上げられていない。この記事ではAmazon CognitoでIDPと連携する際のSLOの実現方法を整理する。

### 前提

* IDPと各サービスは異なるドメイン(オリジン)で提供される。
* IDPと各サービスはOpenID Connect (OIDC) もしくはSAMLで連携する。
* AWSサービスとIDPの連携は以下のいずれかの方法で行う。
* Amazon Cogni

元記事を表示

OTHERカテゴリの最新記事