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

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

【Stepfunctions】yamlで記述する ~Map編~

Stepfunctionsのワークフローを記述するとき
「あれ、InputPathとItemsPathって何を書くんだっけ?」
と、Mapでよくある部分をyamlで書いてみる。

# 値をそのまま使う場合
Map内のInputを単純に使う方法。
下記が“`FirstState“`で整数を格納した配列を生成して、その各値をMap内で処理するもの。

#### yaml

“`yaml
StartAt: FirstState
States:
FirstState:
Type: Task
Resource: arn:aws:lambda:REGION:ACCOUNT_ID:function:FUNCTION_NAME_1
InputPath: $.input
ResultPath: $.parallel_input
OutputPath: $
Next: ParallelProcess
ParallelProcess:
Type: Map
InputPath: $
ItemsPath: $.parallel_input
ResultPath: $

元記事を表示

AWS Lambdaに固定IPを付与する時の考慮事項(NAT Gatewayは0.062ドル/時、月約45ドル)

AWSの請求書を見たら想定外に高かったので調べたらNAT Gatewayでした。
t4g.xlarge(vCPU:4、メモリ:16GB)を借りられる(3年予約)料金じゃないか・・・。

[![Image from Gyazo](https://i.gyazo.com/79c797e8431503a4fbc82fd6a53ca65d.png)](https://gyazo.com/79c797e8431503a4fbc82fd6a53ca65d)

これは、ある外部システムとの連携機能をAWS Lambdaで実装したのですが、IP制限に対応するために固定IPを持たせる必要があったため。

不覚にも発生する料金はElastic IPだけだと思いこんでました。涙
反省。

元記事を表示

AWS Glue Studio に追加になったTransformを試してみた

# 背景・目的
[AWS Glue Studio Visual ETL now supports 5 new transforms](https://aws.amazon.com/jp/about-aws/whats-new/2023/01/aws-glue-studio-visual-etl-5-new-transforms/)のとおり、Glue Visual Studioで5つのTransformが追加になったので試してみます。

# まとめ
– Glue Studioに5つのTransformが追加されました。
– Identifier
– UUID
– flatten
– Format timestamp
– To timestamp

# 概要
今回追加になったのは、下記のTransformです。いずれも新しいカラムを追加できる機能のようです。
– Identifier
– データセットの各行に数値識別子を割り当てる。
– UUID
– UUID (Universally Unique Identified) 列を追加す

元記事を表示

【資格合格】AWS ソリューションアーキテクト(SAA-C03)の振り返り

AWSソリューションアーキテクト(SAA-C03)に合格したので、学習方法の振り返りや受験の所感などを共有します。
また、AWS認定の有効期限は3年のため、次回受験時の備忘録としても残しておきたいと思います。
# 学習開始時点のスペック
– エンジニア歴2年半
– 普段はVue.jsやlaravelでのwebアプリケーション開発がメイン
– 実務でのAWS経験はなし
– 個人の学習で3ヶ月程度AWSに触れたことがある程度
# 受験背景
個人で作ったアプリのデプロイにAWSを使ったのですが全くうまくいかなかったことがきっかけです。

qiitaの記事やブログ記事などを参考に色々と試してみましたが、前提知識が乏しすぎたため、何が問題がかもわからず多くの時間を使ってしまいました。結果的にデプロイはできたのですが、思っていたものとは違いあまり達成感が得られなかったです。
もっときちんと理解したい、実務でも使えるようになりたいと思ったので、AWSについて体系的に学び、どうせならということで資格取得を目指しました。

勉強してからですが、思い返すとAWSが提唱するベストプラクティスを無視した大変お

元記事を表示

【メモ】AWS SAA-C03におけるメモ

# 初めに
SAAの勉強中なのですが、単にとある問題集の復習として
備忘録やメモを取るための記事になります。

何か間違えなどあれば教えていただけると幸いです。
# メモ一覧
### ■Transfer Accelerationとは?
クライアントとS3バケットの間で長距離に渡るファイルの転送を
高速で簡単に、その上安全に行えることが可能!

### ■マルチパートアップロードとは?
大容量のオブジェクトをいくつかに分けてアップロード可能
既存オブジェクトのコピーを作成できる

### ■マルチAZについての注意点
セカンダリーDBは別AZは可能だが、別リージョンは不可能
またリードレプリカは別AZやリージョンに生成可能

リードレプリカを利用したフェイルオーバー構成は
RDSではないが、Auroraであれば可能

### ■マウントターゲット
VPC内のEFSにアクセスするには、マウントターゲットが必要。
・AZごとに1つのマウントターゲットを作成できる
・VPCのAZに複数のサブネットがある場合、それらのサブネットの1つのみに
 マウントターゲットを作成できる。
・AZ内のE

元記事を表示

Terragruntってのがあるらしい

# この記事について
記載しているのはすべてTerragruntの公式にある内容です。(役に立つか知りませんが、githubで[sandbox](https://github.com/naruse666/terragrunt-sandbox)を作りました。)
どう使うかではなく、***どのように使えるのか***に焦点を当てています。

# Terragruntって何?
## 概要
[Terragrunt](https://terragrunt.gruntwork.io/)とは、[Terraform](https://www.terraform.io/)のラッパーツールで公式にも出てきますが`DRY(Don’t Repeat Yourself)`を謳っています。
要するにterraformのめんどくさいことをこいつにやらせよう!

`terragrunt.hcl`というファイルを扱います。terraformを触ったことある人なら大丈夫です。
terraformとのバージョン対応表なんかも公開されています。
[Supported Terraform Versions](https://te

元記事を表示

Redshift Automated materialized viewsを試してみた

# 背景・目的
Redshift のRedshift Automated materializedを試してみたので整理します。

# まとめ
– Redshiftにも、RDBMSにあるようなMaterialized Viewがあります。
– リフレッシュの選択肢として、手動やスケジューラでコマンドによるリフレッシュもありますが、自動リフレッシュも利用できます。
– 自動リフレッシュを使用した場合に。おおよそ10秒程度でリフレッシュされました。
– 制限事項としては、Redshiftのリソース(ストレージ容量)が不足すると停止されたり、ビューが削除されたりするようです。

# 概要
## Automated materialized views
– Redshift の自動マテリアライズドビュー (AutoMV) 機能では、ユーザーが作成したマテリアライズドビューと同様のパフォーマンス上のメリットが提供される。
– Amazon Redshift は、機械学習を使用してワークロードの継続的なモニタリングを行い、その上で、メリットが認められる場合には、新しいマテリアライズドビューを作成す

元記事を表示

EC2に固定のパブリックIPアドレスを割り当てる

## 概要
もともと認知していたcloud9のIPが変動し接続できないということがありました。
このような問題に対処するために、ec2にElastic IPアドレスを割り当ててあげます。
cloud9の起動しているec2インスタンスにElastic IPを付与することで、cloud9のパブリックIPを固定することができます。

## 目次
1. なんでElastic IPを付与するのか
1. 手順

## 1.なんでElastic IPを付与するのか
停止したインスタンスを再起動した場合、新しいIPアドレスが割り当てられる可能性があります。意図せずにIP アドレスが変動すると、利用者にとっては参照できないなどの不利益を被ります。
これの対策として、Elastic IPアドレスをインスタンスに割り当てます。Elastic IPは、単一のIPアドレスを継続してインスタンスに関連付けすることが可能です。これによって、Elastic IPの関連付けられたインスタンスを停止/再起動した場合でも、IPアドレスの意図しない新しい割り当てを抑制することができます。

> Elastic IPについて

元記事を表示

Route53のフェイルオーバールーティングでSorryページを実装する

# この記事について

Route53にはフェイルオーバールーティングというルーティングポリシーがあります。
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/routing-policy-failover.html

これを使えば、WEBサイトの障害時にSorryページとしてS3静的サイトにルーティングするということが可能です。

この記事では、WEBサイト障害時にSorryページに切り替えるフェイルオーバールーティングの実装手順について記載します。

## この記事に書くこと

フェイルオーバールーティングの設定方法のみです。
ALBやCloudfront+S3などの構築/設定方法については記載しません。

# 構成

フェイルオーバールーティングを実装する前は以下のような構成です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435280/1c1dc5fe-297d-6bae-2d1c-de9eb56

元記事を表示

Terraform + AWS EC2 / S3 – terraform init / apply のエラー例

# main.tf のコード例

“`tf
terraform {
# AWSプロバイダーのバージョン指定
required_providers {
aws = {
source = “hashicorp/aws”
version = “~> 4.51.0”
}
}
# tfstateファイルをS3に配置する(配置先のS3は事前に作成済み)
backend s3 {
bucket = “terraform-yumainaura” # S3バケット名
region = “ap-northeast-1”
key = “tf-test.tfstate”
}
}

