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

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

【Python】Switchbot Hub2の気温・湿度をCloudWatchに定期的に送信する【AWS Lamba】

季節の変わり目ということで、自宅の気温と湿度をCloudWatchに保存したくなりました。

そこで最小限の労力でPythonを書いて、Switchbot ハブ2の気温と湿度(とついでに照度)をCloudWatchに送信しようと思います。

さらにEventBridgeとLambdaで5分ごとに定期実行します。
![dashboard.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/ab3df0bc-b206-97f9-9ea0-509137916abb.png)

# GitHubリポジトリ

全てのソースコードを下記で公開しています。

https://github.com/tippy3/switchbot-hub2-custom-metrics

# #1 Switchbot API用のトークンを取得する

まずはコーディング前の準備です。

[公式サポートページ](https://support.switch-bot.com/hc/ja/articles/12822710195351

元記事を表示

初心者がChatGPT先生とWEB開発(IIS,Python,Athena,S3)その①

# 初めに

AIのお勉強のため、今までやってこなかったWEBシステム(中身スカスカの機能だけ)の開発をChatGPT先生に手ほどきしてもらって実施してみました。
せっかくなので覚えたてのAthenaも使ってみたい。
ということで以下構成を作ることが目標。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989873/9646c5a7-421f-d743-bbf2-aa0218690ed4.png)

長いのでまずはAthenaの設定とPythonサーバからAthenaを操作できるようにするところまでを①でやります。
次回②としてPythonサーバでAthenaを操作するところをアプリケーション化するのと、
IISサーバでHTMLを作成するところを実施します。

お詫び:
 タイトルでChatGPT先生を前面に出しているのに、
 S3データ格納とATHENAのデータベース・カラム作成はChatGPT先生のお力を借りずやっちゃってます。
 ご了承ください。

## ①データ格納

S3にバ

元記事を表示

GCP認定Professional Cloud Architect受験対策

# はじめに
取得してから1年経ちますが、これからProfessional Cloud Architectを受験する方のために要点をまとめました。
本記事を読んだだけで合格できる、ということを保証するものではありませんので、ご了承ください。

# もくじ
– Professional Cloud Architectについて
– 要点
– 勉強法
– まとめ

