- 1. S3オブジェクトを動的抽出してLambda並列処理するStep Functions Distributed Mapを実装してみた
- 2. Datadogで無駄にAWS CloudWatchのコストが掛かってるかも?
- 3. 指定した複数リージョンのセキュリティグループの一覧をワンライナーで作る
- 4. 技術Memo 2023/01/22
- 5. Python で Amazon S3 の MultiPartUpload を扱う
- 6. Terraform + AWS 〜ECSを無停止で切り替えるPublic ↔︎ Private〜
- 7. AWS Budgets 自動調整予算を CloudFormation で設定する
- 8. s3にアップロードしたファイルをaws cliを用いて更新する方法
- 9. aws cliによるS3操作
- 10. AutoScalingで監視から外れたEC2を監視し続けたいインフラエンジニアの奮闘記#1
- 11. Sparkのファイルとパーティションの関係について確認してみた
- 12. AppFlow パーティションと集約の設定について
- 13. 【Python】AWS SAMでLambdaの外部モジュールのバージョンを固定する
- 14. ECS Execを使ってコンテナにアクセスする手順
- 15. Falco Ruleを紹介するシリーズ – Delete Bucket Encryption
- 16. AWS Budgets コスト予算の設定方法
- 17. いまさらAI学んでみた(第5回)
- 18. 入門 AWS CloudFormation #3(EC2とパラメータ編)
- 19. AWS CLIでバケットのファイルをローカルにダウンロードする
- 20. Amazon Chime のユーザー管理で Active Directory 連携をしてみた
S3オブジェクトを動的抽出してLambda並列処理するStep Functions Distributed Mapを実装してみた
こんにちは。ユビキタス言語1年生の人です。
先日、S3バケットの特定prefixを持つ(同じフォルダ配下にある)オブジェクトをそれぞれLambdaで処理したい・・・と有識者の人に相談したら、テンション高めで「Step Functions Distributed Mapが適しています!」とおススメされたので早速使ってみました。
使ってから知ったのですが、AWSのグローバルイベントre:Invent 2022で発表されたばかりのアップデート機能でした。それまで、Step Functionsを使ったことも触ったこともなかったのですが、ものすごく便利だったのでご紹介します。
## Step Functionsの初心者が知ったこと
Step FunctionsはWorkflow StudioというGUIの視覚的にドラッグ&ドロップで作れるワークフローのモードと、jsonで定義されたAmazon States Language (ASL) というコードでワークフローを作るモードがあります。最初にフロー全体の骨組みを作るときはWorkflow Studioが作りやすいですが、ちょこっと更
Datadogで無駄にAWS CloudWatchのコストが掛かってるかも?
レバレジーズ株式会社 SREチームリーダーの竹下です。
弊社では、監視周りにDatadogを使用しているのですが、最近なぜかAWS CloudWatchの使用料金が月$100ほど増えていたので調査したところDatadogが原因だったので、調査方法と対処方法を記載しておきたいと思います。
# 現象、調査方法
弊社ではある日から突然、下のスクリーンショットのように、全く使っていないregionのCloudWatchの料金が発生し、月当たり$100ほど使用料が増加していました。
![スクリーンショット 2023-01-18 17.30.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2708474/0fd6867e-609a-c2d8-901a-77f4b3030843.png)
※CloudWatchのリージョン別の使用料金です。横軸は日付です。上図の取得方法はAWS Consoleの[Cost Explorer](https://us-east-1.console.aws.amazon
指定した複数リージョンのセキュリティグループの一覧をワンライナーで作る
# はじめに
セキュリティグループルールの一覧は管理コンソールからのCSV出力が可能ですが、複数リージョンの出力を一度に行いたかったのでAWS CLIで一覧を作成することにしました。
作成した一覧はタブ区切りになっているのでスプレッドシートなどにコピーしてご活用ください。https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-security-groups.html
https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-security-group-rules.html
## コマンド
– 取得したいリージョンが複数あればスペース区切りでリージョン名を追加してください
“`bash
echo -e “OwnerId\
\tRegionName\
\tVpcId\
\tGroupId\
\tGroupName\
\tDescription\
\tSecurityGr
技術Memo 2023/01/22
早速停滞していますが、今年からは気になった情報について毎週Memoを残していこうと思いたって作成し始めた記事です。
—
# Cloud
## AWS
### Database* **[Introducing Amazon Neptune Serverless](https://aws.amazon.com/jp/blogs/aws/introducing-amazon-neptune-serverless-a-fully-managed-graph-database-that-adjusts-capacity-for-your-workloads/)**
サーバレスのグラフDB爆誕! グラフDB、以前に調査して結局使っていないのできちんと調べたいですね。* **[Amazon ElastiCache が Redis 7 のサポートを追加](https://aws.amazon.com/jp/about-aws/whats-new/2022/11/amazon-elasticache-redis-7/)**
Redis Functionsがサポートされ、LUAスクリプト
Python で Amazon S3 の MultiPartUpload を扱う
Amazon S3 に巨大ファイルを置きたいときに MultiPartUpload を使いたくなることが多々あるが、Python + boto3 からそのまま扱おうとするとややこしいので自分が使いやすいようなクラスを実装した。
## 実装
“` python
class AmazonS3MultipartUploader:
“””Amazon S3 に巨大なオブジェクトに少しずつ書き込んでいくためのクラス”””def __init__(self, s3, *, part_size_threshold: int = 5 * 1024 * 1024, **kwargs):
self.s3 = s3
self.mpu = self.s3.create_multipart_upload(**kwargs)
self.kwargs = {
“Bucket”: self.mpu[“Bucket”],
“Key”: self.mpu[“Key”],
“Upl
Terraform + AWS 〜ECSを無停止で切り替えるPublic ↔︎ Private〜
# 記事を書こうと思ったきっかけ
筆者は現在、fjord bootcamp(以下FBC)にて[テイスティングノート](https://github.com/yuma-matsui/tasting_note)という自作サービスの開発をしているのですが、
インフラの構築にTerraformを使用しており、ECSを停止せずにサブネットを切り替えるという貴重な経験をしたので備忘も兼ねて記事にまとめようと思ったのがきっかけです。Terraformを使用することで効率的且つサービスをStopせずに切り替得られることに大きな魅力とインフラの楽しさを感じました。
拙い説明もありますがお付き合い願います。
※ Terraform、AWSの基礎に関する記事ではありませんのでご注意ください。
# 対象読者
– TerraformでECSを管理している方
– ECSを停めずにお引越し(サブネットの切り替え)したいと思っている方# 筆者が引っ越しに迫られた理由
FBCでは嬉しいことにメンター(現役エンジニア)の方々に自作サービスのコードレビューをしていただけます。
TerraformでECSを初
AWS Budgets 自動調整予算を CloudFormation で設定する
# はじめに
昨年まで AWS Budgets の自動調整予算は CloudFormation で未対応と記載がされていたのでテンプレートで作成したあとにCLIで一括更新するという非常に手間なことをやっていたのですが、いつの間にか設定できるようになっていたので複数アカウントへ一括で適用するためのテンプレートを作りました。
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-budgets-budget-autoadjustdata.html
## 前提
マルチアカウント構成の AWS Budgets の設定を CloudFormation StackSets を利用して構築します。
## 事前準備
– Chatbot と Slack との連携済みであること
– Slack 通知先のチャネルが作成済みであること
– 予算(予測)通知用チャネル
– 予算(実績)通知用チャネル
– 構築は us-east-1 で行う(変更可)
– 適用するアカウントのエイリアス
s3にアップロードしたファイルをaws cliを用いて更新する方法
はじめに
—
自分が作成したポートフォリオでは、cloudfrontとs3を使用してフロントエンドのファイルを表示しています。
デプロイ後にフロントエンドのファイルを修正したいという場面があり、方法を調べたので備忘録として残そうと思います。##### ※下記が作成したポートフォリオなのでよかったら覗いてみてください!
https://qiita.com/shuhei_m/items/292699e76dbd206a2462
修正方法
—
今回は、aws cliを用いてターミナルからコマンドを叩くことでs3のファイルを更新します。ローカルで修正した内容をs3上へ同期させたい場合には、下記の`sync`コマンドを使用します。
そうすることでローカルで追加・修正したファイルをs3へ同期することができます。
~~~
//構文
aws s3 sync// 例
aws s3 sync {フォルダパス} s3://{バケット名}/{パス}// IAMユーザーを指定する場合
aws s3 sync {フォルダパス}
aws cliによるS3操作
大抵はググればでてくる内容だが、シェル芸を足してもっと見やすくする。
S3でファイルを見る場面があったが、ファイル数が毎秒増えていく用途のバケットだったので、GUIで見ることが困難だった。そのためコマンドで対応するほかなかった。そういうときのナレッジ。# S3バケットをlsする
“`Shell
aws s3 ls s3://BUCKETNAME/DIRNAME/ –human-readable
“`
BUCKETNAMEにはバケット名を、DIRNAMEにはディレクトリ名を置き換えて入力。–human-readableをつけることで、サイズ等を見やすくしてくれる。つけないとバイト表記。S3バケットの指定は、一番後ろにスラッシュをつけないといけないので、注意。
また、東京リージョンであってもタイムスタンプがUTCのため、時間が9時間マイナスされていても焦らないこと。# S3バケットをlsして、最新ファイルだけ抽出する
“`
aws s3 ls s3://BUCKETNAME/DIRNAME/ –human-readable | sort -nr | head -n 10
AutoScalingで監視から外れたEC2を監視し続けたいインフラエンジニアの奮闘記#1
# 0.はじめに
ついこの前からAWSの運用監視をするようになり、ふと気になった掲題の問題について
せっかくなので色々なアプローチで解決してみたいなと思いました。
同じく運用をされている方からのフィードバックを心待ちにしております!# 1.検証環境の構成と想定
・構築済みの環境(監視対象環境)をクロスアカウント機能を使い、モニタリング環境で
監視することを想定する
・構築済みのリソースの設定は極力変更しないものとする
・AutoScalingによるEC2のスケールイン・スケールアウトによるインスタンスの入れ替わりは
Cloudwatch・EventBridge・Lambda・SNS等を使って検知してみる
・ざっくりな構成図は以下の通り
|![cloudwatch-autoscaling-monitor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2987950/91f5b927-2f4d-41c7-6b07-99c42da4b66b.png)|
|:–|# 2.実際にやってみる(監視対象
Sparkのファイルとパーティションの関係について確認してみた
# 背景・目的
Sparkでファイルを読み込んだ直後に、RDDで展開されるパーティション数について気になったので整理してみました。# まとめ
– Sparkでファイルを読み込んだ直後のパーティション数は、ファイル数とファイルフォーマット、ファイルサイズとSparkパラメータの組み合わせで決まります。
– ファイル数
– 基本的に1ファイル
– 分割可能なファイルフォーマットである。下記のようなフォーマットが対象
– JSON
– Parquet
– ORC
– ファイルサイズ > パラメータは、「spark.sql.files.maxPartitionBytes」のときに、ファイル分割されます。
– 以下のような検証を行い、想定通りの結果になりました。
| シナリオ | ファイル数 | ファイルフォーマット | ファイルサイズ|Sparkパラメータ
`spark.sql.files.maxPartitionBytes` | **結果
(パーティション数)**|
|:-
AppFlow パーティションと集約の設定について
# 概要
– AppFlowのパーティションと集約の設定についてまとめる。
# 情報
– 今回説明で使用するAppFlowの送信先はS3として任意のバケットとフォルダを選択済み。
– 出力はCSVとしてマッピングも設定済み。# 前提
– 説明の都合上AppFlowの送信先S3バケット名は「Fooバケット」とし、フロー名は「foo-test」とする。
# ご注意
– 日時系情報はUTCで変更できないので注意する
# パーティションの設定と集約の設定
– パーティションの設定は下記の三種類である。
– 日時
– 実行ID
– 送信先フィールド
– 集約の設定は下記の三種類である。
– 集約しない
– 全てのレコードを各パーティションの1ファイルに集約する
– レコードを各パーティションの複数ファイルに集約する
– 上記の設定の組み合わせによって出力されるCSVの位置やファイル名が異なる。# パーティション「実行ID」 集約「集約しない」の場合
– この場合、出力先のフォルダ直下にフロー名のフォルダーを作成し、実行ID
【Python】AWS SAMでLambdaの外部モジュールのバージョンを固定する
# はじめに
外部モジュールを使用するLambdaではモジュールをアップロードする必要があります。
AWS SAMを使うと簡単にソースコードとモジュールを一緒にアップロードする事が可能です。
AWS SAMである関数に久しぶりにdeployを行った時に、モジュールのバージョンを固定する必要がありました。# やらかし先生
RDSに接続するPythonのLambdaで `pymsql`を使用しています。
RDS接続には関与しない変更を行いデプロイしたところ、RDSへの接続がエラーになりました:scream:原因としては`pymysql`のバージョンが0.9系から1.0系に変更されていたため、同じ構文では接続が出来なくなっていました。
そのため`pymysql`のバージョンを0.9系に固定する回避策を行いました。# モジュールのバージョン固定方法
## 結論
**requirements.txt** でバージョンを明記します“`
例 pymysqlを0.9.3のバージョンを指定したい時
pymysql == 0.9.3
“`## 記述方法について
上記の指定方法はAW
ECS Execを使ってコンテナにアクセスする手順
## 前準備
#### 1. session-manager-puginのインストール
[(オプション) AWS CLI 用の Session Manager プラグインをインストールする](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html)
#### 2. タスクのIAMロールにSSMエージェント実行用ポリシーをアタッチ
“`json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“ssmmessages:CreateControlChannel”,
“ssmmessages:CreateDataChannel”,
“s
Falco Ruleを紹介するシリーズ – Delete Bucket Encryption
本シリーズでは、ランタイム脅威検知のデファクトスタンダードであるFalcoの検知Ruleを、1つの記事で1つ簡単に紹介していきます。
ランタイムセキュリティやFalco自体の概要を知りたい方はこちらのブログ記事をご参照ください。
今回ご紹介する検知Ruleは「Delete Bucket Encryption」です。
# Rule記述
“`
– rule: Delete Bucket Encryption
desc: Detect deleting configuration to use encryption for bucket storage.
condition:
ct.name=”DeleteBucketEncryption” and not ct.error exists
output:
A encr
AWS Budgets コスト予算の設定方法
# 概要
AWSの不正利用により、多額の請求がされました。今後は、この様な事がない様に、、AWS Budgetsを 使ったコスト予算の設定を行ったので、備忘録も兼ねて設定の仕方を説明します。:::note alert
2023/01/24時点での設定方法
:::# 設定方法
1. ヘッダーにある検索バーから `AWS Budgets`と検索して、AWS Budgetsの画面を開く2. 画面内に予算の作成がある為、そのボタンを押下する
![スクリーンショット 2023-01-24 9.57.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/664659/c7cff7a4-31b4-33b8-9538-628fd43987d7.png)3. 予算の設定を選択する。AWSの利用料金が設定金額より超えない事を通知するのみであれば、テンプレートの使用が無難だと思われます。
(今回はテンプレートで設定します。)![スクリーンショット 202
いまさらAI学んでみた(第5回)
# はじめに
こんにちは、株式会社ジールの[@Suguru-Terouchi](https://qiita.com/Suguru-Terouchi)です。さて、[前回](https://qiita.com/Suguru-Terouchi/items/06c8d5dda3a6de4fd33c)お正月明けで少しお茶を濁す形にしてしまいましたが、
今回からいよいよ実践に入っていきたいと思います。これまで基礎的な知識要素について書いてきましたが、人によってはここから難易度が上がってきます。
どれくらい上がるかというとサルからチンパンジーくらいになりそうです。
さっきまで頭にバナナ乗っけて喜んでたヤツが道具を使いだすレベルです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1963640/acd32505-0e0e-bd63-f483-7c06e58e0576.png)はい、冗談はさておき本題に入っていきます、実践編の第一弾としてなにやるか色々迷いましたが、
SageMakerのチ
入門 AWS CloudFormation #3(EC2とパラメータ編)
インフラやクラウドの専門というわけではないのですがそろそろIaC周りもちゃんと勉強しておきたい・・・という感じなのでAWSのCloudFormationについて入門しつつ復習として記事にまとめておきます。
※とりあえず最初ということでEC2を絡めたごく基本的なところの記事を書いていきます。将来もしかしたら3記事目以降を執筆して追加のEC2関係や他の様々なサービスや機能などにも触れていくかもしれません。
# 注意事項と前記事までの振り返り
本記事の処理を動かすとEC2関係などで色々と追加になったり起動したりします。その辺はリソースの停止や削除などをしないとお金がかかったりしてくる可能性があるためご注意ください。
また、本記事は3記事目となります。前回までの内容を踏襲していく形となっているのでご注意ください。
1記事目:
https://qiita.com/simonritchie/items/330391e741f394897550
2記事目:
https://qiita.com/simonritchie/items/a1922199a5b6d131dca9
前回までに
AWS CLIでバケットのファイルをローカルにダウンロードする
## はじめに
意外と忘れるAWSバケットの中身をローカルに保存するコマンド。
備忘録として残しておく。## 方法
下記のコマンドを入力すると指定したバケットの中身をすべてローカルに一括でダウンロードすることができる。
フォルダ構造もそのまま再現してくれる。AWSCLIのダウンロードをしていない方はする必要があります。([参考](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html))
“`
aws s3 cp s3://コピー元バケット名 パソコンのコピー先フォルダ –recursive
“`## 参考文献
https://blackbird-blog.com/aws-s3-cli-download
Amazon Chime のユーザー管理で Active Directory 連携をしてみた
# はじめに
Amazon Chime というコラボレーションのためのサービスが AWS で提供されています。リモート会議、画面共有、チャットなど、遠隔でお仕事をするための機能が提供されています。
https://aws.amazon.com/jp/chime/
Amazon Chime では、ユーザー管理をローカル管理 or Active Directory 管理 or Okta 管理の 3 種類から選択可能です。今回は、Active Directory のユーザーを使って、Amazon Chime にログインする方法を紹介します。
より詳細が気になる方は、次の AWS Document も参照してみてください。
Active Directory 管理
https://docs.aws.amazon.com/ja_jp/chime/latest/ag/active_directory.htmlOkta 管理
https://docs.aws.amazon.com/ja_jp/chime/latest/ag/okta_sso.html# AD on EC2 を作