# AWSプロバイダーの定義
provider aws {
region = “ap-northeast-1”
}

# EC2の作成
resource aws_instance ec2 {
ami = “ami-

元記事を表示

PLCが出力した接点データを Amazon DynamoDB に格納する

# システム構成
今回、SmartFitPRO Basicを利用して、IDEC製PLC(FT1A-H24RA)の接点出力データをAmazon DynamoDBに格納することを目指します。
構成は下図のようにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2975892/050c2f94-c83d-d114-c705-e589ce18ef11.png)

AWS、SORACOMプラットフォームの各設定方法は下記HPを参考にさせて頂きました。

[AWS Lambda を実行し Slack へ通知する](https://users.soracom.io/ja-jp/docs/funk/aws-lambda/)

# 準備するもの

#### ハードウェア
|品名 |数量 |備考 |
|—-|—–|—–|
|PLCユニット |1 |今回はIDEC製PLC(FT1A-H24RA)を使用します。 |
|IoTゲートウェイSmartFitPRO Basicスターターキット

元記事を表示

AWS Glueのpython shellで自作スクリプトを読み込む

AWS GlueでPython ShellでETLの仕組みを2つほど作っていて共通化できるmethodを外部から読み込めないかと思い調べてみた。

##### ライブラリを egg ファイルまたは whl ファイルとしてパッケージ化して設置する
作成したライブラリをeggファイル or whlファイルとしてパッケージ化して読み込ませる。このパッケージ化したファイルをglueの管理画面にある「python library path」として指定する。

libフォルダーを作成してその中にsetup.pyファイルを作成する

`
現時点(2023年2月2日段階)でpython3.9で.eggファイルを使用するとモジュールが読み込めないエラーが発生するので
.whlを作成する。 .eggはpython3.6で稼働できることを確認
`

“`setup.py
from setuptools import setup

setup(
name=”hello_module”,
version=”0.1″,
packages=[‘hello_module’]
)
“`

元記事を表示

AWSでDatabricksをデプロイするためのクラウドエンジニア向けベストプラクティスとガイダンス:パート2

[Best Practices and Guidance for Cloud Engineers to Deploy Databricks on AWS: Part 2 \- The Databricks Blog](https://www.databricks.com/blog/2023/01/27/best-practices-and-guidance-cloud-engineers-deploy-databricks-aws-part-2.html)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

# AWSにおける標準的なDatabricksデプロイメントにおける会話

これはAWSでDatabricksをデプロイするクラウドエンジニア向けのベストプラクティスとガイダンスを説明する3パートのシリーズのパート2です。シリーズのパート1は[こちら](https://qiita.com/taka_yayoi/items/c3205253a0ab456f044b)から参照できます。

元記事を表示

Amazon RedshiftでのRBACについて②

# はじめに
株式会社ジール所属の@hiroaki_yoshidaです。
普段はAWSやPythonを使った開発を行っています。
開発に携わるにあたり、現場で学んだ事をアウトプットしていこうと思います。

今回の記事は前回に引き続きAmazon Redshift(以下 Redshift)の権限管理についてです。
[前回の記事はここから](https://qiita.com/hiroaki_yoshida/private/d53393fa993404137cb7)
ここでは前回の記事でご説明した、RBACの動きを実際にRedshiftで検証してみたので、その内容を共有します。

***

# RedshiftのRBAC実装についてのアナウンス
AWSの公式ページからは以下の様に発表されています。

引用元:https://a

元記事を表示

Amazon RedshiftでのRBACについて①

# はじめに
株式会社ジール所属の@hiroaki_yoshidaです。
普段はAWSやPythonを使った開発を行っています。
開発に携わるにあたり、現場で学んだ事をアウトプットしていこうと思います。

今回の記事はAmazon Redshift(以下 Redshift)の権限管理についてです。
わたしは元々SnowFlakeでの権限管理は経験があるのですが、SnowFlakeにはロールという概念があり、今回紹介するRBACとはそのロールと同様な事ができるようになったという紹介になります。

[検証記事はこちらから](https://qiita.com/hiroaki_yoshida/items/bb1c294b6a57dee9e72f)

***
# RedshiftのRBAC実装についてのアナウンス
AWSの公式ページからは以下の様に発表されています。

AWSに1日で4000円課金しちゃった話

AWS RDSで何も考えずにDBを起動したら1日で4000円課金しちゃいました。
その忘備録です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955109/dad17e89-d486-96cb-22c6-51017a860a86.png)
#### ・敗因
何も考えずに本番環境用テンプレートでDBを起動した。

#### ・良かった点
寝る前に使い終わったサービスを全て削除していたため軽症ですみました。(偉い!!)
次の日に予算(15$)をオーバーした警告メールが来て4000円課金に気づきました。

#### ・金額の内訳を見てみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955109/97e520e6-f949-fbc2-3695-da3adf38ff85.png)

USD 16.01:$ 1.253 per RDS db.r6g.2xlarge Single-AZ i

元記事を表示

AWSでLINEのレストラン予約デモをデプロイした

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117889/b235e5a8-4277-d3fb-1ba0-294315da16e5.png)

たまたまLINE予約システムを見つけたので、試しにデモをデプロイしてみました。
予約システムに関しては、以下のサイトに説明があります。

https://lineapiusecase.com/ja/usecase/reservation.html

サンプルは、以下のGitHubにあります。
AWS環境を前提としたサンプルで、AWS SAMでデプロイできます。

https://github.com/line/line-api-use-case-reservation-Restaurant

# 目次

– [LINEチャネルの作成](#lineチャネルの作成)
– [バックエンドの構築](#バックエンドの構築)
– [フロントエンド環境構築](#フロントエンド環境構築)
– [テストデータ投入](#テストデータ投入)
– [動作確認](#

元記事を表示

AWS Lambda + Python で並列処理

AWS Lambda で Python の multiprocessing を扱おうとしたら少しハマったのでメモしておく。

:::note warn
この記事内のコードはすべて AWS Lambda の Python 3.9 ランタイムで実行する想定で書かれています。
:::

## 例題
例えば、以下のような Lambda 関数があるとする。

“` python:main.py
from time import sleep

def square(n: int) -> int:
“””1秒かけて入力値の2乗を返す関数”””
sleep(1)
return n ** 2

def handler(event, context):
return [square(i) for i in range(5)]
“`

この関数の実行には5秒かかってしまうため、 `square` 関数を並列処理して実行時間を短縮したい。

## asyncio 版
まずはシンプルにイベントループで非同期処理できないか考える。

Python の非同期処理と言えば `a

元記事を表示

AWS sam pipelineを使うとLambdaをデプロイするCI/CDパイプラインをどうやって作ればいいか分かりそうになる

## 背景
Lambdaをgit管理して単体テストに通ったらデプロイってどうやるんだろうみたいなことができる。

## 概要
AWS SAMには`sam pipeline`というコマンドがあり、これを使うことでパイプラインを自動で作ってくれる。
出来上がるステージとしては
CodeCommit
-> CloudFormation (パイプライン自体の設定デプロイっぽい)
-> CodeBuild テスト (オプション)
-> CodeBuild デプロイ(sam deploy)

`sam pipeline`ではmainブランチに対してはデプロイ環境が二つできてしまう(上記の`sam deploy`を行うステージが2回ある)が、作るべきパイプラインの参考にはなる。
featureブランチに対しては上記のように`sam deploy`は1回のみ

## 手順参考
公式でしっかり説明してくれているのが以下くらいしか見当たらないが、これを参考にすればなんとかできる。
[コンテナ Lambda の CI/CD パイプラインを SAM Pipeline で作ろう !](https://aw

元記事を表示

AWS Amplifyホスティングのセキュリティに関するissueを確認したら残念だった

前回の投稿では、Amplifyホスティングのセキュリティに関して評価しました。
その結果わかった課題は以下の通りです。
セキュリティヘッダについては、Amplifyホスティングの機能でも実装できるため、
それ以外について、GitHubのissueを確認してみました。

– セキュリティヘッダが不十分
– [DV証明書のみであり、OV/EV証明書の導入ができない](#dv証明書のみでありovev証明書の導入ができない)
– [暗号強度が低い](#暗号強度が低い)
– [IPアドレス制限ができない](#ipアドレス制限ができない)
– [WAFの設定ができない](#wafの設定ができない)

https://qiita.com/dorcus-rectus/items/617839d8fe65f6db215b

# DV証明書のみであり、OV/EV証明書の導入ができない

こちらのissueは以下の内容となります。
以前から要望が上がっているようですが、現在もopenのステータスになっています。
内容はかなりネガティブな印象です。2023年も厳しそうなコメントです。

https://git

元記事を表示

OTHERカテゴリの最新記事