Cloud Translation API リクエスト数の増加をメールで通知する方法
Cloud Translation APIの料金
Cloud Translation API はGoogleが提供している機械翻訳機能のためのAPIです。
最初の 500,000 文字が無料ですが、あとは翻訳したテキスト等の量によって費用が加算されます。
急激な費用増加に備え、できればAPIのリスエスト数が増えたらアラートを出したい、という希望も出てくるでしょう。
そんな開発者に向けて、今回はCloud Translation API リクエスト数の増加をメールで通知する方法を共有します。
Cloud Monitoringでポリシーを作成
① まずはCloud MonitoringのコンソールからCREATE POLICYのボタンを押します。
② 次に指標を選択 をクリックし、以下のように選択していきます。
Consumed API > Api > Request count> 『適用』ボタンをクリック
③ フィルタを設定してCloud Translation APIのリクエスト数をカウントするようにします。
④ Transform dataに任意の数値を入力します。
※ 例)1日のリクエスト数の合計値をカウントする場合
- ローリング ウィンドウ:1day
- ローリング ウィンドウ関数: sum
⑤ 通知条件の設定
Configure alert trigger に通知する際の条件を入力します。
⑥ 通知先の設定
Configure notificationsで通知先のメールアドレスを選択し、アラートポリシー名を入力したら完了です。
Terraform Planの実行速度を上げる3つの方法
管理するリソースが増えるにつれ、terraform planコマンドの実行に
とんでもなく時間がかかる……。
そんな経験はありませんか?
この記事では、インフラエンジニアの頭を悩ませるそんなお悩みを解決し、
Terraformでの変更を高速化する3つの方法を共有します。
--parallelism オプションで 並列処理の数を増やす
Terraform公式で -parallelism というオプションが存在します。
説明は以下の通りです。
-parallelism=n - Limit the number of concurrent operation as Terraform walks the graph. Defaults to 10.
parallelismオプションを活用し、並列処理の数を増やします。(デフォルトは10)
自分のPCのスペックにもよりますが、20や30に変えると
ある程度の改善が見込めるでしょう。
terraform plan -parallelism=20
環境変数として設定することも可能です。
export TF_CLI_ARGS_plan=20
.terraformignore を使う
変更しないファイルを .terraformignore に追加すると
その分は差分検知されないので、
terraform planの実行速度が向上します。
example: .terraformignore
/dir ec2.tf
-target オプションを使う
terraform plan , terraform apply といったコマンドを実行する際は
-target オプションを使って、特定のリソースだけに対象を絞ることができます。
たとえばEC2インスタンスにだけterraform planを実行したい場合、
以下のようなリソース名を設定していれば
resource "aws_instance" "this" { ... }
このようにtargetを指定することが可能です。
terraform plan --target=aws_instance.this
いかがだったでしょうか。
ぜひ様々な手法を用いてTerraformを快適に使いましょう。
Amazon ECS Execで コンテナに接続する方法
ECS Execの登場でコンテナアプリケーションでもデバッグが容易に!
Amazon ECS、Fargateを使用している際、デバッグに苦労した経験はないでしょうか。
かつてはAWS Sesstion Manager で Fargate に SSH 接続したりと工夫が必要でしたが、ECS Execの登場でコンテナへの接続が容易になりました。
以下、接続方法を簡単に紹介します。
タスク IAM ロールに以下のポリシーを適用
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
サービスに対しECS Execの有効化
aws ecs update-service \ --cluster cluster-name \ --service service-name \ --enable-execute-command
enableExecuteCommand プロパティがtrueになっているか確認
aws ecs describe-tasks \ --cluster cluster-name \ --tasks task-id
- "enableExecuteCommand": true になっていることを確認
ECS Exec を使用してコンテナに接続
aws ecs execute-command --cluster cluster-name \ --task task-id \ --container container-name \ --interactive \ --command "/bin/sh"
簡単ですね! ECS Exec ありがたい……。
Terraform workspaceの使い方
Terraform workspaceを使う
ワークスペースの作成、切り替え
# dev という名前の workspace を作成して切り替え terraform workspace new dev # dev という名前の workspace に切り替え terraform workspace select dev
ワークスペースの一覧を表示
- terraform workspace list
$ terraform workspace list default * dev pro
環境ごとにtfvarsファイルを分ける
# devとproの2つの環境で環境編変数を分ける $ touch terraform.tfvars.dev $ touch terraform.tfvars.pro # ワークスペースdevに切り替え $ terraform workspace select dev # ワークスペースdevの変数でterraform planを実行 $ terraform plan -var-file=terraform.tfvars.dev
リソース名を環境ごとに変更
tags = { Name = "${var.project_name}-${terraform.workspace}" }
サーバーのマシンスペックを確認するコマンド【macOS, LInux】
macの場合
- system_profiler SPHardwareDataType
$ system_profiler SPHardwareDataType Hardware: Hardware Overview: Model Name: MacBook Pro Model Identifier: MacBookPro14,3 Processor Name: Intel Core i7 Processor Speed: 3.1 GHz Number of Processors: 1 Total Number of Cores: 4 L2 Cache (per Core): 256 KB L3 Cache: 8 MB Memory: 16 GB Boot ROM Version: XXXXX.XXXX.XXXXXX SMC Version (system): y.zzzz Serial Number (system): XXXXXXXXXXXXX Hardware UUID: XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX
Linuxの場合
cpuinfoを確認
- cat /proc/cpuinfo
$ cat /proc/cpuinfo processor : 0 #プロセッサの通し番号 vendor_id : GenuineIntel #プロセッサを製造したベンダー cpu family : 6 #CPUのファミリー番号 model : 63 #モデル番号 model name : Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz #プロセッサ名 stepping : 2 #CPUのステッピングを指す。一般的にはリビジョンのこと microcode : 0x36 #マイクロコード。CPUのファームウェアのこと cpu MHz : 2400.066 #プロセッサの動作周波数 cache size : 30720 KB #キャッシュサイズ physical id : 0 #物理プロセッサID siblings : 1 #物理プロセッサに相乗りしているコア数 core id : 0 #物理プロセッサ毎のコアの通し番号 cpu cores : 1 #CPU ごとのコアの数 apicid : 0 #割り込みコントローラAPICが有効か否か initial apicid : 0 #同上 fpu : yes #数値演算コプロセッサを搭載しているか否か fpu_exception : yes #FPU exceptionが有効になっているか否か cpuid level : 13 #CPUが持つ固有情報の読み出しレベル wp : yes #不明 flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt #各パラメータのフラグ bugs : #バグ bogomips : 4800.13 #ベンチマーク値 clflush size : 64 #キャッシュラインフラッシュサイズ cache_alignment : 64 #キャッシュアライメント address sizes : 46 bits physical, 48 bits virtual #アドレス空間がどのくらいあるか power management: #
meminfoを確認
cat /proc/meminfo MemTotal: 1019116 kB #メモリの総容量 MemFree: 292892 kB #メモリの空き容量 MemAvailable: 647568 kB #露葉可能なメモリ Buffers: 139632 kB #ファイルバッファに使用するメモリ量 Cached: 330024 kB #キャッシュメモリとして使用されるメモリの量 SwapCached: 0 kB #キャッシュメモリとして使用されるスワップ量 Active: 475080 kB #使用中バッファメモリあるいはページキャッシュメモリの容量 Inactive: 94488 kB #利用可能なバッファメモリあるいはページキャッシュメモリの容量 Active(anon): 103148 kB Inactive(anon): 23656 kB Active(file): 371932 kB Inactive(file): 70832 kB Unevictable: 53000 kB Mlocked: 53000 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 72 kB Writeback: 0 kB AnonPages: 151868 kB Mapped: 81944 kB Shmem: 23688 kB Slab: 83080 kB SReclaimable: 49072 kB SUnreclaim: 34008 kB KernelStack: 3312 kB PageTables: 4160 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 509556 kB Committed_AS: 945396 kB VmallocTotal: 34359738367 kB VmallocUsed: 0 kB VmallocChunk: 0 kB AnonHugePages: 8192 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 12288 kB DirectMap2M: 1036288 kB
誰でも簡単!composerの使い方
composerとは
- パッケージ・ライブラリの依存関係を管理するツール
使い方
初期化
- composer init
- 対話式でcomposer.jsonが作成される
パッケージをインストールする時
- composer install
パッケージを追加する時
- composer require ${PACKAGE_NAME}:${VERSION}
- 追加したパッケージがcomposer.json、composer.lockに自動で追記される。
新しいバージョンのパッケージが欲しい時
- composer update
パッケージを削除する時
- composer remove
パッケージを検索する時
- composer search ${PACKAGE_NAME}