# Professional Cloud Architectについて
本資格では一般的なGoogle Cloudのアーキテクチャについて問われます。どのデータベースを使用するか、他のネットワークとどう接続するか、などの対象分野は広いですが、内容は浅い印象です。問題は50~60問の選択式であり、試験時間は2時間、受験費用は$200 (税別) です。本試験だけケーススタディ問題があり、試験に出題される可能性のあるケーススタディは試験ガイドに記載されています。
[試験ページ](https://cloud.google.com/learn/certification/cloud-architect?hl=ja)では、以下のことが評価される

元記事を表示

boto3 で S3 オブジェクトを mv, rename

別にどうということはないのだけど、あとで使いまわしそうなのでメモしておくやつ。

AWS CLI には `aws s3 mv` というコマンドがあるが、Amazon S3 そのものにはオブジェクトの Key の変更 (≒ 移動やリネーム) に相当する API が存在しないので、実際には CopyObject してから古い方を DeleteObject することになる。

Python で同様のことをしたい場合、boto3 の S3 Client には `aws s3 mv` 相当のメソッドは無いので、

“` python
def s3_move_object(s3, *, BucketFrom: str, BucketTo: str | None = None, KeyFrom: str, KeyTo: str):
if BucketTo is None:
BucketTo = BucketFrom
s3.copy_object(Bucket=BucketTo, Key=KeyTo, CopySource={“Bucket”: BucketFrom,

元記事を表示

M5StickCを使って外出先からお家のエアコンを操作(後編)

[前編](https://qiita.com/jonxjon/items/af698107047e91d6a56f)では、M5StickC・AWS IoT Core の設定をしました。
後編では、AWS Lambda・Amazon API Gateway・Slack API の部分を作っていきます。

# やりたいことのイメージ(再掲)
### イメージ図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407204/09f587bb-a5e9-3103-bfdc-d7c728e6dc7e.png)

### 処理の流れ
1. Slack 上で Bot にメッセージを送る
1. Slack Bot が Amazon API Gateway が発行した API を叩く
1. Amazon API Gateway をトリガーにして、Lambda function が実行される
1. Lambda function が AWS IoT Core にメッセージを格納する(Publish する)
1

元記事を表示

ansibleについてのメモ

# 0. テスト環境

– テスト環境1 `Ubuntu 20.04`, `x86`

# 1. 導入
## ansibleとは何か

– IT機器の設定(構成)に関わる煩雑な作業を自動化できる
– 米Ansible社によって開発されましたが、Ansible社を買収したレッドハット社が開発・提供

## 注意点

– 対象機器が少ないシーンでは向いていない
– 間違ったときの影響範囲が大きい
– 複雑な処理に対応しにくい

## 活用事例

### A社

膨大なIT機器の棚卸しを手動で実施.(例.管理対象となるサーバーのOSや物理情報,ミドルウェアの情報等)

Ansibleの導入を進める.選定理由は導入のしやすさ.yaml形式で誰でも定義ファイルを作成できる.

棚卸しコストを50%軽減

### B社

大規模なシステムを3ヶ月という短納期で納入する必要に迫られた.手動では間に合わない.

Ansibleによる構成管理の自動化を採用.

Ansibleを導入したことでサーバー環境の設定作業が自動化され、大幅に工数を削減し作業を迅速にすすめられた上にコストも節約できた.

#

元記事を表示

AWS Synthetics Canary を Terraform で構築する

# 概要

Terraform で

– Canary用のスクリプトをzip圧縮する ( archive プロバイダを使う。これは AWS とは直接関係ない )
– Canaryの実行ロールを作る ( 本記事では詳細は割愛 )
– S3のバケットを作る ( 実行結果ファイルの置き場 )
– SNSのトピックを作る (サブスクリプションはこの例では載せない。別で登録すること)
– Canary本体を作って実行ロール・S3バケットと関連付ける
– CloudWatch の ALARM を作って Canary名も設定する

## NOTE

– CloudWatchLogsのロググループは自動生成される模様
– スクリプトはLambda関数ではなくLambdaのレイヤーに置かれるようだ

# 準備 – Canaryスクリプト ( nodejs ) の作成

マネージメントコンソールからだと雛形を作りやすい

image API Gatewayとlambdaを使用してみる

## 目的
AWS Certified Developer – Associateの勉強をしている中で
理解が浅いサービスについて実際に使用してみます

今回はAPI GatewayとLambdaを使用して、リクエストを送れるまでをやってみます

## 手順
– Lambda関数の作成
– API Gatewayの設定

## Lambda関数の作成
**1. Lambdaのページに移動、左のメニューから関数を選択**
**2. 右上の関数の作成を選択**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1997750/f26b8a57-ac66-56fb-9ae7-e47d2e259681.png)

**3. 下の設定で作成(記載していないものはデフォルト設定です)**
関数の作成:一から作成
基本的な情報
関数名:test_lambda
ランタイム:Python

コードは作成時に用意されているサンプルをそのまま使用します

“`
import json

def lambda

元記事を表示

DynamoDBを使用してみる

## 目的
AWS Certified Developer – Associateの勉強をしている中で
理解が浅いサービスについて実際に使用してみます

DynamoDBの作成とデータ取得までをやってみます

## 手順
– DynamoDBの作成
– データ取得

## DynamoDBの作成
**1. DynamoDBのページに移動、左のメニューからテーブルを選択**
**2. テーブルの作成を選択**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1997750/4231f44f-2a66-b383-af43-e3e1ca7a36a1.png)

**3. テーブルを作成**
今回はパーティションキーのみのテーブルを作成します
テーブル名:test_book
パーティションキー:id
その他はデフォルト

### ざっくり用語解説
– パーティションキー
データが格納されるパーティションを決定するのために使用
– ソートキー
ソートのために使用
– プライマリキ

元記事を表示

AMIから起動したEC2のデフォルトユーザーでパスワード認証によるssh接続をする

# やりたいこと
パスワード認証を有効化し、デフォルトユーザー(RHEL8で実施するためec2-user)を使用して
パスワードによるssh接続をしたい。

EC2はAutoScalingで制御するため、AMIから起動する。

# デフォルト設定だとどうなるか
パスワード認証を有効化し、デフォルトユーザーのパスワードを変更した後にAMIを取得しても、
AMIから起動したEC2はパスワード認証が無効化され、デフォルトユーザーのパスワードはリセットされる。

# 対応策
**1. /etc/ssh/sshd_configでパスワード認証をno → yesにする。**
~~~
PasswordAuthentication yes
~~~
上記がパスワード認証を有効化する設定

**2. /etc/cloud/cloud.cfgでssh_pwauth:0(no) → 1(yes)にする。**
~~~
ssh_pwauth: 1
~~~
上記がEC2起動時にパスワード認証を自動的に有効化or無効化にする設定

