Organizations

amazonconnect amazonpolly appflow aws books camp childcare client vpn cloudfront cloudwatch codebuild daily datadog docker ec2 ecs eventbridge fargate gas homeserver iot jamf lambda life hack linux mac movie music php program python rds ruby running s3 tech terraform vpc windows wordpress 10km 2016 2018 2ブロック alfred amazonconnect amazones amazonpolly ansible apache api atcoder aws aws認定資格 backlog balmuda band bind boss box brew cakephp centos centos6 chef-solo ci circleci circlecijp cloud cloud sql cloud storage command crkbd cron css database diet digdag disney dlna dns docker docker-compose dockerfile dockertokyo ecr ecs edy eks elasticcloud elasticsearch em embulk ena evernote ezmlm fabric fargate fluentd font found fuzz galeracluster garageband gce gcp geek gem git github goo google google map googlemap gr-citrus gsuite happynewyear hatenatech helix homebrew html ikea infrataster iphone itamae iterm jamf k8s kinesis kintone knife-solo knowledge kpt kubernetes l2tp lancers lenovo let'ssplit linux live lolipop mac macos macアドレス mail mariadb mediatomb memory mfa midi mint60 ml mta mysql namazu nas nginx notion onedrive openssl peco pepabo perl php pixar pmf post python qiita qmail raspberrypi raycast redmine roland route53 rsync ruby ruby on rails salesforce sendgrid_jp sfdc sha2 shakeshack slack so-01j sony split sql sre srelounge srenext ssd ssh ssml stationery team terastation terminal terraform typescript ubuntu22.04 unix vagrant virtualbox visualstudiocode vm vpc vpn vpngate vscode vuls windows windows10 windows8 windowsserver2012 wordpress xperia xtechjaws xtechjaws07 zsh おサイフケータイ たからばこセッティング としまえん はてな アイアムアヒーロー アイアンマン アウトドアアンバサダー アプリ アレクサ インスタンスタイプ インターン インフラ ウィンドウズ ウェディング エフェクター エヴァ オープンソース カンバン キス キーキャップ キーボード ギター コキア コマンドプロンプト コンタクトセンター コース サーバーオペレーション サーバー移行 シェイクシャック シェルスクリプト スクラム スタジオ ステラタウン ストレージ スマホ セキュリティ タスク管理 ターミナル ダイエット チャリティー テックカンファレンス デスクトップ トライダガー ノートpc ハイレゾ ハゼ ハワイ ハンバーガー バイク バックアップ バンド バージョン管理 パスワード管理 パソコン パパ ピアノ ピクサー ピック ファン プロトレックスマート プロビジョニング ペイジェント ペパボ ポストモーテム ミニ四駆 メンタリング メンター メーリングリスト メール ヤフオク ヤマダ電機 ヤマダ電機モバイルドリーム館 ライブ ランニング リモートワーク レアジョブ レジン レツプリ レビュー ログ ロジカルシンキング 上尾 二段階認証 伊那市 会社 保育園 優しい世界 入門 全文検索 分割キーボード 初心者 勉強会 名前解決 外苑前 天キー 太陽 子供 学習リモコン 実写映画 家具 家族 家計簿 家電 小松菜奈 引っ越し 息子 成人式 技術書典 振り返り 新年 新幹線 新海誠 新米 旅行 日帰り旅行 映画 書評 東京湾 東京都知事 東野圭吾 桜台 検証 気分転換 水タバコ 池上彰 海釣り 温泉 漫画 炭酸泉 生産性 登山 監視 目標 確定申告 福島 立会川駅 組立て 経済学 結婚 練習音源 練馬 考える 育児 脆弱性 自作 自作エフェクター 自作キーボード 自宅サーバー 自宅鯖 花見 蕎麦 言葉 誕生日 読書 豊島園 貸し切り 赤外線 趣味プログラマー 転職 退職 選挙 釣り 釣り堀 銭湯 録音 長野県 障害報告 電動アシスト自転車 電動自転車 電子工作 電気工事士 電気工事士2種 電気風呂 露天風呂 養命酒 1歳
  • 概要 仕事をしていると、歴史のあるシェルスクリプトがEC2で動いていたりすることがある。 そういったスクリプトをなにかしらのスクリプト言語で書き換えるのもやぶさかではないのだが、数が多いと諦めの気持ちが湧き出てくる。 そこで、シェルスクリプトのままでもLambdaにデプロイしてバッチ的に動かして、サクッと移行できたりしないかなという思いが出てきた。 そこで、Lambdaのデプロイツールにlambrollを検証してみることにした。 インストール 手元がMacOSなのでbrewでインストール。 $ brew install fujiwara/tap/lambroll $ lambroll versions 2023/01/18 23:14:53 [info] lambroll v0.14.1 with function.json 2023/01/18 23:14:53 [error] failed to load function: open function.json: no such file or directory 使ってみる とりあえす空ディレクトリで下記を実行する $ lambroll init --function-name=testLambrollFunction --profile XXXXX 2023/01/18 23:22:05 [info] lambroll v0.14.1 with function.json 2023/01/18 23:22:05 [info] function testLambrollFunction is not found 2023/01/18 23:22:06 [info] creating .lambdaignore 2023/01/18 23:22:06 [info] creating function.json 2023/01/18 23:22:06 [info] completed 出来上がったJSONを見ると、デフォルトでは nodejs14.
    Created Wed, 18 Jan 2023 16:16:32 +0000
  • 事の始まり 最近、趣味でサイトのスクレイピングとか簡単なものを作ったりしている。 もちろん対象サイトに負荷をかけないようにするのはそうなんだけど、単純にBANされないようにする方法を考えた時に、UserAgentをちゃんと定義したりする以外に、やはりIPアドレスの分散は課題である。 そこで、Lambdaでスクレイピングした場合に、接続元のIPアドレスはどの程度固定になり、どの程度分散されるのか調査してみました。 IPアドレスチェック用のLambda まず、単純にIPアドレスが返ってくる簡単なLambdaを作成した。 これでCloudWatchLogsにログが記録されるため、IPアドレスがわかるようになる。 import json import requests from datetime import datetime, timedelta, timezone def lambda_handler(event, context): res = requests.get('https://ifconfig.me') JST = timezone(timedelta(hours=+9), 'JST') now = datetime.now(JST) time = now.strftime("%Y%m%d %H:%M:%S") print(time) print(res.text) 調査方法 そもそも、LambdaのIPアドレスは固定じゃないというのはどこかで記事を見かけていて、なんならVPCに配置してEIPつけるみたいな記事を見たことあったため、一旦手動で時間を空けて実行してみた。 その結果、Lambdaの実行時間の最大である15分経過すると、どうやらLambdaが破棄されるのか、IPアドレスが変わるタイミングがわかった。 ※二分探索により、最初30分、5分、20分、10分、15分といった感覚でゆっくり漫画見ながら調べた。 あとは、15分おきに実行するようにCloudWatchRuleで設定して約1日実行してみた。 CloudWatch Logsのダウンロード 設置した翌日、下記コマンドでログをダウンロード。 awslogs get /aws/lambda/ifconfig -s '24 hours ago' --profile プロファイル名 > ~/Downloads/awslogs.txt 行のカウント エディタで適当に不要な行を削除して行をカウント。 4(15min) x 24 = 96IPアドレスなので合っていることを確認。 wc -l ~/Downloads/awslogs.txt 96 /Users/DAREKAUSER/Downloads/awslogs.txt ユニークチェック IPアドレスがユニークであるかチェックTOP10。
    Created Wed, 25 Dec 2019 14:01:33 +0000
  • Lambdaやりたいと言いながら放置していたので、このGWという連休でLambdaの簡単なスクリプトに手を付けよう!と意気込み、連休最終日(明日も休みにしちゃったけど)に作った。 モチベーション 単純にtodoistがAPIを公開しており、APIのリファレンスが比較的わかりやすかったことがある。 todoist api reference あと、Slackのtodoist appで特定プロジェクトのタスクの一覧表示とかできなかったのが大きい。(調べてみたけどわからなかった、、) 本当はLambdaでSlack botまで作ろうかと思ったけど、まずは通知するところからやることにした。 コード pythonを選んだ理由は,最近pythonのboto3で色々スクリプトを書いていたから。 # coding: utf-8 import json import requests import os import sys from todoist.api import TodoistAPI SLACK_CHANNEL = os.environ['SLACK_CHANNEL'] SLACK_POSTURL = os.environ['SLACK_POSTURL'] TDIAPI = TodoistAPI(os.environ['TODOISTAPITOKEN'], cache=False) TDIAPI.sync() name = os.environ['TODOIST_PJT'] def tasklist(name): list = TDIAPI.state['projects'] for projects_id in list: if projects_id['name'] == name: tasks_project_id = projects_id['id'] break try: tasks_project_id except NameError: print("プロジェクト名が正しくありません。プロジェクト名を正しく入力してください。") sys.exit() items = TDIAPI.state['items'] slackmessage = [] for name in items: if name['checked'] == 0 and name['project_id'] == tasks_project_id: taskcontent = '- ' + name['content'] slackmessage.
    Created Mon, 06 May 2019 14:41:01 +0000