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

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

【AWS Amplify】functionのリトライ回数を変更したい

## この記事の対象となる方

– AWS Amplifyを使用中
– S3のCreateObjectやSQS等に反応するLambda(function)を作成し、デプロイしている
– カスタムリソース(`amplify add custom`)を追加して、S3のCreateObjectのトリガやSQSを定義し、上記のLambdaと関連付けている
– デフォルトのリトライ回数は2だが、要件によって回数を変えたい (多分「0にする」を最も要求されそう)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267110/97052a32-6a8c-b66c-c9cb-6fe00f434099.png)
– ↑↑ この「再試行」です

## どうすればリトライ回数を変更できるか

### 結論

CloudFormation(`[functionName]-cloudformation-template.json`)に加筆するしかありません。
– `Resources`に以下を追加し

元記事を表示

RDSマネージドローテーションキーでカスタムユーザーの値に変更できるのか

SecretsManagerを利用している際に、各サービスでマネージドなローテーションキーを提供していることを確認しました。
今回はこのシークレット情報を変更できるのか検証してみました。

## マネージドローテーションとは?
RDS作成/変更時にRDSのコンソール上で設定可能なSecretsManagerになります。
特徴としては、ローテーション用の間数が不要であり、SecretsManagerの値が以下画像のように「rds!」から始まるものになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/872532/2f2ebcf2-7a09-6863-aed8-f3833ba61f58.png)

ローテーション構成はいかのようになります。上記でも記載しましたがローテーション間数へのリンクもないので、**間数なしでローテーションできる**ことも大きな特徴になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

AWS Terraform – Lambda と SNS の連携で トリガーができない

# 公式

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lambda_permission

# 問題

TerraformでLambdaとSNSを連携させた

SNSのサブスクリプションにはLambdaが登録されているように見えるのに、
逆にLambdaのトリガーの画面にSNSが現れない

# 解決

aws_sns_topic_subscription に Lambda の ARN を設定するだけではなく
SNS に Lambda の実行パーミッションを付ける必要があるようだ