**3. /etc/cloud/cloud.cfgでlock__passwd: tru

元記事を表示

terraform -target=module.xxx コマンドで一部のモジュールだけ実行する

# tfファイルの例

“`tf
module “s3_log” {
source = “../modules/s3”
}
“`

この例であれば `s3_log` をコマンドで指定すれば良い

# コマンド例

“`
terraform apply -target=module.s3_log
“`

# チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

# Twitter

元記事を表示

AWS CDKでService Catalogを構築・運用するための9Tips ~事例と共に~

# はじめに

本記事は、AWS Service Catalog × CDK の Tips 集になります。

私は、社内向けの AWS 共通プラットフォーム構築・運用に携わっており、各アカウントに配布するリソースを CDK で構築しています。元々、CDK で生成されたテンプレートを各アカウントに直接デプロイしていましたが、追加開発や運用面を考慮し、 Service Catalog を取り入れる方針に切り替えました。Service Catalog の導入により、プラットフォーム利用者が都合の良いタイミングで、製品をバージョン更新できる点も利点です。

Service Catalog の利用イメージは以下の通りです。

![Service Catalog の利用イメージ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989026/429a5eed-2d07-4311-75fb-789935ab050b.png)

本記事では、AWS CDK で Service Catalog を利用する際に、躓いた点を中心に

元記事を表示

データ活用基盤を作ってみた その5(試験)

