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

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

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

LIST OF ARTICLES

記事一覧

  • テクログ

    awscliのユーザーを、該当ディレクトリに移動しただけで自動で切り替えたい!

    ●イントロダクションいろいろなものの合間にサーバレス付近の検証を延々やってる昨今ですが、皆様におかれましてはいかがお過ごしでしょうか。サーバレス付近もうちょっとやったら組み合わせてのマイクロサービスとかにすすみたいんだよね〜。Goでペチペチとやってますよ。実行速い。さて、年末ですので、awscliが活躍する時期ですね。そう、隙間のホコリを掃除したりするのに役立ちますね。●やりたいことホコリを掃除するついでにcloud9でServerlessFrameworkを使ってLambdaのデプロイをしてたんですけど、デプロイするステージが正しいかどうかをユーザーを切り替えることによって実現したいなって気分になりました。デフォではdevだけの権限があるので、prodにやると「できないよ?」って言われる、みたいな。ガチガチに縛るとかじゃなくてうっかりを防ぐ安全装置的なやつですね。でも毎回prodの権限があるユーザに切り替えるとかしたくないですね。めんどくさいからね。●profileを切り替えればユーザーも変更できるけど……awscliについて、profileを指定すれば別ユーザーになれるのはご存知ですね。awscliの設定切り替えでもそんなprofile変更を手で毎回やりたくない。makeとかでdev prodを分けるにしたってそれを間違えるからそこではやりたくない。自動でやって…ほしい!!!!●くみあわせ技だよまず、環境変数でクレデンシャルファイルのパスが変えられるんです。ということはユーザーも変えられる。AWS CLIでクレデンシャルファイルパスを環境変数から設定できるようになりましたあとはどこかのディレクトリに移動したとき、自動で環境変数さえ変えられれば!あっ!ディレクトリごとに環境変数を定義 - direnv●おわかりいただけただろうかそういうことでございます。インフルエンザが流行る時期ですが、お気をつけを。よい年を迎えられますよう祈念しております。 画像は記事とは関係ありませんがイメージです
  • テクログ

    EC2の自動リカバリを設定できない。。だと?

    # どんな状況で起こったかアカウント間を移行して、移行先でAMIからEC2を起動させようとしたら、自動リカバリー(CloudWatchでステータスチェックアラートをトリガーにして、インスタンスを自動復旧させる機能のこと)がグレーアウトして、選択すらできない。。。# 自動リカバリ機能の条件ってなんだっけ?https://dev.classmethod.jp/cloud/aws/ec2-autorecovery-by-cloudwatch-alarm/#toc-ec2自動リカバリの条件こちらのページを参考にさせていただきました。# 原因インスタンスストアボリュームが付いていたからでした。#まとめ原因書いてしまうとなんだ、そんなことか。とは思ったのですが、移行元のEC2インスタンスには、インスタンスストアボリューム(Ephemeral Disk)は付いてなかったんです。だから、AMIを取得して、移行したらそのまま、付かないまま移行できると思ったら、、、、自動で付けてくれるんです。しかも、一旦作成したら、後から外せません、、、本番環境を他のアカウントに移行して、運用するときはメンテナンス時間を確保したりと、作業の手間の割には調整に時間が取られるので、自動リカバリ付けたい方は、ディスク設定でインスタンスストアボリュームにはご注意を。(ただ、本番システムの移行作業って神経使うし、移行テストのときも画面とか、ログとか見て異常ないよねっていう確認なので、気づきづらい部分ではあります)qiitaでも投稿してるよ!https://qiita.com/s-yana/items/947f53f0fdaef4833b1d
  • テクログ

    Amazon CloudWatch Synthetics(プレビュー)で超簡単サイト監視!?

    マスオです。AWSの進化はどこまでいくのか?某国のビッグプロジェクト受注は逃しましたが...一昨日の公式ブログで気になるサービスのプレビュー公開が書かれていました。Introducing Amazon CloudWatch Synthetics - Now in Previewいわゆる外形監視する場合、お手製の監視ツールだったり既製のツールやサービスを使うことが多いと思います。(ZabbixとかMackerelとかNew Relicとか)あるいは会社によっては外部委託していてアラート条件に合致したら有人でエスカレーションや再起動対応!みたいなのもあったり。単純に死活だけ見たい場合もあれば、レスポンス時間やHTML内容をチェックしたりなど24時間サイトを細かく監視したかったりアクションを色々やれたりできると嬉しいやつですよね。ブログを見る限りでは初期設定は簡単でカスタマイズ性も高そうです。費用面では1回のアクセスで最低0.0012ドルかかるようなので、1分に1回だと6000円くらいかかる?高いか安いか・・・。まだ東京リージョン非対応でプレビューリリースとなっており、・US East (N. Virginia)・US East (Ohio)・EU (Ireland)だけ対応かつ申込みをするところからになります。皆さんも良かったら是非お試し下さい!それではまた!
  • テクログ

    AWSが新しいディスカウントプランを発表しました

    こんにちは、おっしーです。皆さん、AWSって使ってますか?だいたいEC2、RDSあたりがよく使われると思うのですが、正直、AWSの料金体系って難しいですよね。予めスペックに対して決まった金額を払うものもあれば、使用した分だけ払う従量課金制のものもあります。小さな規模のサービスを作るなら別ですが、それでもお金がかかるものなのできちんと自分の使用目的と照らし合わせて料金を確認したいところです。そんな中でAWSが新たにディスカウントプランを発表しました!もともとリザーブドインスタンスという料金体系があります。(RI)リザーブドインスタンスというのは、予め一定の額を払っておくと、決まった期間安く使えるよというものです。電車やバスの定期券のようなものですね。そちらに似たものですが、今回2つのプランが追加されました。○Compute Savings Plansリージョンやインスタンスファミリー、サイズなどに関わらず、EC2とFargateが最大66%引きになるプラン○EC2 Savings Plansリージョンやインスタンスファミリーは制限されるが、EC2が最大72%割引になるプラン料金計算をするのは難しく、スマホの各キャリアが打ち出すプランのように複雑ですがこういったものがあると知っておくだけでも幅が広がってより適したプランを選ぶことが出来ますね。無駄なお金は使わない方がいいです。ということで、皆さんも良いAWSライフを!
  • テクログ

    S3の同じリージョン間でサクッとレプリケーションしたいときのポリシーテンプレ

    同一リージョンでレプリケーションできるようになったんです。今までできなかったの?って感じはします。クロスリージョンで同じことはずっと前から使えましたからね。で、今日はポリシーのテンプレ貼ります。バケット名とアカウントIDを差し替えれば使える感じです。とりあえず、クロスアカウントと同一アカウントでレプリケーションするための方法なので、それ以外のことやりたいときは改変して、使ってみてくださいーS3に大して何かやりたいときって、そのS3バケットの所有者がどのアカウントかが重要です。つまり、同一アカウント内だったら、みんなAアカウントが持ってるのでIAMロールでS3リソースに何ができるかを設定したらOK。BアカウントにあるS3バケットに大して、Aアカウントから何かをしたいとき。これは、AアカウントでIAMロール設定とBアカウント側でバケットポリシーの設定が必要になります。同一アカウントでレプリケーションするときのIAMロールにつけるポリシー {     "Version": "2012-10-17",     "Statement": [         {             "Effect": "Allow",             "Action": [                 "s3:GetReplicationConfiguration",                 "s3:GetObjectVersion",                 "s3:GetObjectVersionAcl",                 "s3:GetObjectVersionTagging",                 "s3:ListBucket"             ],             "Resource": [                 "arn:aws:s3:::source-bucket",                 "arn:aws:s3:::source-bucket/*"  <転送元バケット             ]         },         {             "Effect": "Allow",             "Action": [                 "s3:ReplicateObject",                 "s3:ReplicateDelete",                 "s3:ReplicateTags"             ],             "Resource": "arn:aws:s3:::dist-bucket/*" <転送先バケット         }     ] } Getの部分を省略して書くこともできます。たぶん、S3://Replicateも短縮できるかもですが、実際試してないのでたぶんです。{     "Version": "2012-10-17",     "Statement": [         {             "Effect": "Allow",             "Action": [                 "s3:Get*",                 "s3:ListBucket"             ],             "Resource": [                 "arn:aws:s3:::source-bucket",                 "arn:aws:s3:::source-bucket/*"  <転送元バケット             ]         },         {             "Effect": "Allow",             "Action": [                 "s3:ReplicateObject",                 "s3:ReplicateDelete",                 "s3:ReplicateTags"             ],             "Resource": "arn:aws:s3:::dist-bucket/*" <転送先バケット         }     ] } S3の認証周りでポリシーを設定するときって、単純にレプリケーションしたいだけでもいろいろActionに書かなきゃいけないのでとりあえず、なにも考えずにアスタリスク!でいいとおもいます。クロスアカウントでレプリケーションするときにつけるバケットポリシー {     "Version": "2008-10-17",     "Id": "S3-Console-Replication-Policy",     "Statement": [         {             "Sid": "S3ReplicationPolicyStmt1",             "Effect": "Allow",             "Principal": {                 "AWS": "arn:aws:iam::アカウントID番号:root"             },             "Action": [                 "s3:GetBucketVersioning",                 "s3:PutBucketVersioning",                 "s3:ReplicateObject",                 "s3:ReplicateDelete"             ],             "Resource": [                 "arn:aws:s3:::dist-bucket",                 "arn:aws:s3:::dist-bucket/*" <転送先バケット             ]         }     ] } 転送先のバケットがあるアカウント側のバケットポリシーにいれましょう。クロスアカウントのIAMロールを作るこれ地味に忘れてて、すこしはまったんですが、このロールは、転送先のアカウントで作成します。転送元のアカウントからのリソース操作を許可するので。これでとりあえず、レプリケーションとかaws-cliで同期をしたいとかはできます。案外これ使うんで、お役に立てばうれしいです。「とりあえず、S3の中身同期しといて、レプリケートかけるようにする」がやれます。現場からは以上です。
  • テクログ

    AWS-CLIコマンドでEC2のメトリクスをいろいろ取りたい

    # aws-cliコマンドさくっと、EC2のインスタンスの情報をcliで取りたいときのコマンドです。##EC2のタグについてるサーバの名前を知りたい時aws ec2 describe-instances | jq -r '.Reservations[] .Instances[] .Tags[]|select(.Key=="Name")|.Value' #ステータスがrunning状態のTagsがKey=Nameのをインスタンスを取得aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq -r '.Reservations[] .Instances[] .Tags[]|select(.Key=="Name")|.Value' #running状態かつ、 TagsがKey=NameのインスタンスIDとインスタンス名を取得aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq -r '.Reservations[].Instances[] | {InstanceId, InstanceName: (.Tags[] | select(.Key=="Name").Value)}' #インスタンス名だけを抽出して、整形して出力aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq -r '.Reservations[].Instances[] | {InstanceId, InstanceName: (.Tags[] | select(.Key=="Name").Value)}' | grep "InstanceName" | awk '{print $2}' | sed -e 's/"//g' -e 's/,//g' > hogeファイル #インスタンスIDだけを抽出して、整形して出力aws ec2 describe-instances --filter "Name=instance-state-name,Values=running" | jq -r '.Reservations[].Instances[] | {InstanceId, InstanceName: (.Tags[] | select(.Key=="Name").Value)}' | grep "InstanceId" | awk '{print $2}' | sed -e 's/"//g' -e 's/,//g' #EC2についてるEIPを取得aws ec2 describe-addresses --query '*[].PublicIp' --output text | tr '\t' '\n' #ローカルPCからAWSへ取得したEIPリストを使ってSSHして、コマンド叩く用のシェル#!/bin/bash aws ec2 describe-addresses --query '*[].PublicIp' --output text | tr '\t' '\n' > elastic_ip.lst export AWS_HOME=${HOME}/.aws export AWS_CONFIG_FILE=${AWS_HOME}/config export ELASTIC_IP=${HOME}/elastic_ip.lst cat ${ELASTIC_IP} | while read line do ssh -n user@$line -p 22 -i /xxxxxx/xxxxxx 'example-command' > result.txt done