tabimoba.net

とあるエンジニアの雑記帳

2019-01-01から1年間の記事一覧

cURLを利用して、MovableTypeのアクセストークンを取得する

MovableTypeのData APIを利用する際に必要となるアクセストークンは以下の方法で取得することが出来ます。 パスワードは、「Webサービスパスワード」を指定します。(管理画面ログイン時のパスワードではないので注意) クライアントIDは、決まったものは無…

Guzzleでリクエスト先から返されたエラーメッセージをtruncateさせずに取得する

Guzzleでリクエスト先からエラーが返された際、そのメッセージがtruncateされてしまい、不都合な場合があります。今回は、このメッセージをtruncateされない状態で取得してみます。 PHP Fatal error: Uncaught GuzzleHttp\Exception\ServerException: Server…

cURLを利用して、Movable TypeのData API経由でファイルをアップロードする

以下の方法で、cURLを利用してMovableTypeへファイルをアップロードすることができます。 curl -X POST \ https://<サイトのURL>/mt/mt-data-api.cgi/v4/assets/upload \ -H "X-MT-Authorization:MTAuth accessToken=<アクセストークン>" \ -F site_id=<サイ…

lxdコンテナをイメージファイル化して、そのままS3バケットへアップロードするスクリプト

環境 Ubuntu 18.04 LTS 前提条件 LXDが利用できる awscliがインストールされている aws configureが完了している IAMロール または IAMユーザーの認証情報が設定済み 実行方法 スクリプトのファイル名が、lxd_publish_image_to_s3.shの場合 # ./lxd_publish_…

OpenVPNの接続・切断をSlackに通知する

はじめに OpenVPNに接続あるいは切断された際に、以下のようにSlackへ通知する仕組みを追加してみます。 手順 1. SlackのIncoming Webhooksを用意する 下記URLの手順に従い、Incoming Webhooksを用意します。あわせて、投稿先のワークスペースとチャンネルも…

CentOS7のeasy-rsaが3.0.6にバージョンアップされてからbuild-client-fullができなくなった場合の対応方法

はじめに OpenVPNのために、久しぶりにeasy-rsaでクライアント証明書を作成しようとしたら、次のエラーが出ました。 # ./easyrsa --ns-cert=YES build-client-full hoge.fuga nopass Easy-RSA error: EASYRSA_PKI does not exist (perhaps you need to run i…

さくらのクラウドでアーカイブのゾーン間転送を低コストかつ高速に行う方法(APIを利用)

はじめに さくらのクラウドは、アーカイブ(スナップショット)のゾーン間転送に対応していますが、現時点(2019年10月5日時点)における公式な手順としては、コントロールパネル上から行う方法しかなく、APIのみでゾーン間転送を行う方法がありません。 代…

GCPのCloud Text-to-Speech APIを利用する簡単な方法(cURLを利用)

はじめに GCP(Google Cloud Platform)には、Cloud Text-to-Speechというテキストから音声に変換するサービスがあります。 今回は、cURLを利用し、とりあえず難しいことを考えずにサクッと使ってみます。 事前準備 Cloud Text-to-Speech APIドキュメントの「…

certbot-dns-sakuracloudを利用したLet's Encrypt証明書更新に失敗する場合の原因と対応方法

はじめに DNSサーバとしてさくらのクラウドDNSを利用している場合、certbot-dns-sakuracloudを利用することで、DNS認証によるLet's Encryptの証明書追加および更新を自動化することができますが、更新時に以下のようなメッセージが表示され、証明書の更新に…

Ubuntu18.04LTSにNode-REDをインストールして立ち上げる

SnapでNode-REDをインストールする # snap install node-red Node-REDを起動する # snap start node-red 以降は、 http://<IPアドレス または FQDN>:1880/ へWebブラウザからアクセスすることでNode-REDが利用可能です。</ipアドレス>

Systemdで作業ディレクトリを指定する方法

docker-composeを実行する際など、カレントディレクトリ(作業ディレクトリ)指定したい場合があります。 このような場合は、実行するserviceファイルに対して、WorkingDirectoryを[service]に記述します。 例 [Unit] Description=hoge After=fuga.service R…

LXDコンテナやイメージを一括削除する方法

コンテナ lxc delete --force $(lxc list --format csv -c "n") イメージ lxc image delete $(lxc image list --format csv -c "l")

LXDストレージプールのbtrfsボリュームの透過圧縮を有効化する方法

まず、透過圧縮を行いたいボリュームを特定します。 # lxc storage list +---------+-------------+--------+--------------------------------+---------+ | NAME | DESCRIPTION | DRIVER | SOURCE | USED BY | +---------+-------------+--------+--------…

PHPのAWS-SDKからIAMロールを使用する方法

PHPのAWS-SDKからIAMロールを仕様する方法です。ググっても適切な情報がなかなか見つからなかったので書きました。 対応 IAMロールを利用する場合は、インスタンス作成時にprofileを渡さない。(書かない) →profileを書いているとIAMロールではなく、実行環…

Ubuntu 18.04 LTS + MariaDB 10.1な環境へRundeckをインストールする

Ubuntu 18.04LTSへRundeckをインストールする方法です。DBMSはMariaDB 10.1を使用します。 なお、MariaDBはRundeck専用で、他の用途には共有しないものとします。 OpenJDK 8のインストール 以下のコマンドを実行し、OpenJDK 8をインストールします。 # apt u…

SeleniumBasicでChromeの実行バイナリを指定する

