Shinya Furuwata Blog http://blog.star-flare.com/ A journey to find the next inevitable Sun, 23 Jun 2019 05:06:12 +0000 ja hourly 1 https://wordpress.org/?v=5.2.2 https://blog.star-flare.com/wp-content/uploads/2018/09/cropped-IMG_5516-32x32.jpg Shinya Furuwata Blog http://blog.star-flare.com/ 32 32 FirebaseでCI用のトークンを生成する方法 https://blog.star-flare.com/2019/06/23/generate-firebase-token-for-ci-tools/ Sun, 23 Jun 2019 05:06:06 +0000 https://blog.star-flare.com/?p=673 AWS CodeBuildやCircleCI, Azure DevOpsでFirebaseデプロイを使用する機会があったので、トークンを利用する方法をメモしておきます。

login:ciを使用してトークンを生成します。

[f_prg@XXXX-XXXX-XXXX] $ firebase login:ci

Visit this URL on any device to log in:
https://accounts.google.com/o/oauth2/auth?XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Waiting for authentication...

✔  Success! Use this token to login on a CI server:

FIREBASE_TOKENFIREBASE_TOKENFIREBASE_TOKENFIREBASE_TOKEN

Example: firebase deploy --token "$FIREBASE_TOKEN"

トークンを無効にする方法

https://github.com/firebase/firebase-tools#using-with-ci-systems

こちらにあるように、ログアウトを実行すればトークンは無効になります

firebase logout --token <token>

まとめ

CIツールで使う時には、環境変数や設定ファイルなどに組み込めば使用できます。
]]>
treeコマンドで文字化けしたので対応した https://blog.star-flare.com/2019/05/16/tree-command-garbled/ Thu, 16 May 2019 00:17:01 +0000 https://blog.star-flare.com/?p=641 あるフォルダの一覧を作ろうとしていて treeコマンドでいいだろうと思っていたら 文字化けしまくってしまったので、コマンドのメモです。 -Nオプションが必要でした。
tree -N .

まとめ

簡単にできると思っていたら、全然できなかった話。勉強になりました。

]]>
ACMの更新の連絡がきたので対応しました。 https://blog.star-flare.com/2019/05/15/update-aws-certificate-manager/ Wed, 15 May 2019 02:53:10 +0000 https://blog.star-flare.com/?p=642 「Action Required – Your certificate renewal」という件名のメールが届きました。

メールの本文はこちらです。

Greetings from Amazon Web Services,

You have an AWS Certificate Manager (ACM) SSL/TLS certificate in your AWS account that expires on May 28, 2019 at 12:00:00 UTC. That certificate includes the primary domain blog.star-flare.com and a total of 1 domains.

AWS account ID: 123456789012
AWS Region name: us-east-1
Certificate identifier: arn:aws:acm:us-east-1:123456789012:certificate/AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE

ACM was unable to automatically renew your certificate. The domain owner or someone authorized by the domain owner must take one of the following actions before May 28, 2019 at 12:00:00 UTC. If no action is taken, the certificate will expire, which might cause your website or application to become unreachable.

1. If you can write records into your DNS configuration, create and install DNS-validated certificates to replace all of your existing email-validated certificates. After you add a CNAME record to your DNS configuration, ACM can automatically renew your certificate as long as the record remains in place. You can learn more about DNS validation in the ACM User Guide.[1]

2. If you want to continue using email validation to renew this certificate, the domain owners must use the approval link that was sent in a separate validation request email. That email was last sent on Apr 13, 2019 at 12:38:10 UTC. The link in that email is valid for three days from the time the email was sent. If you did not use the link within three days, go to the ACM console to have AWS resend the validation email. For instructions, see the AWS Support website.[2]

If you have questions about this process, contact the AWS Support Center[3]. If you don’t have an AWS support plan, post a new thread in the AWS Certificate Manager discussion forum.[4]

