- 1. SSL通信におけるCAAレコードとCNAMEレコードの役割
- 2. CloudFormationでQuickSightを複製する
- 3. Lambdaでindex.handler is undefined or not exportedが出た時の対処法
- 4. CloudWatchアラームの設定作業で苦しむ人を減らしたい
- 5. AWS公式資料で挑むSCS認定(41)-こんな時どうする(全分野その18)
- 6. Glueでパーティション値を変更(UTC→JST)してみた
- 7. Amazon EC2で何も考えずにEBSボリュームだけを使う時代は終わったのかもしれない
- 8. AWSにおける信頼性を考慮した構成の実践(社内システム)
- 9. AWS LambdaでPython基礎
- 10. VPCエンドポイントとAWS PrivateLinkの違い・関係性
- 11. [CloudFormation]複数環境を用意して共有リソースをエクスポートする
- 12. VMware Cloud on AWS環境で3ホスト構成をデプロイしてみた
- 13. PythonをGlue3.0で実行する方法
- 14. ECSタスクからS3への疎通確認用の簡易Dockerイメージを作成する
- 15. CodeBuildの環境変数をSecretsManagerから取得する
- 16. SNSからWeb漫画ランキングを自動生成したら、話題の漫画が集まった【個人開発】
- 17. AWS Budgetsでアラート設定する~90年代の隠しサイト…?
- 18. AWS Lambda function URLsを手軽に実行
- 19. CloudFormationでCodeBuildを作成しようとしたら「Not authorized to perform DescribeSecurityGroups」になった
- 20. Firebase Authenticationを使ってAPI Gatewayに認証機能を付与する
SSL通信におけるCAAレコードとCNAMEレコードの役割
# はじめに
Route53においてSSL通信を設定した場合次のようにCAAとCNAMEというレコードを作成しなければならない。
(CAAについては手動で、CNAMEについてはACMを設定した場合に自動的に追加される)
![9e69e4b025e8c0ba6e33b0f5b24ee6ee.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1431393/d7838772-707d-2350-e1f6-b8f53f04eb92.png)作成する中でCAAとCNAMEがどう違うのかについて備忘録として記します。
# 各レコードの説明
## CAAレコード
CAAとは、ドメイン名の所有者/管理者がDNSサーバを用いて、自らが所有/管理するドメイン名に
対して証明書の発行を許可する認証局を指定することが可能になる仕組みです。
DNSサーバのゾーンファイルにCAAレコードを指定することで、ドメイン名の所有者/管理者は、
自らが管理するドメイン名に対して、意図しない認証局から証明書が発行されるリスクを低減できま
CloudFormationでQuickSightを複製する
# はじめに
前回、QuickSightをCloudFormationで操作した内容を記事にしました。https://qiita.com/a_b_/items/f9e7588348547c952d55
“分析”や”ダッシュボード”に関しても試してみたので記事にします。
# 概要
– CloudFormationでは、”分析”や”ダッシュボード”をゼロから構築することはできない。
– GUIで作成した”分析”をテンプレートにして、それを基に”分析”と”ダッシュボード”を作成することは、CloudFormationで出来る。
– “分析”のテンプレートから、”分析”と”ダッシュボード”の両方が複製できます。
– そのため今回は「複製する」というテーマで、複製元でテンプレートを作って複製先に配布する、という内容。# 参考
https://dev.classmethod.jp/articles/cloudformation-quicksight-dashboard-analysis/
# 構築
## 複製元
### 1.共通部分作成
まずは複製元で環境を作っていき
Lambdaでindex.handler is undefined or not exportedが出た時の対処法
## 問題
Lambda実行時に以下のエラーが発生した
“`bash
index.handler is undefined or not exported
“`## 対処法
以下の2つを実施した。
### ファイル名の変更
SAMでサンプルアプリケーションを作成したが、ファイル名がapp.jsとなっていたので以下を変更した。
– ファイル名変更
– app.js -> index.js
– package.jsonの変更“`
“main”: “app.js”,
“`
↓
“`
“main”: “index.js”,
“`### ランタイム設定の見直し
アップロードしたファイル構造と、ランタイム設定が一致していることを確認する。
例えば、以下の構造の場合
“`
|–src
|–index.js
“`Lambdaの以下のようにランタイム設定のハンドラ部分をsrc/index.handlerとすれば良い
![markdown-linter – Lambda 2022-04-17 08-56-00.png](https:
CloudWatchアラームの設定作業で苦しむ人を減らしたい
# 目次
[1.この記事を書いた経緯](#1-この記事を書いた経緯)
[2.アラーム登録コマンド紹介](#2-アラーム登録コマンド紹介)
[注意事項](#注意事項)
[ステータスチェック_システム](#ステータスチェック_システム)
[ステータスチェック_インスタンス](#ステータスチェック_インスタンス)
[cpu使用率](#cpu使用率)
[メモリ使用率_linux](#メモリ使用率_linux)
[メモリ使用率_windows](#メモリ使用率_windows)
[ディスク使用率_linux](#ディスク使用率_linux)
[ディスク残量_windows](#ディスク残量_windows)
[3.作業実施後](#3-作業実施後)# 1. この記事を書いた経緯
CloudWatchアラーム(以降CWアラームと表記)はシステムの保守・運用に不可欠な存在ですが、AWSマネジメントコンソールから登録するためには
①監視対象のメトリクスを選ぶ
②アラート条件を設定
③アクションを設定
④アラーム名を設定
と大まかに4つの作業を実施する必要があります。私が参
AWS公式資料で挑むSCS認定(41)-こんな時どうする(全分野その18)
##### [前回] [AWS公式資料で挑むSCS認定(40)-こんな時どうする(全分野その17)](https://qiita.com/mingchun_zhao/items/2a58a411f1b022c75c5c)
## はじめに
今回も引き続き、「こんな時どうする」集の作成です。
## 分野1: インシデント対応
– インシデントの自動修復を行いたい
– AWS Step Functionsを使用し、ITおよびセキュリティのオートメーション化が可能
– ※ Step Functionsはローコードのビジュアルワークフローサービスで、以下の用途で使用
– 分散アプリケーションの構築
– ITおよびビジネスプロセスの自動化
– AWSサービスを利用したデータと機械学習のパイプラインの構築
– ※ ワークフローにより、障害、再試行、並列化、サービス統合、可観測性などが管理され、デベロッパーはより価値の高いビジネスロジックに集中できる
– Step Functionsにより、マニュアルによる
Glueでパーティション値を変更(UTC→JST)してみた
# 背景・目的
S3に出力されたUTC日時のHive形式のパスから、GlueでJST日時のHive形式のパスへ変換します。
– ここでいう、Hive形式とは、year=XXXX/month=XXXX/day=XXXX/hour=XXXXなどの形式を指します。
– UTCとJSTの時差は、+9:00になります。AWSのサービスでログをS3に出力する場合、UTC日時でS3パスが作られます。
これを各ローカルタイムのパスに変更をしたいのが趣旨になります。例えば、UTCの“`2022年04月15日(金) 00:00“`は、JSTでは“`2022年04月15日(金) 09:00“`になりますが、
S3パスでは、UTCの“`year=2022/month=04/day=15/hour=00/“`となり、これを、“`year=2022/month=04/day=15/hour=09/“`に変換します。# まとめ
– パーティション値を変換しました。
– 変換するには、DataFrameを駆使すればできました。# 実践
## 前提
– Source(UTC)側のS3パス
Amazon EC2で何も考えずにEBSボリュームだけを使う時代は終わったのかもしれない
# はじめに
– Amazon EC2コンソールのアップデートで、インスタンス作成時にAmazon EFSやAmazon FSx(for NetApp ONTAP / for OpenZFS)をマウントできるようになった。
– https://aws.amazon.com/jp/about-aws/whats-new/2022/04/amazon-efs-integration-launch-ec2-console/
– https://aws.amazon.com/jp/about-aws/whats-new/2022/04/amazon-fsx-file-system-ec2-launch-experience/
– これは、「**何も考えずにEBSボリュームを使うのはやめて、用途や要件に応じて適切なストレージサービスを使い分けるべし**」というAWS側のメッセージなのでは、と考えた。# EBSボリューム以外に選択肢が増えると何が良いのか
– パッと思いつくメリットを書き出してみた。## 1. ストレージコストが安くなる(かもしれない)
– Amazon E
AWSにおける信頼性を考慮した構成の実践(社内システム)
# 初めに
生産技術部で製品の検査工程を担当しているエンジニアです。工場のデータを見える化するため、AWS上にシステムを構築しています。設計の原則にベストプラクティスとして記載されている内容を実践し、実装に詰まったところを整理します。https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/reliability-pillar/design-principles.html
# 信頼性を考慮した構成とポイント
DirectConnectを利用し、オンプレミス環境とAWS間を接続しています。社内限定のシステムのため、Internet Gatewayは利用せずPrivate Subnetに閉じています。インターネットへの接続が必要なサービスは全てPrivateLinkで接続しています。設計の原則に基づき、以下の3点を実践しました。これらを実践する上で検討したことを紹介します。
* 水平方向にスケールしてワークロード全体の可用性を高める
* キャパシティの推測をやめる
* 障害から自動的に復旧する![elastic-sta
AWS LambdaでPython基礎
2022/4/6(水)に行われたAPNパートナー限定セミナー「Pythonの基礎から学ぶ!サーバーレス開発はじめの一歩」で学んだLambda部分の復習。
AWS Lambdaと Amazon Translate を使ってテキスト翻訳するアプリケーションを作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/e23bb7ce-521c-da78-714d-d6f9589b28e0.png)# 1.Lambda 関数を実行する
## 1-1. Lambda 関数の作成
マネジメントコンソールで Lambda を開き「関数の作成」をクリックする。
– 「一から作成」を選択する。
– 関数名:適当な名前を付ける。目的がわかるようにしたいので今回は`translate_lambda`とした。
– ランタイム:python3.9その他項目はデフォルト値のまま「関数の作成」をクリックする。
![image.png](https://qiita-image-store.
VPCエンドポイントとAWS PrivateLinkの違い・関係性
## 勉強前イメージ
大体似たようなものだとは思ってる
## 調査
### VPCエンドポイント とは
VPCと他のサービス間の通信を可能にするVPCコンポーネント(仮想デバイス)で
VPC内のインスタンスとVPC外のサービスをプライベート接続で通信できるようになります。種類には、以下の2種類があります。
– インターフェイスエンドポイント
– ゲートウェイエンドポイント詳細は [こちら](https://qiita.com/miyuki_samitani/items/9d9f7a0c417cb75a6c85) をごらんください
### AWS PrivateLink とは
AWSへのAPIアクセスをインターネットを経由せずに行えるインターフェースタイプのVPCエンドポイントのことで、
PrivateLinkを使用すると、インターネットゲートウェイやNAT等不要になります。
PrivateLinkの実体はVPC内のNIC(Elastic Network Interface)です。### VPCエンドポイント と AWS PrivateLink の違い・関係性
[CloudFormation]複数環境を用意して共有リソースをエクスポートする
# やりたいこと
CloudFormationの[ベストプラクティス](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/best-practices.html#cross-stack)のうち
・クロススタック参照を使用して共有リソースをエクスポート
・テンプレートを再利用して複数の環境にスタックを複製# どうやって実現するか
OutputsセクションとMappingセクション及びParameterセクションを使用
## クロススタック参照の共有リソースをエクスポートする方法
・Outputsセクションと`!Importvalue(Fn::Importvalue)`を使います。
ざっくりとしたイメージです。
![template.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697228/ccfd99b2-39c2-ef6f-ef2c-f4af6b8089ad.png)構文
“`
Outputs:
Lo
VMware Cloud on AWS環境で3ホスト構成をデプロイしてみた
# 1. はじめに
「[VMware Cloud on AWS](https://www.vmware.com/jp/products/vmc-on-aws.html)」でi3.metalの3ホスト構成をデプロイした際の各パラメーター情報のスクリーンショットを備忘録としてまとめます。
今回はあくまで備忘録なので、解説などは過去ブログなどもあわせてご確認いただけると幸いです。2022年3月時点での構成情報で、SDDCバージョンは1.16です。
# 2. デプロイ直後、デフォルト状態のスクリーンショット
## VMware Cloud Consoleからわかる概要
ホスト数は3ホスト、AWS東京リージョンにデプロイされているのが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/90459751-42fe-b90a-01e9-d4f8513380db.png)
![image.png](https://qiita-image-store.s3.ap-northe
PythonをGlue3.0で実行する方法
# はじめに
AWS GlueでPythonを動かそうと思い「Python Shell script editor」をポチッと選択してみたら、なんとGlueのバージョンが選べず、Glue3.0ではなく1.0で動かすしかなかった。
Glueバージョンを選択したうえでPythonを動かす方法を見つけたので共有します。と言ってもめっちゃ簡単な話なので簡潔にお話しします。
# 今回の問題
GlueStudioのJobsメニューでPythonジョブを作ろうとすると、「Python Shell script editor」を選びたくなる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599140/dedafade-6792-8ec9-7dd6-8ca3373d6e3f.png)実際に作ってみると、Glue versionが空になっている。この場合、実際にはGlue1.0が動くらしい。
![image.png](https://qiita-image-store.s3.ap-northea
ECSタスクからS3への疎通確認用の簡易Dockerイメージを作成する
ECSタスクとして実行するバッチ処理から、外部システムのS3バケットにアクセスするケースにおいて、まだバッチ処理のアプリケーションができていない状況で、先にインフラレベルの疎通確認を行うための簡易なDockerイメージを用意してみました。
## Dockerfile
“`dockerfile:Dockerfile
# syntax = docker/dockerfile:1.3-labs
# ヒアドキュメント使用のためsyntaxバージョンの指定が必要
# BuildKitが有効化されている必要がある# S3にputするだけなのでAWS公式イメージをそのまま使用
FROM amazon/aws-cli# putする固定のダミーファイル。本来はアプリケーションで都度作成するもの
# amazon/aws-cliはWORKDIRが/awsのため、/aws/dummy.csvとして出力される
COPY <
CodeBuildの環境変数をSecretsManagerから取得する
# はじめに
CodeBuildの環境変数の設定についてのメモです。# 実装例
* `GITHUB_PAT`: SecretesManagerから取得する環境変数
* `SECRETS_NAME` : CodeBuildに設定する環境変数
* `REPOSITORY_URI`: 同上
* `IMAGE_URI`: 同上
* `CONTAINER_NAME`: 同上
* `CODEBUILD_RESOLVED_SOURCE_VERSION`: CodeBuildにデフォルトで設定されている環境変数“`buildspec.yml
version: 0.2env:
secrets-manager:
GITHUB_PAT: ${SECRETS_NAME}:GITHUB_PAT #key: secret-id:json-key:version-stage:version-idphases:
pre_build:
commands:
– IMAGE_URI=”${REPOSITORY_URI}:$(echo ${CODEBUILD_RESOL
SNSからWeb漫画ランキングを自動生成したら、話題の漫画が集まった【個人開発】
# はじめに
Web漫画のランキングサービスをリリースしました!
SNSで話題になっている漫画を探すのに便利です。bookle – 話題のWeb漫画が見つかる!(無料)
http://bookle.work/## サービス概要
はてなブックマークやTwitterからWeb漫画のブックマーク数やツイート数などを収集し、**漫画の人気度をスコア化してランキング表示するサービスです**。
– 特徴
– 手間をかけずに人気の漫画を発見できる
– 広く情報収集して自動判定するため、特定のサービスや個人の嗜好の影響を受けにくい![service.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118730/68d8c1c4-693a-1a6e-58a0-e371b188e9f6.png)
## なぜ開発したのか?
いろいろなサイトでWeb漫画が公開されていますが、私自身は時々SNSで話題になったものを読む程度で、あまり積極的に読んでいませんでした。一番の理由は、**多数の漫画の中
AWS Budgetsでアラート設定する~90年代の隠しサイト…?
AWS Budgets から Amazon SNSで通知を発砲するには、SNS トピックに AWS Budgets への許可アクセスポリシーを設定しないといけない。そのアクセスポリシーのコピー時に衝撃をうけたので、その部分を書きたいがために記事にする。
# 1.AWS Budgets
➤ Budgets 【意味】:予算(額), 経費英単語の意味そのまま、予算管理サービス。
一定期間の予算を設定しておき、以下のような場合にE メールや SNS でアラート通知を受け取れるように設定できる。
– コストと使用状況が設定した予算のしきい値を超過あるいは超過しそうになった
– Reserved Instance や Savings Plans の使用率やカバレッジが設定したしきい値を下回ったAWS Budget Actions では、アラート発生時に以下のようなアクションを設定することが可能。
– IAM ポリシーの適用、
– サービスコントロールポリシー (SCP) のアタッチ、
– 特定の Amazon EC2 インスタンスまたは Amazon RDS インスタンスの停止これ
AWS Lambda function URLsを手軽に実行
# 世間の方々よりも少し遅いけど、AWS Lambda function URLs を試してみよう
– ドキュメント
– https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html## AWS マネジメントコンソール Lambda から
– マネジメントコンソールで操作
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/6a9ecc1c-598a-982b-429e-f58e5bc4f419.png)– 「関数の作成」ボタンを押す
– 作成された内容を確認 ,URLが払い出しされて紐づいている
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/2c2b3c50-6420-daab-8f78-f68fd38bfa29.png)作成された URL:https://ej2mqhfzpd45oaz
CloudFormationでCodeBuildを作成しようとしたら「Not authorized to perform DescribeSecurityGroups」になった
# 起きたこと
– CodeBuildプロジェクトをCloudFormationで作るためにyamlテンプレートを作成し`AWS::CodeBuild::Project`を追加した。
– またプロジェクトにアタッチするロールとポリシーを一緒に作りたかったので、同じテンプレートに`AWS::IAM::Role`と`AWS::IAM::Policy`を追加した。
– 作成したテンプレートをもとにスタックを実行すると`Not authorized to perform DescribeSecurityGroups`というエラーメッセージが表示され作成に失敗した。# 原因
## 1. 必要な`ec2:DescribeSecurityGroups`の権限が不足している。(エラー文そのまま)
– VPC内にCodeBuildを作成する場合に必要な権限となる。
– 他にも必要な`ec2:`のポリシーがあるが、基本的には公式が載せている[このポリシー](https://docs.aws.amazon.com/codebuild/latest/userguide/auth-and-a
Firebase Authenticationを使ってAPI Gatewayに認証機能を付与する
# 概要
Firebase Authenticationに登録されているユーザーだけがAPIを使えるようにするため、
エンドポイントであるAPI Gatewayにオーソライザーを設定します。処理の流れは以下の通りです。
1. **Firebase Authentication SDK**を使用し**IDトークン**を取得する
2. 取得したIDトークンをヘッダーに付与し、APIGatewayのエンドポイントへリクエストを送る
2. API Gatewayの**オーソライザー**が**Firebase Admin SDK**を使用しIDトークンを検証する
2. 認証できた場合、Lambda関数を実行する# 対象読者
Firebase Authenticationの機能が分かる方
API GatewayとLambdaでAPIを作成