2019/6/6頃にChrome 75がリリースされましたが、これによりSeleniumが正常に動作しない(Chrome 75版のChromeDriverに変更しても正常に動作しない)問題が発生したため、一時的にSRWare Ironに切り替えることにしました。 以下のコードは、SeleniumBasicでCh…

AWS RDS for Oracleでメンテナンスウインドウの開始時刻を変更する

※ここでの「メンテナンスウインドウ」とは、RDSの機能としてのメンテナンスウインドウではなく、Oracle Databaseとしてのメンテナンスウインドウを指しています。 RDS for OracleのスケジューラーはEST5EDT(米国東部標準時)であるため、設定された時刻の13…

Windows 10上のVirtualBoxのNATが正常に動作しなくなった(不具合が発生した)際の解決方法

Windows 10の一部の端末でVirtualBoxのネットワークが正常に動作しなくなる現象が発生したため、その解決方法をメモとして記載します。 現象 Windows 10環境上のVirtualBox上で動作するゲスト(VM)のネットワークアダプターがNATの場合に、インターネットや…

Windows Server 2012 R2 EssentialsへSystem Center Endpoint Protectionをインストールする方法

はじめに Windows Server 2012 R2 Essentials環境へSystem Center Endpoint Protection (SCEP) をインストールしようとすると(scepinstall.exeを実行すると)、以下のようなメッセージが表示され、インストールすることができません。 対応方法 scepinstall…

PHPからaws-sdkで実行したLambda関数の戻り値を取得するには

はじめに AWS SDK for PHPを利用してLambda関数を実行(invoke)した際の戻り値をどのように取得すればよいのかという情報を探してみたのですが、なかなか情報が見つかりませんでした。 ※API Gatewayを利用してLambda関数を実行して戻り値を取得するという方法…

aws-cliやaws-sdkが動かない時は時刻が正しいか確認する(原因と対応)

VirtualBox等の仮想化環境でawsコマンド(aws-cli)やaws-apiライブラリを使用したシステムよりAWSの各種APIへアクセスすると、次のようにエラーが表示される場合があります。 An error occurred (RequestTimeTooSkewed) when calling the ListBuckets operati…

Nginx起動時に重複している設定がないのに「"xxx" directive is duplicate」と言われるときに確認すること

現象 Nginx起動時に重複している設定がないのに次のように怒られてNginxが立ち上がらない場合があります。 -- Unit nginx.service has begun starting up. Mar 25 00:26:37 hoge nginx[1742]: nginx: [emerg] "proxy_buffer_size" directive is duplicate in…

AWS Lambda Layers上でHeadless Chromeを動かすいくつかの方法

メモとして。 chrome-aws-lambda https://www.npmjs.com/package/chrome-aws-lambda Lambda layersでの対応手順の記載もあり、Lambda layersを使うのであればこちらがおすすめ。 同梱されているChromiumのバージョンも新しめ。 serverless-chrome https://gi…

ローカルからリモートホストのJMXへSSHポートフォワーディング経由で接続する

Tomcatへの設定追加 catalina.shに対して以下の設定を追加します。 ※改行せず、1行でつなげます。 CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=8180 -Dcom.sun.management.jmxremote.rmi.port=…

LISTAGG関数の戻り値がUNICODE文字列となる問題とその対応

OracleのLISTAGG関数の戻り値が、以下のように半角スペースが含まれるように見える文字列、あるいはUNICODE文字列(エンコーディングされた文字列)となる場合があります。 SELECT LISTAGG(HOGEFIELD, ',') WITHIN GROUP (ORDER BY HOGEFIELD) FROM HOGETBL …

Debian, Ubuntuへapt(-get)でAdoptOpenJDKをインストールする方法

はじめに Oracle JDK 8のサポート終了や、Oracle JDKの有償化に伴い、AdoptOpenJDKが注目を浴びています。例えば、豪Atlassian社のJiraやConfluence等は、AdoptOpenJDKをサポートしています。 AdoptOpenJDKのインストールは、AdoptOpenJDKのサイトからtar+gz…

Dockerの上にLXDコンテナを作成する(ことはできない)

Docker in Dockerというものがあるので、LXD in Dockerをやりたくなった。 結局できなかったけれど、その記録として。 Dockerコンテナを作成する # docker pull ubuntu:16.04 # docker run -ti -d --privileged --name ubuntu ubuntu:16.04 # docker exec -t…

OracleでISO 8601形式の日付を出力する

timestamp型の日時をUTCへ変換したうえでISO 8601形式で出力します。 前提条件 ISO 8601形式で表示させる日付列の型はtimestamp型であること 日付列の各行の値は、DBMS(Oracle)のタイムゾーンに準じたものであること(例えば、DBMSのタイムゾーンがJSTである…

Oracle上にあるテーブルをISO 8601形式の日付で範囲指定して絞込検索を行う方法

日付を利用した絞込において、ISO 8601型式の日付を検索に利用すると、タイムゾーンにかかわらず等しい検索結果を得ることができます。 条件 テーブル上の日付はtimestamp型でセットされている(=DBのタイムゾーンに応じた日付がセットされている)こと 検索…

Ubuntu18.04のLXDコンテナ上でDockerが起動しない問題の対応

以下の記事の続きです。 LXDコンテナでDockerが起動しない(起動に失敗する)問題への対応方法 https://qiita.com/tabimoba/items/4f7af774145c0dbd70d9 前回は特定のserviceファイルを変更するという方法で書きましたが、この方法でも解決しない場合があり…