# はじめに
こんにちは、NTTデータ先端技術の@S-takahashi1129です。
本記事は、データ活用基盤を作ってみた連載記事のその5です。
本シリーズの取り組みの内容については [その1(構成シナリオ)](https://qiita.com/kamein/items/81df29ef9d32bf0a0810)をご覧ください
前の記事は、[その4(詳細設計)](https://qiita.com/shiraki_ils/items/fc69614df206bf24fd52)からご覧ください。
本記事では、試験計画と試験実施について記載します。

# 目次
* 試験計画
* 試験計画の考え方
* 試験計画で実施したこと
* 試験工程定義
* 単体試験計画
* 結合試験計画
* システムテスト計画
* 試験の実施
* 単体試験
* 単体試験項目書作成
* 単体試験実施
* 結合試験
* 結合試験項目書作成
* 結合試験実施

元記事を表示

EC2上のソースコードを自動でGitHubにバックアップする

こんにちは!
今日はAWS EC2インスタンス上にあるソースコードを、定時になると自動でGitHubにcommit、pushしてくれる仕組みを作りたいと思います。
筆者はプログラミング歴1年半ほどの学生で、調べながらだいたい4時間弱で出来ました。AWS歴は半年ないほどです。
# 目次
1. [完成イメージ](#anchor1)
1. [前提条件](#anchor2)
1. [EC2とGitHubを繋ぐ](#anchor3)
1. [バックアップするスクリプトを組む](#anchor4)
1. [スクリプトを定時に実行する](#anchor5)
1. [参考](#anchor6)


## 完成イメージ
毎日0時5分になると、自動で対象のディレクトリのソースコードをGitHubにcommit、pushする。


# 前提条件
– GitHubアカウントを持っている
– バックアップするレポジトリが存在する
– EC2インスタンスが立ち上がっていて、ソースコードが置いてある
– gitコマンドが使用できる

元記事を表示

MapLibre GL JSとAmazon Location ServiceのAPIキー機能で開発環境を構築してみた

![img](https://memo.dayjournal.dev/images/try-103_01.gif)

![img](https://memo.dayjournal.dev/images/try-103_02.png)

### MapLibre GL JSとAmazon Location ServiceのAPIキー機能で開発環境を構築してみました :tada:

GitHubに作成した環境を公開しています。ぜひご利用ください!

https://github.com/mug-jp/maplibregljs-amazon-location-service-starter

## 事前準備

– Amazon Location ServiceのAPIキー作成
[Amazon Location Service #004 – APIキー作成(マップ)](https://memo.dayjournal.dev/memo/amazon-location-service-004)
– MapLibre GL JSをを手軽に始めるビルド環境を利用

元記事を表示

無料ドメインをEC2インスタンスに与える方法-まとめ

## 概要
1. ドメインを無料で取得しようと考えた。
1. freenom.comが訴えられていた。
1. dot.tkも同じシステムなため、利用不可
1. No-ip.comはnameserversの利用が課金対象
1. 最終的にお名前ドットコムを利用
1. Route53の設定を行う
1. インスタンスと連携
1. Elastic IPの登録

## 環境
* EC2(AamazonLinux2023)

## frenom.com dot.tk

https://gigazine.net/news/20230309-freenom-sued-by-meta/

どうやら訴えられたようで、利用不可です、、

## No-ip.com
https://www.noip.com/support/knowledgebase/how-do-i-change-my-dns-servers-if-my-domain-is-registered-with-register-com

今回は無料で利用したいため利用するのをやめました。
また、EC2との連携法が全く出てこなかったため、素人の自分で

元記事を表示

【備忘録】AWSのセキュリティ対策について学んだことまとめ ~見解まとめ~

何回かに分けてAWSにおけるセキュリティ対策の方法や使えるサービスを
記載してきましたが今回は見解まとめをやっていきます。
AWSで確認すべきセキュリティ観点は多々あれど汎用的に何を観点に
チェックしたらいいのかが大事になってくると思います。

## クラウドセキュリティに必要なセキュリティ観点
### 防御
まず第一に攻撃の初期段階における外部との接続点を介した攻撃を防ぐ必要があります。
インターネットを経由した不正アクセスや不正ログイン、
侵入できたとしても暗号化によってリソースの不正利用の防止をするよう設定します。
主に次のようなサービス等を利用して防ぎます。
| 対応策 | AWSにおける該当機能 | 内容説明 |
|:———–:|:————:|:————:|
| ルートユーザーの不使用 | IAM | 強力な権限をもつルートユーザーで作業せず、ユーザーアカウントを別途作成する |
| MFAの使用 | IAM | MFAデバイスを登録し、ログイン時にコードを入力する |
| アクセスキー、シークレットキーの削除 | IAM | ロ

元記事を表示

amplify を使わずにNuxt3+cognitoで認証処理

## 概要
“`Cognito“`のデフォルトログインページをNuxt3のプロジェクトに組み込みました。
“`Amplify“`を使わずに認証処理を簡単にしたかったのでその備忘録です。
※使わずに、と言いましたがnpmパッケージは使用します。

“`Amplify“`を使いたくなかった理由は、本格的に使用すると便利すぎて何でもできてしまい、頻繁に更新される“`Amplify“`の更新作業で地獄を見ることになりそうだったからです。そんなに深い意味はありません。
※一般的にパッケージの更新はしたほうがいいと思います。

## 開発環境
node:16.17.1
Nuxt: 3.0.0

## 実装手順

1. まず初めにNuxtのプロジェクトを用意する必要があります。
“`nuxt3-cognito“`の部分はプロジェクト名です。
“`cmd
npx nuxi init nuxt3-cognito
cd ./nuxt3-cognito
npm i
“`

1. 必要なパッケージをインストールします。
“`c

元記事を表示

AWSで、Terraformを利用する方法をまとめてみた(5/10)

データ型

– string: 文字列
– number: 数値
– bool: 真偽値
– list: 配列
– set: 集合
– map: マップ
– object: オブジェクト

これらのデータ型を組み合わせることで、HCL2は複雑なデータ構造を扱うことができます。

`list`、`map`、`object`を使用した参考例 その1

【list: 配列】

“`
variable “example_list” {
type = list(string)
default = [“item1”, “item2”, “item3”]
}

resource “aws_instance” “example” {
count = length(var.example_list)

ami = “ami-0c55b159cbfafe1f0”
instance_type = “t2.micro”
tags = {
Name = “example-instance-${var.example_list[count.index

元記事を表示

infisicalをAWSでデプロイしてみた!

# infisicalをAWSでデプロイしてみた!
## はじめに

皆さん、こんにちは。今日はインターンでインフラエンジニアとして働かせていただいている会社のAWS環境にOpen Source Software(OSS)であるinfisicalをデプロイした経緯とその成果についてお伝えします。

## そもそもinfisicalってなに?

infisicalは、エンドツーエンド暗号化(E2EE)によって安全性が高められた、ユーザーフレンドリーな管理画面を持つOSSです。チームでの環境変数の同期や管理を効率的に行うことができます。

## デプロイ前の課題

AWS、Docker、Terraformなど初めて触れる技術もあり、とりあえず挑戦してみるという前提から始まりました。
公式の[infisical](https://infisical.com)サービスも存在しますが、自社の環境変数を外部で管理するのは適切でないと判断したため、自社AWS環境へのデプロイを決定しました。

## デプロイプロセス

infisicalのWeb部分とデータベース部分を分ける形でデプロイを行いました。

元記事を表示

OTHERカテゴリの最新記事