[1] https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-dns.html
[2] https://aws.amazon.com/premiumsupport/knowledge-center/resend-email-ssl/.
[3] https://console.aws.amazon.com/support
[4] https://forums.aws.amazon.com/forum.jspa?forumID=206
Sincerely,
Amazon Web Services

ACMを更新します。

新しい証明書を作成します。

古いのはemailでの認証をしており、whois公開を外す手間がありましたので
新しいのはDNS認証に変更しました。楽チンです。

AWS CLIで更新します。

configファイルを作成します。

aws cloudfront --region us-east-1 get-distribution-config --id "AAAAAAAAAAAAAA" | jq '.DistributionConfig' > AAAAAAAAAAAAAA-us-east-1.conf

configファイルを編集します。

$ vscode ./AAAAAAAAAAAAAA-us-east-1.conf
ACMCertificateArnCertificateARNを新しく発行したものに編集します。
ViewerCertificateの部分を変更しました。
  "ViewerCertificate": {
    "ACMCertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/NEWAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE",
    "SSLSupportMethod": "sni-only",
    "MinimumProtocolVersion": "TLSv1.1_2016",
    "Certificate": "arn:aws:acm:us-east-1:123456789012:certificate/NEWAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE",
    "CertificateSource": "acm"
  },

ETagを確認して、保存します。

aws cloudfront --region us-east-1 get-distribution-config --id "AAAAAAAAAAAAAA" | jq '.ETag'

ETagを使って、更新します。

EEEEEEEEEEEEは取得したETagです。
aws cloudfront --region us-east-1 update-distribution --id "AAAAAAAAAAAAAA" --distribution-config file://AAAAAAAAAAAAAA-us-east-1.conf --if-match EEEEEEEEEEEE

これで終了です。

古い証明書は、しばらくしたら破棄する予定です。

まとめ

AWSからの通知の対処はしっかりとやっておきましょう。

]]>
firebaseで「Error: HTTP Error: 400, Project ‘xxxxxxxxxxxxxxxx’ is not a Cloud Firestore enabled project.」のエラー対応 https://blog.star-flare.com/2019/05/03/firebase-http-error/ Fri, 03 May 2019 00:17:34 +0000 https://blog.star-flare.com/?p=632 firebase deploy したらエラーが発生。

Error: HTTP Error: 400, Project 'xxxxxxxxxxxxxxxx' is not a Cloud Firestore enabled project.

対処方法

有効にするのを忘れていたので、Firebaseコンソールから有効にしました。

]]>
firebase initで「Error: HTTP Error: 401, Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential.」エラーした時の対応 https://blog.star-flare.com/2019/04/25/firebase-init-error/ Thu, 25 Apr 2019 06:24:44 +0000 https://blog.star-flare.com/?p=630 firebase init を実行したときのエラー結果。

対処

どうやらログイン状態が古いので、再認証をかけることで対応完了。

firebase login --reauth


]]>
JETSON NANO DEVELOPER KITを買ってみた https://blog.star-flare.com/2019/04/16/buy-jetson-nano-developer-kit/ Tue, 16 Apr 2019 05:59:09 +0000 https://blog.star-flare.com/?p=601 機械学習なんか触れることもなかったので、巷でスゴイぞと噂されていたので買ってみました。

公式サイトを見てもいいんですけど、すでにQiitaとかにアップされてるようですね。遅くなったけど、勉強します。

microSDカードにイメージを作成して、書き込みます。

https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write
に書いてある通り、進めてみます。
イメージをダウンロードしたら、1時間ぐらいかかりました。。。
Etcherでインストールして完了です。
この続きはまた次に。
]]>
Elastic Beanstalk PHPで、PHPのバージョンがおかしくなる現象を調べてみた https://blog.star-flare.com/2019/04/10/elastic-beanstalk-php-version-error/ Wed, 10 Apr 2019 07:40:10 +0000 https://blog.star-flare.com/?p=556 はじめに

