信頼はずっと、挑戦はもっと。

お問い合わせ
TEL:03-3496-3888

BLOG コアテックの社員ブログ (毎週月曜~金曜更新中)

LIST OF ARTICLES

記事一覧

  • テクログ

    AWSソリューションアーキテクトと不思議のAPNダンジョン

    はいどうも、今日のAPN探訪のお時間がやってきました。渋谷・新宿・梅田ダンジョンよりも高度と噂されるAPNダンジョン、ランダム生成されているのではないかというリンクの海をくぐりぬけ、我々はAWSソリューションアーキテクトの申込みを完了したのであった。。。(つづかない)-----------------------過去問サンプルをみて、「これならいけるかな?」というかんじではありましたが、対策テキストをお借りしまして見ていました。そこはかとなくAWSを使っていて感じていたことが、そういう思想で作られてるんだな、ってのがわかってなかなか面白かったです。ぼんやりと思っていたことが、外部講習などで補強される感じに近いでしょうか。いわゆる「コードだけ書けばいい」と言われることが多くなったように、それを実現するための可用性や内部的なしくみはこっち(AWS)がやるから、もっとバンバン実際に動くところ作っていけよ!というメッセージというか、そういうものだったんですね。『こまけえこたぁいいんだよ、ここは任せてお前は先にいってコードを書け!』という感じでしょうか。「チューニング?まあそれも大事かもしれないけどハードも毎回変わるし大変だろ??(Netflixはやってるってありましたけど)そんなことよりどんどんEC2の世代あげろよ!安いし30%高速だぜ!」みたいなかんじですね。まあ大体の場合が問題ない設定になってるし、と。ぽんぽん変わるのに腰をすえてじっくりチューニングしてもすぐ次が来る、って感じだと思います。間に合わん。クラウドのときは頭を切り替える、些事はほっといて大事なことをやる、ってのが大事だな、と再認識しました。-----------------------完全にポエムですがそういうときもありますよね。
  • テクログ

    RDS Performance Insights でパフォーマンス・チューニングが楽しくなる!

    マスオです。Amazon RDS Performance Insightsの使用遂にパフォーマンス・インサイトが Aurora でも使えるようになったので、軽く試したところ超絶便利だったので一部商用環境にも適用を行いました。まずはインスタンス一覧画面でアクティビティ状況が分かるのですがここで逼迫状況がどうかがすぐに判別可能です。次にダッシュボード画面ではCPU負荷 や I/O などで待ちになっているクエリがおまとめされて出力されるためチューニング対象がすぐに分かるようになっています。今まではスロークエリのデータからボトルネックの解析を行っていたのですが、併用する事で費用対効果の高いチューニングが可能となってきました。ただ、いくつか制限がありdb.t2系インスタンスでは使用できないMySQL5.7互換ではしようできない有効化した後に再起動が必要くらいは気を付ける必要があります。みなさんも是非つかってみてください!それでは、また。
  • テクログ

    Aurora Serverless が遂に登場!

    マスオです。Aurora Serverless MySQL の一般利用が開始※画像も上記から引用以前のAWSイベントで発表され限定プレビューだったサーバレス版についてこのほど遂に一般利用が解禁となりました!東京リージョンでも利用可能となったので早速さわってみたのですが、現状での制限が与えた影響などを書いていきたいと思います。パブリックアクセスができない通常はパブリックアクセスするしないを選べますが、そもそも設定できないローカル環境からつながらない!とか言われたので EC2 からつなぐようにしてもらったレプリカ機能がないアプリからのDB接続を Writer/Reader に分散しているが、エンドポイントが一つになる分散していない環境から試し始めたインスタンス型からサーバレス型に切り替えるにはスナップショット経由のみ作成に結構かかった。2~3時間くらいテスト環境とかから試し始めた。本番を切り替える場合どうしようかな。暗号化が必須特に影響なかった「すぐに適用」機能がコンソール上から使えないクラスター名の変更などメンテナンスウィンドウで変更となるCLI からのみ対応可能取り急ぎ再作成とかしたんで、メンテナンスウィンドウもコンソール上から変更できないサポートに聞いたらバックアップウィンドウと共に変更不可との事適応するしかないかサクッと試しただけでも色々と出ました。現状では ACU に上限がありますし、スケールアウト用のレプリカ機能もないのでオートスケール感度によっては本番に適用するのは難しい環境もありそうです。ただ、用途や制限を踏まえてマッチする環境であれば積極的にサーバレス版に切り替えていくべきアップデートかと感じました!皆さんもサーバレス推進するために本機能をガンガン使っていきましょー。それでは、また。
  • テクログ

    コスト配分タグを自動でチェックしたい!

    恒例のしたいシリーズです。いまつくりました。●なにがしたいの?AWSアカウント内に複数の媒体があって、どの媒体にどれだけお金がかかっているかをチェックするために、リソースにProjectタグをつけると簡単に集計できます。でも、リソースは随時増えるし、ちゃんとProjectタグついているのかわからない。なんとかしたいという気持ち。●どうやるの?LambdaでリソースにProjectタグがついているかをチェック。+Projectタグの値もチェック(ちがうのがついてたらこまるからね)チェックしない、というのも設定したい。あと、結果はSlackに通知したりしたい。●具体的には?ソースをはりますんで見てね!EC2のタグチェックの例です。サンプルですよ。・追加ライブラリslackwebいれてください。・使っている環境変数ACCOUNT_NAME AWSアカウントの名前とかをいれます。通知用です。CHECK_TAG_NAME チェックしたいタグをいれます。今回はProjectです。CHECK_TAG_VALUES カンマ区切りで、入っていていほしいタグの値をいれます。aaa.jp,bbb.jp  みたいなのですSLACK_URL SlackのWebhookURLです。・ソース(Pythonらしさはかけらもありませんがゆるしてください# -*- coding: utf-8 -*- # EC2のタグ設定チェック import boto3 import os import slackweb import sys # アカウント名 ACCOUNT_NAME   = os.environ['ACCOUNT_NAME'] # チェックするタグ名 CHECK_TAG_NAME  = os.environ['CHECK_TAG_NAME'] # ついていてほしいタグの内容(どれかならOK) CHECK_TAG_VALUES = os.environ['CHECK_TAG_VALUES'].split(",") #slackurl SLACK_URL    = os.environ['SLACK_URL'] REGION_NAME = 'ap-northeast-1' ##################################################### #本体 ##################################################### def lambda_handler(event, context):   #タグチェック   results = checkTags()   print('checkTags results:')   print(results)   checkResult_AND_Notify(results) ##################################################### # インスタンスID一覧を取得 ##################################################### def checkTags():   instance_list = []   #ページャーで全て取得   client  = boto3.client('ec2', region_name=REGION_NAME)   paginator = client.get_paginator('describe_instances')   # Filterで止まっているものは除外   page_iterator = paginator.paginate(     Filters=[     {       'Name': 'instance-state-name',       'Values': [         'running',       ]     }   ],)   #チェックしていく   for page in page_iterator:     for reservation in page["Reservations"]:       for instance in reservation["Instances"]:         instance_id = instance["InstanceId"]         #Tagsを見て、CheckProjectSettingがNOならば除外(存在しない、またはYESなら追加         check_flag       = True         project_tag_exist_flag = False         project_tag_value   = ""         name_tag_value     = ""         Tags = instance["Tags"]         for tag in Tags:           if tag['Key'] == 'CheckProjectSetting':             if tag['Value'] == 'NO':               print('CheckProjectSetting,NO:' + instance_id)               check_flag = False           if tag['Key'] == 'Project':             project_tag_exist_flag = True             project_tag_value = tag['Value']             print('Project tag_value:' + project_tag_value)           #Nameはわかりやすさのため取ります           if tag['Key'] == 'Name':             name_tag_value = tag['Value']             print('Project tag_value:' + name_tag_value)         if check_flag == True:           print('CheckProjectSetting,YES:' + instance_id)           if project_tag_exist_flag == False:             #タグ自体がない場合は即追加             instance_id_dict = {               "instance_id"    : instance_id,               "name_tag_value"  : name_tag_value,               "project_tag_value" : project_tag_value,               "reason"      : "no_project_tag"             }             instance_list.append(instance_id_dict)           else:             #タグはあった場合、中身を確認し、なかったら一覧追加             if project_tag_value not in CHECK_TAG_VALUES:               instance_id_dict = {                 "instance_id"    : instance_id,                 "name_tag_value"  : name_tag_value,                 "project_tag_value" : project_tag_value,                 "reason"      : "project_tag_not_match"               }               instance_list.append(instance_id_dict)   return instance_list ##################################################### # 漏れがあるものを通知 ##################################################### def checkResult_AND_Notify(results):   print('checkResult_AND_Notify')   exist_no_Tag_Flag = False   res_str = ''   for result in results:     exist_no_Tag_Flag = True     res_str += '>  Name:' + result['name_tag_value'] + ' ID:' + result['instance_id'] + ' 理由:' + result['reason'] +'\n'   if exist_no_Tag_Flag:     title_str = "ProjectタグをつけてないEC2インスタンスがあったよ!付けてね!\n"     slack = slackweb.Slack(url=SLACK_URL)     slack.notify(text=ACCOUNT_NAME + "のProjectタグチェックをしたよ!\n\n" + title_str + res_str)   else:     print("ProjectタグをつけてないEC2インスタンスはなかったよ!") ※Tagsを見て、CheckProjectSettingがNOならば除外やったね!もうタグがあるかどうかをチェックしなくていいよ!肝心のタグ設定は場合によりますので、手動で付けてくださいね。以上!(見栄え用の画像↓)
  • テクログ

    Amazon Rekognition でサクッと画像解析する!

    皆さん、AWS使ってますか? 今回は 「Amazon Rekognition(レコグニション)」 を紹介したいと思います! 最近バズワードでなくなりつつある AI 系サービスです! 「画像や動画の分析を簡単な API で使っちゃおう!当然サーバレスで!」 みたいな感じです。 主な機能は、  ・画像内の物体、概念、シーンにラベルを付与 ・アダルトコンテンツかを検出 ・どんな顔をしているかを分析 ・有名人かどうかを判定 ・顔が似ている割合を確認 ・画像内のテキストを抽出 ・動画内の物体、人物などを検出 など多岐に渡ります。 料金も非常に安く環境の構築や運用も不要なので、気軽に試せるかと思います。 当社が管理しているサイトでは、ユーザーが画像や動画を投稿するコンテンツがあるので、それらを分析するロジックに活用できないか検討しているところです。 皆さんも是非お試しください! それではまた!
  • テクログ

    CloudFront で爆速サイトに!

     皆さん、AWS使ってますか? 今回は 「CloudFront(クラウドフロント)」 を紹介したいと思います! 巷で話題(?)のCDNでAWSが提供しているサービスです。 「全世界に分散配置されているエッジサーバにコンテンツをキャッシュして、アクセス元に近いところから超高速にレスポンス返しちゃおうぜ!」 みたいな機能をサーバレスで簡単に実装できるサービスです。 主なメリットは、  ・サーバレス ・費用対効果が高い ・設定が簡単 ・全世界に展開されたエッジ ・AWSの各サービスと連携できる あたりでしょうか。 DDoS対策としては、AWS WAF や Shield で保護できますし、使わない理由が見当たらない! 当社が管理しているサイトでは、静的なコンテンツ(画像・動画・CSS・JSなど)をCDN配信しており、動的なコンテンツについてもCDN配信に向けて検証中です。 皆さんも是非お試しください! それではまた!