【雑記】今年の振り返り
もう大晦日です。
ほんと1年早いと思う反面、年々と年末年始という感じが薄れている感じです。
さて、今年を振り返ります。
【Python】CentOS6.5にPython3.5.2をインストールするとき「locale.Error: unsupported locale setting」が出るときの対処法
はじめに
ちょっとPythonでやりたいことがあり
Pythonを触ったことない人がPythonをインストールを実施したところ
数十分ハマったので、メモ書き程度の話です。
環境
前提条件
やってみた
以下に書かれていた内容をそのまま実施してみました。
その結果、エラーが発生
locale.Error: unsupported locale setting
エラーの通りなのですが、localeがサポートされていないということらしいです。
なので、localeを確認します。
[vagrant@vagrant-centos65 ~]$ locale locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory LANG=en_US.UTF-8 LC_CTYPE=ja_JP.UTF-8 LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=
言語がバラバラだからかな?と思い、言語を英語にしてみたりしました。
sudo vi /etc/sysconfig/i18n . /etc/sysconfig/i18n
しかし、うまくいかず困ったときのstackoverflowです。
そして、同じように悩んでいる記事を見つけました。
その結果、以下のコマンドを打てば良いということです。
適用した内容も載せておきます。
[vagrant@vagrant-centos65 ~]$ export LC_ALL=C [vagrant@vagrant-centos65 ~]$ locale LANG=en_US.UTF-8 LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_PAPER="C" LC_NAME="C" LC_ADDRESS="C" LC_TELEPHONE="C" LC_MEASUREMENT="C" LC_IDENTIFICATION="C" LC_ALL=C
重要なのは、「LC_ALL」のようですね。
そして、インストールを再実行してみたところうまくいきました。
まとめ
こういうところで行き詰まると、本来やりたかったことが
遠のき大変ですがもっと簡単にインストールできないものかな?と思いました。
【Ruby】【6回目】Kawasaki.rb #042 に参加しました
まさかの1年3ヶ月の参加です。
Rubyから離れっぱなしなので、ちょっと気持ちを切り替える意味で参加してきました。
概要
内容
以下のページで素晴らしくまとまっているので一読必須です。
Togetter
まとめ
感想
今回、応募が15人という自分が去年参加していたころより
多くなっており、川崎Ruby会議をやった効果なのかな?と思いました。
また、地域コミュニティらしいフレンドリーな感じは健在で
1年ちょっとのブランクがあっても場に溶け込むことができました。
そして、いつも通り自己紹介から始まり、パーフェクトRuby読書会をやり
最後に発表ということをやりました。
※20分ぐらい話していたと思います。
自分が1つ発表したのが以下のものです。
Ruby勉強会なのに、Rubyのことではない過ちを犯していますが
その辺は主催者の寛大な心遣いに感謝です。
そのおかげで無事に発表して、Serverlessの1つの事例を共有できたと思っています。
懇親会
前は、ミューザ川崎の飲食店だったのですが
最近はその周辺の中華屋さんになっておいました。
安くて美味しい老舗な店でとても良かったです。
リピートする理由がわかりました。
そして、ダムの話が熱かったです。
宣伝
調度良い人数と雰囲気で、毎月開催しています。
とても参加しやすいので是非参加しましょう!
次回は年末年始なので開催日時が変則的になるようですが
今年の締めに参加してみてはどうでしょうか?
そして、参加する際は以下の本を持っていきましょう。
【AWS】スマートフォンを機種変更するとき、2段階認証(MFA)を解除し忘れたので解除依頼をした
はじめに
先日、満を持してiPhone7 SIMフリーに機種変更をしました。
そして、個人で使っているAWSアカウントはセキュリティ強化のため
2段階認証(以下、MFA)設定していました。
しかし、前の機種でMFAを解除し忘れたため
AWSコンソールにログインできなくなってしまいました。
今回はMFA解除するまでの話を書きます。
前提条件
解除方法
まず、ルートアカウントでログインするところまでは同じで
以下の箇所をクリックします。
次に以下の画面が表示されるので、囲っている箇所をクリックします。
お問い合わせフォームが表示されるので、以下のように記入していきます。
そして、送信します。
10 〜 15分待っていると電話がかかってきます。
もし、電話番号を間違っていた場合、メールが送られてきます。
最初の電話は英語なので、英語が喋れる人はそのまま解除の手続きを
すれば良いですが、筆者はまったく英語が喋れない状態です。
なので、相手がある程度喋りきった後にこちらから
「I can't speak english.」ということを伝えました。
そうすると、相手は日本からの問い合わせということを知っているので
すぐさま「日本のオペレーターに繋ぐから待っていてくれ」という旨のことを話します。
英語がわからなくても「Japanese operator」という単語が聞こえれば問題ないです。
翌日、14時過ぎに日本のオペレーターから電話があり、無事に解除することができました。
平日昼間の対応のみなので、人によってはかなり都合が悪い状況なので
1日待機してないといけないかもしれません。
まとめ
「英語を聞ける喋れるようになりましょう」というのが正直なところですが
英語がまったくできなくても解除はできるので、もし同じような状況になった人に対して
少しで参考になってもらえればと思います。
【Serverless】はじめてのServerless Framework v.1 rc1 その2
はじめに
前回に引き続き、Serverless Frameworkを使った開発をしていきます。
【Serverless】はじめてのServerless Framework v.1 rc1 その1 - FujiYasuの日記
アーキテクチャ図
Cloudcraftというサービスを使い書いてみました。
https://cloudcraft.co/view/5d16ea58-14e0-439b-a8eb-18c047e9f39a?key=wIxzJw5VW44YEquqe4O7Sw
※今回は、ServerlessなのでAPI GatewayとAWS Lambdaの話がメインです。
環境
- OS X El capitan
- nodebrew 0.9.6
- Serverless v.1 rc1
前提条件
- 前回の記事まで読み進んでいる人
やってみた
はじめに
前回までのAPIは、URLがわかってしまうと誰でもAPIを叩いてしまうことができ
セキュリティ的に良くない状況となってしまいます。
また、API GatewayはAPIを実行された分だけお金がかかるので
いたずらにやられてしまうと大きな金額の請求がきてしまいます。
API Keyの作成
ここでは、API Keyを発行します。 GUIからでも作れますが、AWS CLIからKeyを発行するします。
aws apigateway create-api-key --name 'dev-my-first-serverless-rc1' --description 'Used for development' --enabled --region ap-northeast-1
serverless.ymlを編集
Keyが作成されたので、API Keyの名前をServerless側で記述します。 さらにAPIをAPI Keyを指定するため、event単位で「private: true」を設定します。
provider: name: aws apiKeys: - dev-my-first-serverless-rc1 functions: hello: handler: handler.hello events: - http: path: handler/hello method: get private: true
ドキュメントは、以下のページです。
デプロイ
ここまで設定したら、後はデプロイするだけです。
[0:00:46] Y_Fujikawa:my-first-serverless-rc1 $ serverless deploy -v erverless: Packaging service... Serverless: Removing old service versions... Serverless: Uploading CloudFormation file to S3... Serverless: Uploading service .zip file to S3... Serverless: Updating Stack... Serverless: Checking Stack update progress... CloudFormation - UPDATE_IN_PROGRESS - AWS::CloudFormation::Stack - my-first-serverless-rc1-dev CloudFormation - UPDATE_IN_PROGRESS - AWS::Lambda::Function - InsertLambdaFunction CloudFormation - UPDATE_IN_PROGRESS - AWS::Lambda::Function - HelloLambdaFunction CloudFormation - UPDATE_COMPLETE - AWS::Lambda::Function - InsertLambdaFunction CloudFormation - UPDATE_COMPLETE - AWS::Lambda::Function - HelloLambdaFunction CloudFormation - CREATE_IN_PROGRESS - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474902440291 CloudFormation - CREATE_IN_PROGRESS - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474902440291 CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474902440291 CloudFormation - UPDATE_COMPLETE_CLEANUP_IN_PROGRESS - AWS::CloudFormation::Stack - my-first-serverless-rc1-dev CloudFormation - DELETE_IN_PROGRESS - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474902169689 CloudFormation - DELETE_COMPLETE - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474902169689 CloudFormation - UPDATE_COMPLETE - AWS::CloudFormation::Stack - my-first-serverless-rc1-dev Serverless: Stack update finished... Service Information service: my-first-serverless-rc1 stage: dev region: ap-northeast-1 endpoints: GET - https://xxxx.execute-api.ap-northeast-1.amazonaws.com/dev/handler/hello functions: my-first-serverless-dev-hello: arn:aws:lambda:ap-northeast-1:201892032205:function:my-first-serverless-rc-1dev-hello
動作確認
Endpointsも書かれているので、Curlコマンドを叩けばすぐ確認できます。
[0:03:27] Y_Fujikawa:my-first-serverless-rc1 $ curl https://xxxx.execute-api.ap-northeast-1.amazonaws.com/dev/handler/hello {"message": "Forbidden"}% [0:05:49] Y_Fujikawa:my-first-serverless-rc1 $ curl -H "x-api-key: <作成したAPI Key>" https://xxxx.execute-api.ap-northeast-1.amazonaws.com/dev/handler/hello {"message":"Go Serverless v1.0! Your function executed successfully!"}
まとめ
今回はAPI Keyの発行をAWS CLIから実行しましたが、Serverlessからでもできそうな感じがあります。
それでも、わざわざGUIから設定せずスムーズに作業をできるのはいいですね。
【Serverless】はじめてのServerless Framework v.1 rc1 その1
はじめに
先日、実践Serverlessの勉強会レポートを書きました。
そして、ちょうど良く業務でもサーバーレスでやってみる?という
話にもなったので、技術調査も兼ねてプライベートで触ってみました。
なお、今回はバックエンドではなく
フロントエンド寄りの構成の話となります。
今回は、Serverless Frameworkを使って効率的に開発できるか試してみます。
アーキテクチャ図
Cloudcraftというサービスを使い書いてみました。
https://cloudcraft.co/view/5d16ea58-14e0-439b-a8eb-18c047e9f39a?key=wIxzJw5VW44YEquqe4O7Sw
※今回は、ServerlessなのでAPI GatewayとAWS Lambdaの話がメインです。
環境
- OS X El capitan
- nodebrew 0.9.6
- Serverless v.1 rc1
前提条件
- Serverless Frameworkを触ったことない人
- AWSコンソールにログインできる
やってみた
インストールとプロジェクト作成
クイックスタートに書かれているように1 〜 5をやります。
Step 4に
serverless create --template aws-nodejs --path my-service
とありますが、nodejsで作られるようになっていますが
ServerlessはPython、Java8にも対応しているのでお好みで大丈夫です。
今回はそのままNode.jsを使います。
また、今回はプロジェクト名を「my-first-serverless-rc1」としました。
作られたものを確認
自動でプロジェクトの雛形が作られ、そのままデプロイできますが
それぞれのファイルを確認していきます。
・serverless.yml
API Gateway, Lambda, IAMに関する設定をまとめて管理するファイル。
デフォルトが東京リージョンでないため、注意。
また、そのままだとLambdaしか作られないため、API Gatewayも一緒に作る場合
以下の設定を追加します。
functions: hello: handler: handler.hello events: - http: path: handler/hello method: get
ドキュメントは、以下のページです。
・handler.js
AWS Lambdaでの「入り口」となる部分です。
自動生成した際は「Go Serverless v1.0! Your function executed successfully!」という
文字列が返却される状態となっています。
・event.json
ローカルテスト用のファイルだと思います。
あまり使う機会がなく、まだ詳しくないですがあっても問題ないです。
デプロイ
Step 6のコマンドでデプロイできますが、オプションをつけると経過がわかるのでオススメです。
[0:00:46] Y_Fujikawa:my-first-serverless-rc1 $ serverless deploy -v Serverless: Packaging service... Serverless: Removing old service versions... Serverless: Uploading CloudFormation file to S3... Serverless: Uploading service .zip file to S3... Serverless: Updating Stack... Serverless: Checking Stack update progress... CloudFormation - UPDATE_IN_PROGRESS - AWS::CloudFormation::Stack - my-first-serverless-rc1-dev CloudFormation - UPDATE_IN_PROGRESS - AWS::Lambda::Function - HelloLambdaFunction CloudFormation - UPDATE_IN_PROGRESS - AWS::Lambda::Function - InsertLambdaFunction CloudFormation - UPDATE_COMPLETE - AWS::Lambda::Function - HelloLambdaFunction CloudFormation - UPDATE_COMPLETE - AWS::Lambda::Function - InsertLambdaFunction CloudFormation - CREATE_IN_PROGRESS - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474556465062 CloudFormation - CREATE_IN_PROGRESS - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474556465062 CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474556465062 CloudFormation - UPDATE_COMPLETE_CLEANUP_IN_PROGRESS - AWS::CloudFormation::Stack - my-first-serverless-rc1-dev CloudFormation - DELETE_IN_PROGRESS - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474250545851 CloudFormation - DELETE_COMPLETE - AWS::ApiGateway::Deployment - ApiGatewayDeployment1474250545851 CloudFormation - UPDATE_COMPLETE - AWS::CloudFormation::Stack - my-first-serverless-rc1-dev Serverless: Stack update finished... Service Information service: my-first-serverless-rc1 stage: dev region: ap-northeast-1 endpoints: GET - https://xxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/handler/hello functions: my-first-serverless-rc1-dev-hello: arn:aws:lambda:ap-northeast-1:201892032205:function:my-first-serverless-rc1-dev-hello
動作確認
Endpointsも書かれているので、Curlコマンドを叩けばすぐ確認できます。
curl https://xxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/handler/hello {"message": "Go Serverless v1.0! Your function executed successfully!"}
動作確認が済んだら、以下のコマンドを実行すればデプロイした内容が
すべて削除されてきれいになります。
serverless remove
注意
APIの認証をしていないため、APIのURLがわかってしまうと
いたずらにアクセスされる可能性があるため、認証キーを設定した方が良いです。
設定の仕方はまた次回に書きます。
まとめ
最初、便利だなぁと思っていたのですが
手動での設定が多すぎてとても大変な印象を受けましたが
すでに便利なフレームワークがあったことに驚きました。
もう少しいろいろ試してみて、便利さを実感していこうと思います。
【Linux】権限は問題ないのに「Permission denied」と出てコマンドが実行できない。
はじめに
業務で新サービスを立ち上げる際に、構成管理はプロビジョニングツールを使います。
最近はプロビジョニングツール職人(と言っても、難しいことはしていない)として
新サービスに携わっています。
そこで、ちょっとハマったところをメモします。
環境
- CentOS 6.8(プロビジョニング先のサーバー)
- itamae 1.9.9
前提条件
itamaeをホスト側で動作し、CentOSに接続できること。
詳細
itamaeでサクッと書きつつ、実行しました。
インストール系はうまく動作して問題なかったのですが
サービスの起動でエラーが発生してしまいました。
# 今回は、php-fpmが例です。 INFO : execute[/etc/init.d/php-fpm restart] executed will change from 'false' to 'true' ERROR : stdout | Stopping php-fpm: [60G[[0;31mFAILED[0;39m] ERROR : stdout | Starting php-fpm: [04-Aug-2016 11:35:59] ERROR: failed to open configuration file '/etc/php-fpm.d/default.conf': Permission denied (13) ERROR : stdout | [31-Jul-2016 11:35:59] ERROR: Unable to include /etc/php-fpm.d/default.conf from /etc/php-fpm.conf at line 11 ERROR : stdout | [31-Jul-2016 11:35:59] ERROR: failed to load configuration file '/etc/php-fpm.conf' ERROR : stdout | [31-Jul-2016 11:35:59] ERROR: FPM initialization failed ERROR : stdout | [60G[[0;31mFAILED[0;39m] ERROR : Command `sudo -H -u root -- /bin/sh -c cd\ \~root\ \;\ /etc/init.d/php-fpm\ restart` failed. (exit status: 1) ERROR : execute[/etc/init.d/php-fpm restart] Failed.
うーむ、なぜだろう。
実行権限、所有者、グループに間違いはないことは確認済みです。
解決策
調査したところ、SELinuxが悪さをしていたようです。
コマンドを叩いて現状を確認してみます。
$ getenforce Enforcing
SELinuxが有効のままでした。
そのため、Permissiveモードにしてみます。
$ setenforce 0 Permissive
変わっていたので、itamaeを再実行してみたところ正常に実行されました。
Linuxの知識が乏しいですが、SELinuxはよく邪魔者扱いされますが
実際OFFのままでもいいのでしょうか?難しいところです。