Elastic BeanstalkでPHPで7.2を起動したところ、おかしい現象がおきたのでメモしておきます。

Elastic Beanstalkを起動すると、下記の画面が確認できます。

サーバにSSHでログインして、PHPのバージョンを確認します。

Warning: Permanently added '10.0.68.89' (ECDSA) to the list of known hosts.
 _____ _           _   _      ____                       _        _ _
| ____| | __ _ ___| |_(_) ___| __ )  ___  __ _ _ __  ___| |_ __ _| | | __
|  _| | |/ _` / __| __| |/ __|  _ \ / _ \/ _` | '_ \/ __| __/ _` | | |/ /
| |___| | (_| \__ \ |_| | (__| |_) |  __/ (_| | | | \__ \ || (_| | |   <
|_____|_|\__,_|___/\__|_|\___|____/ \___|\__,_|_| |_|___/\__\__,_|_|_|\_\
                                       Amazon Linux AMI

This EC2 instance is managed by AWS Elastic Beanstalk. Changes made via SSH
WILL BE LOST if the instance is replaced by auto-scaling. For more information
on customizing your Elastic Beanstalk environment, see our documentation here:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
[ec2-user@ip-10-0-68-89 ~]$ php -v
PHP 7.2.13 (cli) (built: Jan  9 2019 22:12:27) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.13, Copyright (c) 1999-2018, by Zend Technologies

バージョンは、7.2.13と確認できました。

AWS EB CLI でアプリケーションをデプロイします。

業務で使ってるアプリケーションをデプロイしたところ
[f_prg@serverapp] $ eb deploy
Creating application version archive "app-v20180611-822-ga782-190410_150350".
Uploading: [##################################################] 100% Done...
2019-04-10 06:05:13    INFO    Environment update is starting.
2019-04-10 06:06:19    INFO    Deploying new version to instance(s).
2019-04-10 06:06:40    ERROR   [Instance: i-XXXXXXXX] Command failed on instance. Return code: 2 Output: (TRUNCATED)...- /etc/php-7.0.d/30-wddx.ini
    - /etc/php-7.0.d/30-xmlreader.ini
    - /etc/php-7.0.d/aws.ini
    - /etc/php-7.0.d/environment.ini
    - /etc/php-7.0.d/php.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/10_composer_install.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.
2019-04-10 06:06:44    ERROR   [Instance: i-YYYYYY] Command failed on instance. Return code: 2 Output: (TRUNCATED)...- /etc/php-7.0.d/30-wddx.ini
    - /etc/php-7.0.d/30-xmlreader.ini
    - /etc/php-7.0.d/aws.ini
    - /etc/php-7.0.d/environment.ini
    - /etc/php-7.0.d/php.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/10_composer_install.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.
2019-04-10 06:06:44    INFO    Command execution completed on all instances. Summary: [Successful: 0, Failed: 2].
2019-04-10 06:06:45    ERROR   Unsuccessful command execution on instance id(s) 'i-YYYYYY,i-XXXXXXXX'. Aborting the operation.
2019-04-10 06:06:45    ERROR   Failed to deploy application.

ERROR: ServiceError - Failed to deploy application.
エラーしたので、サーバに入って確認してみます。
サーバにログインして、 /var/log/eb-activity.log を確認するのが通常です。
いろいろと調べて2〜3日かかったので、調査の結果でわかった点について書いていきます。
Last login: Wed Apr 10 14:59:51 2019 from ip-10-0-10-74.ap-northeast-1.compute.internal
 _____ _           _   _      ____                       _        _ _
| ____| | __ _ ___| |_(_) ___| __ )  ___  __ _ _ __  ___| |_ __ _| | | __
|  _| | |/ _` / __| __| |/ __|  _ \ / _ \/ _` | '_ \/ __| __/ _` | | |/ /
| |___| | (_| \__ \ |_| | (__| |_) |  __/ (_| | | | \__ \ || (_| | |   <
|_____|_|\__,_|___/\__|_|\___|____/ \___|\__,_|_| |_|___/\__\__,_|_|_|\_\
                                       Amazon Linux AMI

This EC2 instance is managed by AWS Elastic Beanstalk. Changes made via SSH
WILL BE LOST if the instance is replaced by auto-scaling. For more information
on customizing your Elastic Beanstalk environment, see our documentation here:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
[ec2-user@ip-10-0-68-89 ~]$ php -v
PHP 7.0.33 (cli) (built: Jan  9 2019 22:04:26) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

PHPのバージョンが、7.0.33 に下がってる!?

[ec2-user@ip-10-0-68-89 ~]$ which php
/usr/bin/php
[ec2-user@ip-10-0-68-89 ~]$ ls -al /usr/bin/php
lrwxrwxrwx 1 root root 21  4月 10 15:06 /usr/bin/php -> /etc/alternatives/php
[ec2-user@ip-10-0-68-89 ~]$ ls -al /etc/alternatives/php
lrwxrwxrwx 1 root root 16  4月 10 15:06 /etc/alternatives/php -> /usr/bin/php-7.0
[ec2-user@ip-10-0-68-89 ~]$ ls -al /usr/bin/php-*
-rwxr-xr-x 1 root root 4262336  1月 10 07:14 /usr/bin/php-7.0
-rwxr-xr-x 1 root root 3930288  1月 10 07:38 /usr/bin/php-7.2
lrwxrwxrwx 1 root root      25  4月 10 15:06 /usr/bin/php-cgi -> /etc/alternatives/php-cgi
-rwxr-xr-x 1 root root 4205688  1月 10 07:14 /usr/bin/php-cgi-7.0
-rwxr-xr-x 1 root root 3873688  1月 10 07:38 /usr/bin/php-cgi-7.2
-rwxr-xr-x 1 root root    5009  1月 10 07:37 /usr/bin/php-config-7.2

もう一度、Elastic Beanstalkを新規で構築してサーバに入ってみます。

[ec2-user@ip-10-0-108-194 ~]$ php -v
PHP 7.2.13 (cli) (built: Jan  9 2019 22:12:27) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.13, Copyright (c) 1999-2018, by Zend Technologies
[ec2-user@ip-10-0-108-194 ~]$ ls -al /usr/bin/php-*
-rwxr-xr-x 1 root root 3930288  1月  9 22:38 /usr/bin/php-7.2
lrwxrwxrwx 1 root root      25  3月 29 00:24 /usr/bin/php-cgi -> /etc/alternatives/php-cgi
-rwxr-xr-x 1 root root 3873688  1月  9 22:38 /usr/bin/php-cgi-7.2
lrwxrwxrwx 1 root root      28  3月 29 00:24 /usr/bin/php-config -> /etc/alternatives/php-config
-rwxr-xr-x 1 root root    5009  1月  9 22:37 /usr/bin/php-config-7.2
lrwxrwxrwx 1 root root      29  3月 29 00:24 /usr/bin/php-config7 -> /etc/alternatives/php-config7

いくつかのシンボリックリンクが変わっている!?

結論

他のアプリをデプロイすると、PHPのシンボリックリンクが変わらなかったので、業務で使ってるアプリケーションだとおかしくなっていました。一体どこが影響してるのか現在も調査中です。

おまけ

同じ様な現象があったようだ。ナカーマ。

https://serverfault.com/questions/953248/elastic-beanstalk-not-running-correct-php-version

]]>
Amazon LinuxのAMI-IDをAWS CLIで取得する方法 https://blog.star-flare.com/2019/04/06/get-amazon-linux-ami-id-using-aws-cli/ Sat, 06 Apr 2019 08:15:38 +0000 https://blog.star-flare.com/?p=547 cdkでec2を起動するようにしていたところ、AMIのIDや一覧を取得する必要があったので、メモしておきます。

AWS CLIで取得したので、フィルタは下記の通りです。

  • ownerはamazon
  • amiの名前(name)をamzn-ami*
  • descfriptionをAmazon*2018*
  • virtualization-typeをhvm

AWS CLIを実行すると下記の通りです。

$ aws ec2 describe-images --filter "Name=owner-alias,Values=amazon" "Name=name,Values=amzn-ami*"  "Name=description,Values=Amazon*2018*" "Name=virtualization-type,Values=hvm"
{
    "Images": [
        {
            "Architecture": "x86_64",
            "CreationDate": "2018-08-13T19:09:56.000Z",
            "ImageId": "ami-0041c416aa23033a2",
            "ImageLocation": "amazon/amzn-ami-2018.03.e-amazon-ecs-optimized",
            "ImageType": "machine",
            "Public": true,
            "OwnerId": "591542846629",
            "State": "available",
            "BlockDeviceMappings": [
                {
                    "DeviceName": "/dev/xvda",
                    "Ebs": {
                        "DeleteOnTermination": true,
                        "SnapshotId": "snap-09326f109fc250e2a",
                        "VolumeSize": 8,
                        "VolumeType": "gp2",
                        "Encrypted": false
                    }
                },
                {
                    "DeviceName": "/dev/xvdcz",
                    "Ebs": {
                        "DeleteOnTermination": true,
                        "VolumeSize": 22,
                        "VolumeType": "gp2",
                        "Encrypted": false
                    }
                }
            ],
            "Description": "Amazon Linux AMI 2018.03.e x86_64 ECS HVM GP2",
            "EnaSupport": true,
            "Hypervisor": "xen",
            "ImageOwnerAlias": "amazon",
            "Name": "amzn-ami-2018.03.e-amazon-ecs-optimized",
            "RootDeviceName": "/dev/xvda",
            "RootDeviceType": "ebs",
            "SriovNetSupport": "simple",
            "VirtualizationType": "hvm"
        },
        {
            "Architecture": "x86_64",
            "CreationDate": "2018-11-17T01:08:05.000Z",
            "ImageId": "ami-007a27b62715a73d5",
            "ImageLocation": "amzn-ami-ap-northeast-1/957cba359c4af654e937d39e75cbf1778809a16c19297f6b535fb987d92eaf94/137112412989/amzn-ami-minimal-hvm-2018.03.0.20181116-x86_64.ext4.gpt.10g.manifest.xml",
            "ImageType": "machine",
            "Public": true,
            "OwnerId": "137112412989",
            "State": "available",
            "BlockDeviceMappings": [],
            "Description": "Amazon Linux AMI 2018.03.0.20181116 x86_64 Minimal HVM s3",
            "EnaSupport": true,
            "Hypervisor": "xen",
            "ImageOwnerAlias": "amazon",
            "Name": "amzn-ami-minimal-hvm-2018.03.0.20181116-x86_64-s3",
            "RootDeviceType": "instance-store",
            "SriovNetSupport": "simple",
            "VirtualizationType": "hvm"
        },
以下省略...
]]>
SSHの秘密鍵のFinger Printを確認してみた https://blog.star-flare.com/2019/04/02/check-finger-print-secret-key-of-ssh/ Tue, 02 Apr 2019 07:34:55 +0000 http://3.93.106.55/?p=537 使ってる鍵が、本当にあってるかどうか確認したので作業メモです

$ openssl pkcs8 -in ~/.ssh/aws/secret.pem -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
]]>
netstatでListenしてるポートを確認する方法 https://blog.star-flare.com/2019/04/01/check-listen-port-using-netstat/ Mon, 01 Apr 2019 08:17:35 +0000 https://blog.star-flare.com/?p=549 サーバでListenしているポートを調べる必要があったのでメモしておきます。

$ netstat -tanp | grep LISTEN

]]>