“`tf
resource “aws_sns_topic” “example” {
name = “example”
}

resource “aws_sns_topic_subscription” “example” {
topic_arn = aws_sns_topic.example.arn
protocol = “lambda”
endpoint = aws_lambd

元記事を表示

CDK と CloudFormation の 概念(Concept) の関係図

CDK で運用するならスナップショットテストはちゃんとやったほうがいいということを学びました。スナップショットテストが検出する 差分 のことはなんと呼べばいいんでしょうか?呼び名はない?ということを、全体を整理しながらぼんやり考えてたら怪文書(怪図?)が出来上がったのでここに放流します。

![CDK での開発プロセスにおけるリソースの相変化の呼び名.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37466/076c8c80-efa2-ebc4-1334-571543640f27.png)

CloudFormation の範囲だけなら概念の整理のドキュメントが公式にしっかりあるけど CDK とあわせた一貫性のある(なくてもいいけど)やつはあまり見かけないですね。
※ 上記図は私が触れる慣用の範囲のメンタルモデルであって正確さや厳密さはないので目を細めて眺めるくらいにとどめてください。

– 参考: [AWS CloudFormation の概念 – AWS CloudFormation](htt

元記事を表示

AWS SSM PortforwardコマンドとIAMポリシー

# はじめに
AWSのVPC内にあるWindowsインスタンスにローカルPCからSSM PortforwardをしようとしたらコマンドとIAMポリシーにつまづいたので記録として残しておきます。

# 環境
接続先はVPC内Windowsサーバ(3389のRDPポートにつなぎたい)
接続元OSはWindows

Windowsサーバには適切なIAMロール(AmazonSSMManagedInstanceCore)とNetwork設定、SSMAgentがインストールされている前提です。

# AWS CLIのコマンド
ドキュメント等を参考にコマンドを用意したが以下はNG
“`
aws ssm start-session –target i-xxxxxxxxx –document-name AWS-StartPortForwardingSession –parameters ‘{“portNumber”:[“3389″],”localPortNumber”:[“50001”]}’ –region ap-northeast-1
“`

以下はOKのコマンド。
–paramete

元記事を表示

awsのインフラを構築して、Terraform化しようとしたときに調べたことをまとめてみた。

Terraformについて完全理解した。(ダニング=クルーガー効果)

# Terraformについて
– HashiCorp社がGo言語で開発したツールである。
– インフラを構造化言語で記述することができる。

# Terraformで、できること
– インフラをコード化できる。
– 何度もインフラを構築する時に、手作業で構築しなくて良い。
– 構築後のインフラを管理も可能。
– 変更やインフラの追加に対応することが可能。
– 既存のインフラの設定をtfstateファイルという設定を保存するファイルにimportすることができる。

# Terraformは何をしてくれるのか。
– 記述した構造化言語の記述を元に、AWSのAPIを叩いてインフラを作成する。
– APIでインスタンスを作成可能だが、Terraformを使うことで状態の管理もできるところが良い。

# Terraformでコードを書くときには、何のドキュメントを参考にするのか。
– まず参考にしたのは、下記の2点です。
– [Terraformのドキュメント](https://registr

元記事を表示

amazon prime videoがマイクロサービス構造からモノリス構造へ移行して費用90%節減

> この記事の内容にある意見は、個人の主観的意見を前提とします。
> 記事の内容は間違いがあり得ますので、ご了承いただけると幸いです。内容の間違い、認識の違い、違う意見などありましたら、コメント大歓迎です!

# 概要

少し過ぎた議事ではありますが、2023年3月にamazon prime video techblogにて面白い議事があり、世界から注目された事例がありました。

> Scaling up the Prime Video audio/video monitoring service and reducing costs by 90%

最近はモノリス構造は避けて、マイクロサービスやサーバーレス構造でのサービス検討が注目されている中、個人的に興味深い事例と考えたので、qiitaにて紹介しようと思います。

# 関連記事からわかる注目度

元の`amazon prime video tech`からの配信記事はこちらになります。

– [amazon prime video tech: Scaling up the Prime Video audio/video monito

元記事を表示

AWS + Terraform – ALBのエラーを CloudWatch メトリクスで検知して通知する

# 標準メトリクス

CloudWatch > メトリクス にいろんな標準メトリクスがある

ALBだけでも相当色々な数があるが「リージョン別のメトリクス」とか「ALB単位のメトリクス」とかに分かれているようだ

# アラームの作成

CloudWatch > アラーム から新しいアラームを作成できる

ここで好きなメトリクスを選んでしきい値などを設定すれば良い

# ALB (ELB) の500系エラーの説明

ALBの層で起こるエラーと、ターゲット内(アプリケーション層とか)で起こるエラーはメトリクスの種類が分かれているようだ

> HTTPCode_ELB_5XX_Count
>ロードバランサーから送信される HTTP 5XX サーバーエラーコードの数。この数には、ターゲットによって生成される応答コードは含まれません。

> HTTPCode_Target_5XX_Count
> ターゲットによって生成された HTTP 応答コードの数。これには、ロードバランサーによって生成される応答コードは含まれません。

https://docs.aws.amazon.com/ja_jp/

元記事を表示

AWS Certified Solutions Architect – Professional 試験 (SAP-C02) 合格体験記

# はじめに
本記事は、AWS Certified Solutions Architect – Professional 試験 (SAP-C02) の合格体験記です。
これから受験する方の参考になれば幸いです。

# 受験のきっかけ
アソシエイト3資格を全て取得したので、次のステップとしてプロフェッショナル資格に挑戦しました。

## AWS認定資格一覧
![aws_資格一覧.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2302749/e446aa12-502e-ea56-4c97-b9ff277f1222.jpeg)

※画像はこちらの記事を元に作成しました。

https://aws.amazon.com/jp/blogs/psa/cert-tips/

※アソシエイト3資格の合格体験記はこちらです。

https://zenn.dev/negocia/articles/46ec8a93c5a4f5

# AWS Certified Solutions Architect – Professio

元記事を表示

【初心者向け】EKSを用いてReactAppを公開してみた

# はじめに
### 「おぼろげながら浮かんできたんです。EKSという単語が。」

なんとなくですが、EKSを使ってみたくなったので使ってみました。EKSというのはAWSで使用できるkubernetesのサービスです。AWSにはEKSの他にもECSというAWSが独自に用意したコンテナのオーケストレーションツールも存在します。
学習コストの低さやメンテナンスの運用などを考えると、自分は試すならECSからかな、と今になっては思うんですがしょうがありません。なぜなら、おぼろげながら浮かんじゃったから。。。

# Kubernetesとは何?

この記事を読んでいる聡明な皆様なら既に知っていると思いますが、念のためKubernetesについても説明します。(「クバネティス」、「クーバネティス」と読みます。私はどや顔で「くー↑ばねいつ↓」と読んでいました)

> Kubernetes (K8s)は、デプロイやスケーリングを自動化したり、コンテナ化されたアプリケーションを管理したりするための、オープンソースのシステムです。
引用:[kubernetes公式ドキュメント](https://kuber

元記事を表示

kintone-rest-api-client を使ってkintoneアプリを自動更新する

## はじめに
以前書いた記事「[DynamoDB StreamをトリガーにLambdaを実行する処理をCDKで書いてみた](https://zenn.dev/collabostyle/articles/3ed9b3440c7d09 “DynamoDB StreamをトリガーにLambdaを実行する処理をCDKで書いてみた”)」の、Lambdaの処理でkintone-rest-api-clientを利用しています。

## kintone-rest-api-clientとは
kintone-rest-api-clientは、KintoneプラットフォームのためのREST APIクライアントライブラリです。このライブラリは、Pythonで書かれており、Kintone REST APIを呼び出すための簡単な方法を提供します。
kintone-rest-api-clientを使用すると、Kintoneアプリケーションを操作するPythonスクリプトを簡単に作成することができます。たとえば、kintone-rest-api-clientを使用して、データレコードの作成、更新、削除、検索などを行

元記事を表示

DynamoDB StreamをトリガーにLambdaを実行する処理をCDKで書いてみた

## はじめに
* DynamoDB StreamとLambdaを使ってDynamoDBのデータに変更があった場合(追加、編集、削除)に、その変更内容を別アプリに自動で反映する処理を実装しました。
* 自動化した処理をCDK化しました。

## DynamoDB Streamとは
DynamoDB Streamは、Amazon Web ServicesのDynamoDBサービスに含まれる機能の一つで、DynamoDBテーブルの変更をリアルタイムでキャプチャし、変更を処理するアプリケーションとの間でデータを配信するためのサービスです。DynamoDB Streamを使用することで、アプリケーション開発者は、DynamoDBテーブルの変更を非同期的に受信し、変更を処理することができます。この機能は、サーバーレスアーキテクチャを使用する場合に特に有用であり、システムの拡張性と柔軟性を高めるのに役立ちます。

## やりたいこと(イメージ図)
1.DynamoDBに対する項目の追加、編集、削除をDynamoDB StreamのイベントとしてLambdaに渡す
2.イベントを受け取ったLam

元記事を表示

【AWS】AWS SAPの勉強メモ

# 始めに
AWS SAPの勉強を始めましたが、必要な知識量が膨大で
絶望。。

そこで最近学んだ内容をメモしておくだけになりますが
SAP勉強中の方にほんの少し、参考になれば程度の記事です。
※SAAレベルの内容も含みます

# SAP学習中に学んだサービス
## ▪️AWS RAM
アカウント間でリソースを共有するためのサービス

## ▪️Direct Connect Gateway
複数のリージョンのVPCに接続できる

## ▪️パブリックVIF
オンプレのデータセンターがAWSパブリックサービスに
アクセスできる

## ▪️AWS Firewall Manager
複数アカウントやOUのWAFルールを一元管理できる
Organizationsのアカウント間でWAFルールを一元管理する。

## ▪️AWS DMS(database migration service)
DBをAWSへ迅速かつ安全に移行するのに役立つ
移行中もDBは完全に利用可能状態が保たれ、
アプリのダウンタイムは最小限になる。

異なるプラットフォームでも同じでも、移行可能で
低レイテンシーかつ継続的

元記事を表示

無料でAWS CodeWhispererを使ってみよう(個人アカウントのみ)

船井総研デジタルのYookです。

コーディング支援サービス「GitHub Copilot」はよく知られているが、個人アカウントでも有料なので、なかなか手が伸びないですよね。そこで、無料で使える「AWS CodeWhisperer」があることを見つけ、導入してみようと思います。

## AWS CodeWhispererとは
以下の公式ホームページに詳しい内容が載っています。

特徴
* コメントや書きかけのコードから予測して自動生成
* セキュリティースキャン
* オープンソースコードのリファレンストラッカー
* サポートされている言語: Python、Java、JavaScript、TypeScript、C#、Rust、Go、Ruby、Scala、Kotlin、PHP、C、C++、Shell Scripting、SQL

https://aws.amazon.com/jp/codewhisperer/

個人アカウントに限って無料で利用可能!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c

元記事を表示

【AWS Batch】エラー「exec format error」の原因と解決方法

# 概要
ECRにイメージをプッシュして、AWS Batchのジョブからコマンドを実行すると`exec format error`になりました。本記事ではその原因と解決方法を記載します。

# エラー内容

AWS Batchのコマンドに、試しに`[“pwd”]`をジョブに入れて実行しました。
しかし、ログを見ると以下のエラーになりました。

“`
exec /bin/pwd: exec format error
“`

このエラーは、コンテナイメージが実行しようとしているバイナリまたはコマンドの実行形式が正しくない場合に発生するよう。コンテナイメージがEC2インスタンスの実行環境と互換性がないっぽい。

# 原因
`docker inspect`を実行してDockerイメージの中身を見てみる

“`
“Architecture”: “arm64”,
“Variant”: “v8”,
“Os”: “linux”,
“`

`”Architecture”`フィールドが`”arm64″`であることは、コンテナイメージがARM64アーキテクチャ向

元記事を表示

HULFT SquareでAmazon S3のバケットにファイルを格納してみた(比較編)

# はじめに
こんにちは。すぎもんです。?
前回の記事 **[『DataSpiderでAmazon S3のバケットにファイルを格納してみた』](https://qiita.com/sugimon/items/b13395cfe5217e8f90c0 “DataSpiderでAmazon S3のバケットにファイルを格納してみた”)** の通り、DataSpiderでやってみたことをHULFT Squareでもやってみました。
今回は、その違いについても触れていきます。

:::note warn
下記が**DataSpider Servista と HULFT Squareの比較**になります。
:::

| | DataSpider Servista | HULFT Square |
|:-:|:-:|:-:|
| **サービス形態** | パッケージ製品 | iPaaS |
| **導入サーバ** | 自身で環境を用意 | クラウド環境 |
| **拡張性** | サーバ環境に依存 | コンソール画面より自由にリソース割り当て可能 |
| **セットアップ** | インストール

元記事を表示

AWS CLIを使ってOrganizations環境のIAM Access Analyzerを有効化する

aws accessanalyzer list-analyzers
{
“analyzers”: [
{
“arn”: “arn:aws:access-analyzer:ap-northeast-1:xxxxxx:analyzer/ConsoleAnalyzer-fasd”,
“name”: “ConsoleAnalyzer-xdaf”,
“type”: “ORGANIZATION”,
“createdAt”: “2023-09-20T00:07:32+00:00”,
“lastResourceAnalyzed”: “arn:aws:ecr:ap-northeast-1:xxxx:repository/hello-eks”,
“lastResourceAnalyzedAt”: “2023-09-20T00:08:13.522000+00:00”,
“tags”: {},

元記事を表示

S3 バケットポリシーのNotPrincipalによるロール制限ではまった話

# はじめに
今回、バケットポリシーで使えると便利だけど使い方ではまってしまったNotPrincipalの設定について解説をしたいと思います。

とあるKinesis DataFirehoseからS3へのDirect PUT接続を構築したときのことです。
構築自体は難なく完了。次にセキュリティを高めようと思い、“NotPrincipal“を使ったバケットポリシーを以下のように設定してみました。
“NotPrincipal“でFirehoseに付与したロール以外からのS3アクセスを拒否したつもりでした。
しかしながら、これを設定した瞬間にS3 Access Denied のアクセスエラーが出てしまいました…:sob:

“`JSON:Bucket Policy (Bad)
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Deny”,
“NotPrincipal”: {
“AWS”: [

元記事を表示

Security Hubでコントロールの一覧とARNを取得する

aws securityhub get-enabled-standards
{
“StandardsSubscriptions”: [
{
“StandardsSubscriptionArn”: “arn:aws:securityhub:ap-northeast-1:<アカウントID>:subscription/aws-foundational-security-best-practices/v/1.0.0″,
“StandardsArn”: “arn:aws:securityhub:ap-northeast-1::standards/aws-foundational-security-best-practices/v/1.0.0”,
“StandardsStatus”: “INCOMPLETE”
},
{
“StandardsSubscriptionArn”: “arn:aws:securityhub:ap-northeast-1:7

元記事を表示

AWS Terraform – Cloud Watch Logs のサブスクリプションフィルタ + Lambda連携を Terraform管理

# 概要

Cloud Watch Logs のサブスクリプションフィルタを使うと
ログのパターンを検出してLambdaを起動できる

AWSコンソールからの作り方はCloudWatchのロググループを選んで「アクション」から設定できる

image

これをTerraform管理する

# Terraformのコード例

“`tf
resource “aws_cloudwatch_log_subscription_filter” “xxx” {
name = “xxx”
log_group_name = “/path/to/log_group”
filter_pattern = “<フィルタパターン>”
destination_arn =
}
“`

# エラー

元記事を表示

OTHERカテゴリの最新記事