- 1. APIgateway+Lambda+DynamoDB でのID管理を実装する
- 2. AWS SAM CLIをbrew installしたときに発生したエラーを解決する
- 3. VPCフローログを作成にする
- 4. EC2×2台S3なし環境にて、/wp-content/uploadsディレクトリの内容を一方向同期する
- 5. FireLens の設定方法をわかりやすく整理してみた
- 6. Kinesis Data Analytics for Flink Applicationsを試してみた
- 7. 複数アカウントのメトリクスを1アカウントに集約するCloudWatchダッシュボードをTerraformで構築する
- 8. 【Terraform】Terraformで扱える変数とデータ型まとめ
- 9. AWS Glue Studioで機密データ (PII等)検出と処理を試す
- 10. AWS Certified Machine Learningの勉強方法
- 11. SPARQLエンドポイント検索サイト「Linked Data API Navi」
- 12. JavaプロジェクトからSQSにキューを送信してlambdaをキックする
- 13. NLBのターゲットとしてALBを指定し、ALBでTLS終端させる
- 14. AWS SDKをv1→v2にアップデートする
- 15. マルチアカウント構成でのSSM Inventoryによるインベントリ収集方法
- 16. AWSの有益な資料、動画、教材など
- 17. AWSのVPCウィザードが2022年から進化した
- 18. パブリック / プライベートサブネットを用いて AWS でかんたんな VPC を構築する
- 19. AWS上でssh接続時にWARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! のエラーが出た時の対処法
- 20. AWS初心者は必ず読むべき!必見!AWSの基本⑪IAMでアクセス権限管理
APIgateway+Lambda+DynamoDB でのID管理を実装する
# 目的
AWSでよくある構成として APIgateway+Lambda+DynamoDBのサーバレスな構成があります。
ただこの時に、DynamoDBでは連番の管理ができない(id1の次は2のidをつけるみたいな)
そのため、DynamoDB側でテーブルを二つ用意してあげる必要があります。
+ データを格納テーブル(例: id,名前,email,時刻など)
+ 連番を管理するテーブル(上記のidの部分をカウントするようのテーブル)そのためLambdaでカウントするようなコードの書き方になってきます。
前提としてLambda,APIgateway,DynamoDB間のAMIの権限周りは既にクリアした前提とします。
# やったこと
今回は、Lambdaのコード周りでハマりまくったので
備忘録的な感じでコードだけとりあえず貼っておきます。
“`ruby:
import json
import boto3
import base64
import time
import decimal# DynamoDBオブジェクト
dynamodb = boto3.resource(‘dynam
AWS SAM CLIをbrew installしたときに発生したエラーを解決する
# 前提
以下のURLの手順に沿ってAWS SAM CLIをインストールしたときにエラーでハマりました。https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install-mac.html
# 環境
– macOS: 12.6# エラー内容
実行したコマンドはこちらです。
“`console
brew install aws-sam-cli
“`そしてこれがエラー内容です。
“`console
Error: python@3.8: the bottle needs the Apple Command Line Tools to be installed.
You can install them, if desired, with:
xcode-select –installYou can try to install from source with:
brew install –build-fro
VPCフローログを作成にする
# CloudWatchのロググループを作成する
AWSマネジメントコンソールにログインしてください。
CloudWatchのダッシュボードを表示してください。左メニューの[ログ]-[ロググループ]をクリックしてください。
![スクリーンショット 2022-10-16 5.50.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14202/cecd4264-e84d-5df9-fe0e-04dbc1f4a361.png)ロググループのページが表示されます。
[ロググループを作成]をクリックしてください。
![スクリーンショット 2022-10-16 5.54.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14202/1f26a63d-a5ed-78fd-c767-6c2bb34647b5.png)ロググループを作成ページが表示されます。
[ロググループ名]にお好きな名前を入力し、[作成]をクリックして
EC2×2台S3なし環境にて、/wp-content/uploadsディレクトリの内容を一方向同期する
## やりたいこと
AWSでWordPressのEC2サーバ2台の冗長構成を構築したとする。
同期元サーバでWordPressのuploadsフォルダの中身に変更があった際に、自動的に同期先サーバにコピー/削除/更新がされるようにしたい。
![WP同期.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1879925/cbc46667-25fb-9f48-88dd-21e4fac3d3db.png)## 前提条件
– セキュリティグループにてサーバ間のSSH(22),rsync(873)の通信ができるようにされていること
– 同期先のsshd_configにて、同期元IPからのroot接続を許可しておくこと
“`:/etc/ssh/sshd_config
#WordPress rsync
Match User root
AuthenticationMethods publickey
Match Address 同期する側のIP
PermitRootLogin yes
“`
※上記設
FireLens の設定方法をわかりやすく整理してみた
# Amazon ECS におけるログ出力
Amazon ECS 上で稼働するログを、外部に保存する方法は、主に 3 つあります。
引用 : https://speakerdeck.com/prog893/aws-startup-tech-meetup-number-3-kantankontenaroginguxuan-shou-quan
awslogs logging driver
![image-20221015214233390.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/16c4af1e-2039-3d52-3cdb-462071c7a0e1.png)
独自で Fluentd のサイドカーを構成
![image-20221015214318996.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/b9e85367-6617-d01a-e0bf-41b71b36c
Kinesis Data Analytics for Flink Applicationsを試してみた
# 背景・目的
以前、[こちら](https://qiita.com/zumax/items/7374f18205ad0fd53165)でKinesis Data Analytics for SQL Applicationを試してみましたが、今回はJavaのチュートリアルを試してみます。# 概要
[こちら](https://docs.aws.amazon.com/ja_jp/streams/latest/dev/tutorial-stock-data.html)をもとに理解します。
なお、Kinesis Data Analitics(KDA)自体の仕様については、[こちら](https://qiita.com/zumax/items/7374f18205ad0fd53165)の記事で整理したので省略します。## Architecture
[こちら](https://flink.apache.org/flink-architecture.html)のWhat is Apache Flink? のドキュメントを元に整理します。– Apache Flink は、無制限および制限
複数アカウントのメトリクスを1アカウントに集約するCloudWatchダッシュボードをTerraformで構築する
# はじめに
マルチアカウントで運用している環境で、同じメトリクスをいちいちスイッチロールしながら取得するのは面倒くさい。
CloudWatchダッシュボードを使えば、クロスアカウント設定でセレクタを切り替えながら確認することも可能だが、それも手間なので、一つのダッシュボードの画面で俯瞰できた方がいいよね!ということで、やってみた。
なお、本記事は
– CloudWatchメトリクスを触ったことがある
– Terraformはある程度分かるくらいの知識があることを前提としている。自分の書いた過去の記事でTerraform関連を読んで理解ができるのであれば、特に問題ないはずの難易度。
# IAMロールを作成する
[AWS公式のユーザーガイド](https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html#troubleshooting-cross-account-cross-Region)に書かれているように、今回の対応をするには、集約
【Terraform】Terraformで扱える変数とデータ型まとめ
# はじめに
udemyを使ってTerraformの勉強をしたので、Terraformで扱える変数とデータ型についての学習備忘録です。https://www.udemy.com/course/iac-with-terraform/
# HCL2とは
Terraformは、HCL2言語で書きます。
HCL2とは、“`the HashiCorp configuration language“`です。https://github.com/hashicorp/hcl
# コメントの書き方
“`terraform
# コメントは#で書ける
“`# ブロックタイプとは
下記のコードで、resource部分を“`ブロックタイプ“`と言います“`terraform
resource “aws_instance” “hello-world” {
“`
## ブロックタイプまとめ| 種類 | 説明 |
| —- | —- |
| locals | 外部から変更できない変数 |
| variables | 外部から変更できる変数 |
|
AWS Glue Studioで機密データ (PII等)検出と処理を試す
AWS Glue DataBrewに続き、AWS Glueでも個人識別情報 (PII) やその他の機密データの自動検出に対応してます。
https://aws.amazon.com/jp/about-aws/whats-new/2022/04/aws-announcing-sensitive-data-detection-glue/
公式ドキュメントはこちら
https://docs.aws.amazon.com/ja_jp/glue/latest/ug/detect-PII.html#choose-pii-entities## 機密データ検出ジョブ作成
`Detect Sensitive Data`アクションを利用する。
以下の例は単純にS3上のファイルをPII検出して変換し、S3に保存する。
AWS Certified Machine Learningの勉強方法
2022/09/25に[AWS Certified Machine Learning](https://aws.amazon.com/jp/certification/certified-machine-learning-specialty/)を822点で合格しました。
合格に至るまでに、何をどれぐらい勉強したか、記載します。# 目次
1. [試験範囲](#1-試験範囲)
2. [前提知識](#2-前提知識)
3. [勉強したこと](#3-勉強したこと)
1. [TechStock](#3-1-TechStock)
2. [AWS公式対策講座](#3-2-AWS公式対策講座)
3. [AWS公式模擬試験](#3-3-AWS公式模擬試験)
4. [最後に](#4-最後に)# 1. 試験範囲
試験範囲は公開されています。
[こちら](https://d1.awsstatic.com/ja_JP/training-and-certification/docs-ml/AWS-Certified-Machine-Learning-Specialty_Ex
SPARQLエンドポイント検索サイト「Linked Data API Navi」
この投稿は、[**LODチャレンジ2022**](https://2022.lodc.jp/)への作品エントリーにために作成しました。
https://2022.lodc.jp/
以前作成した以下の「[**Linked Data API Navi**](https://uedayou.net/ldapinavi/)」の使い方についての投稿と内容が重複する部分がありますが、こちらは作成経緯、サイト構成等や今後についての話が主になります。
記事を読んでいただいて利用してみたいと思う方がいましたら、以下の記事も参照いただければ嬉しいです。
https://qiita.com/uedayou/items/93f849e8c57733dddeeb
# Linked Data API Navi について
![Linked Data API Navi](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62575/51e8a0aa-f857-402c-
JavaプロジェクトからSQSにキューを送信してlambdaをキックする
# 前提
業務でこんな処理を実装する気がするので、簡単に予習してみます。
今回は動くか検証のみなので、ローカルで起動したJavaアプリケーション(Spring Boot)からSQSにメッセージを送信してみます。本当はlambdaからrdsへ登録・更新する処理を実装したかったのですが、それはまた別の機会に。(なのでSQSやlambdaの名前がmergeXXXXみたいになってます。)
![lambda-sqs.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2433961/3a229f2f-f2b9-d425-1c1e-6ec78dd46b8e.png)
# 環境
– macOS: 12.6
– IntelliJ IDEA: 2022.2.3 (Community Edition)
– Gradle: 7.5
– Java: temurin 17.0.3# 手順
## プロジェクトの作成
#### spring initializrでプロジェクト作成
[https://start
NLBのターゲットとしてALBを指定し、ALBでTLS終端させる
# 初めに
以前書いた記事では、ウェブサーバに HTTP でアクセスしようとした場合には、NLB の TLS:443 リスナーにリダイレクトし、ALB を経由せず NLB で TLS 終端していました。
https://qiita.com/quryu/items/e231fe83acf5dfc963e8
しかし ALB 型のターゲットグループをそれぞれ 80 番ポート用と 443 番ポート用の 2 つ用意することで、NLB に TCP:80、TCP:443 いずれのアクセスに対しても ALB で TLS 終端できることがわかりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/1ad39646-79fd-b84e-ea9d-0f89d9992403.png)
# 手順
CloudFormation で基本的なリソースを作成します。以下のテンプレートを使用します。
https://github.com/quryu-1/aws-cfn-template/blo
AWS SDKをv1→v2にアップデートする
## 経緯
現在携わっているPJでAWS SDKを使用してるのですが、処理実行時に`java.lang.NoSuchFieldError: CLIENT_ENDPOINT`が発生するようになり、調べたところ、サービスによってライブラリバージョンv1とv2が混在していることが原因だったため、全てv2に揃える対応を行いました。
(cf. [Github issue](https://github.com/aws/aws-sdk-java/issues/2582))## 前提
* ビルドツールはMavenを使用
* 利用サービスは以下
* Cognito
* S3
* SES
* SQS## 概要・基本方針
v1とv2の基本的な違いは公式ドキュメント [AWS SDK for Java 1.x と 2.x の相違点](https://docs.aws.amazon.com/ja_jp/sdk-for-java/latest/developer-guide/migration-whats-different.html)に記載されているのと、各サービ
マルチアカウント構成でのSSM Inventoryによるインベントリ収集方法
# 初めに
今回は、__SSM Inventory__を使ったマルチアカウント環境でのInventory情報の収集方法について解説します。# SSM Inventoryとは
SSM AgentがインストールされたEC2やオンプレミスのサーバから、そのサーバのメタデータを収集する機能し、一覧表示する機能です。
詳細はblackbeltをご参照ください。![0-blackbelt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/3ceee1dc-ba76-5adc-6b0c-f0486da54b8e.png)
(引用元:[20200212 AWS Black Belt Online Seminar AWS Systems Manager](https://www.slideshare.net/AmazonWebServicesJapan/20200212-aws-black-belt-online-seminar-aws-sy
AWSの有益な資料、動画、教材など
# 概要
自分が読んだり見たり、聞いたりした中で有益だと思った資料や動画、
教材などをまとめて見ました。
良さそうなものがあったら参考にしてみてください。# AWSの基本
自分が書いたもので恐縮ですが、全く用語から何までわからない方は目を通してみてください。
Youtubeの動画などもリンクがあります。https://qiita.com/Hashimoto-Noriaki/items/e9516c0f4f14849c1bb3
https://qiita.com/Hashimoto-Noriaki/items/1cb2324d67f217ef8aef
https://qiita.com/Hashimoto-Noriaki/items/202ab28412f640cb4fa8
# 基本の動画
この辺も見ておくといいかもしれないですね。https://www.youtube.com/wat
AWSのVPCウィザードが2022年から進化した
# VPCウィザード
VPCを作成する時にはVPCウィザードを使うと簡単に効率よくVPCを作成できたが、
今回はVPCを作成のボタンを押すと、下の資料のようにサブネットやルートテーブルなどが可視化できます。![スクリーンショット 2022-10-15 12.39.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/e2dbaa5c-eb6e-0338-7686-23ba0ae1e1b9.png)
![スクリーンショット 2022-10-15 12.40.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/a666dfdc-384f-740b-cc2f-145d55dba6d6.png)
![スクリーンショット 2022-10-15 12.40.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1
パブリック / プライベートサブネットを用いて AWS でかんたんな VPC を構築する
# 本記事の目的
* 以下記事の実質続きとなります。
https://qiita.com/shintaro-san/items/8c146f9bd199d04e41ff
* 以下のようなネットワークを構築してみる。前回の環境に対し、プライベートサブネットを用意する。
![vpc-image-002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2902882/cd15edc0-7e88-9589-bd3e-64e36dfd48b3.png)
# 事前知識
* AWS のサブネットには「パブリックサブネット」と「プライベートサブネット」という概念があるらしい。
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/configure-subnets.html
* 簡潔にまとめると、以下くらいの理解で良さそう。
– パブリックサブネット:外部インターネットと通信可能
– プライベートサブネット:外部インターネットと通信
AWS上でssh接続時にWARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! のエラーが出た時の対処法
# この記事を書いた背景
EC2で2つのインスタンスを立ち上げました。
その時にSSH接続をする際以下のエラーが出ました。“`
% ssh -i #今回は省略
“`
するとこんなエラーが出ました。“`
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#省略
“`# 原因
AWS上でサーバを作ったり消したりしていると同じIPアドレスでサーバが用意される事があるみたいです。SSH接続時には、以前保存した情報といま接続しようとしているサーバの情報が一致しているかを確認することで、ユーザ(クライアント)が別のサーバへ接続してしまうことを防ぐ機能があるみたいです。
そのため、IPアドレスの振り直しやOS再インストールなどでホスト鍵が変わってしまった場合、エラーが出
AWS初心者は必ず読むべき!必見!AWSの基本⑪IAMでアクセス権限管理
# この記事の概要
インフラの運用において情報が安全に守られているかを確認するセキュリティを扱います。# IAMとは
AWSを利用するユーザーの権限を管理するサービスです。⚫︎“`ポリシー“`
アクセス許可のことで、どのサービスの、どのリソースに、どんな操作するか⚫︎“`ユーザー“`
個々のアカウントのユーザー⚫︎“`グループ“`
IAMユーザーの集合⚫︎“`ロール“`
一時的にアクセスを許可したアカウントが発行でき、EC2やLambdaなどのAWSリソースに
権限を与えるために使います。ポリシー グループ ユーザー ロールの関係性を表した資料です。
https://milestone-of-se.nesuke.com/sv-advanced/aws/iam-policy-role-group/
https://qiita.com/ninoko1995/items/79ab8c7c40825c9b68f5
# IAMポリシーを作成
“`Developerポリシー“`と“`Directorポリシー“`を作成します。⚫︎“`De