PRESSMAN*Tech(プレスマンテック)

東日本橋の制作・開発会社 プレスマンのスタッフブログ

カテゴリー:制作実績

Slackに溜まり続けたファイルをLambdaでサクッと消してみる

はじめに

こんにちは。CTOの穴原です。 弊社では1年半くらい前からSlackを導入し、使用しています。 おかげでリモートワークをする方も増え、働き方も多用になってきました。
(特にママさんワーカーが増えました!)

Slackをフリープランで使用していると、ストレージ容量制限を超えて怒られてしまいます。 最近アップロードしたファイル以外は一括削除したい + 継続的に削除が走るようにしたい、ということで、SlackAPI × Lambdaで実装してみました。

Slack API を使ってみる

まずは、Slack APIを使ってみます。

今回はfiles.listでファイルの一覧を取得し、files.deleteで対象のファイルを削除する、という流れでやってみようと思います。 (APIの使い方はここ

Slack APIのメソッドの引数はtokenがRequiredになっているので、取得しておきましょう。*1 (tokenの取得はここから)

Lambda

Lambdaで関数を作成します。 SlackのBluePrintも用意されているのですが、それほど難しくないので、今回は一から作成しました。

Nodeのコードはこんな感じ。

'use strict';

const moment = require('moment');
const request = require('request');

// slackのトークン
const TOKEN = 'xxxxxxx';
// 何日前までのファイルを残すか
const DAY = 365;
// 一度の実行で消す最大ファイル件数
const FILE_MAX = 1000;

/* イベント発火時に呼ばれるハンドラ */
exports.handler = (event, context, callback) => {
    //requestオプションを定義
    let options = {
        url    : 'https://slack.com/api/files.list?token=' + TOKEN + '&count=' + FILE_MAX + '&ts_to=' + getBeforeTimeStampByDay(DAY),
        method : 'GET',
        json   : true,
    };

    //ファイルリスト取得リクエスト送信
    request(options, function (error, response, body) {
        if(0 < body.files.length){
            // 1ファイル毎に削除
            body.files.forEach((val) => {
                deleteSlackFile(val.id);
            });
        }
    });
};

/**
 * ファイルの削除処理
 */function deleteSlackFile(id) {
    //requestオプションを定義
    let options = {
        url     : 'https://slack.com/api/files.delete',
        method  : 'POST',
        json    : true,
        form    : {"token":TOKEN, 'file':id},
        headers :{'Content-Type':'application/json'}
    };

    request(options);
}

/**
 * 指定した数値(日単位)過去のタイムスタンプを返却する
 */function getBeforeTimeStampByDay(day) {
    return moment().unix() - 60*60*24*day;
}

イベントのトリガーとしては、CloudWatch Eventsを使ってみます。 今回は日次で動いてくれれば良いので、スケジュール式は rate(1 day) としておきます。

削除対象のファイルが多いと、files.deleteでタイムアウトになることもあるので、タイムアウト時間を多めに設定しておきます。

あとは、日次でCloudWatchが動作していることが確認できれば完成です。 Slackのファイルを確認すると削除されていることが確認できます。*2

さいごに

これでSlackに怒られなくて済む!

*1管理者以上の権限を保持したユーザーのtokenでないと、他ユーザーがアップロードしたファイルを削除できない
*2privateファイルは削除できない(有料ならいける?)

【新着事例紹介】スポーツオーソリティ様 NEW MODEL ランニングシューズ総選挙

本日、スポーツオーソリティ様の「NEW MODEL ランニングシューズ総選挙」キャンペーンが開始されました。

スポーツの秋にぴったり! あなたの”推しシューズ”に一票を。
抽選でハワイ旅行やMP3プレーヤーが当たる!!

なんと! それだけではなく店頭で購入すると、ブランドおすすめグッズが先着でもらえる!うれしい企画になっています。

弊社では、システム開発からサイト構築までをお手伝いさせていただきました。

早速ランニングシューズを購入して、
みんなで健康の秋を満喫したいと思います!

皆様も是非、一票を投票してみては!

 

クライアント様:スポーツオーソリティ

提供サービス
投票システム開発、キャンペーンサイト構築

【新着事例紹介】チュチュベビー様 撮って応募!〜チュチュフォトコンテスト〜

弊社サービス、画像投稿キャンペーンサービス「PicPo!」をご利用いただいた事例をご紹介致します。


チュチュベビー様40周年を記念
して、さまざまな企画目白押し!ですが、
弊社では、お子様のかわいい画像をみんなでシェアしていただける、画像投稿キャンペーンをご提供させていただきました。

facebook、twitterのアカウントをお持ちでしたら、簡単に応募できるキャンペーンです。
第1回のテーマは、「思わず笑顔が生まれるおもしろ画像」。

まだ始まったばかりですので、どんどん応募してみては!
賞品はなんと!!
オリジナルQUOカード(5000円分)&フォトブック無料クーポン券 10名様
とのことです!

応募する画像(子供!?)がない方も、どうぞ癒されてみては(^^)
クライアント様:ジェクス株式会社様
代理店様:株式会社シグナル様


ご提供サービス
ソーシャルキャンペーンツールPicPo!

【新着事例紹介】株式会社トライアロー様 「転ジニア」サイトリニューアル

弊社NOLOSI(WordPressでレスポンシブデザインサイト構築)をご利用いただいた事例をご紹介致します。

株式会社トライアロー様の求人情報サイト「転ジニア」リニューアルをお手伝いさせていただき、CMSはもちろん、レスポンシブデザインを採用いただきました。

また、プラグイン開発にて、求人情報のcsvインポート機能を実装し、豊富な情報をさらにスピーディーにたくさんのユーザーにご利用していただける環境を構築させていただきました。

クライアント様:株式会社トライアロー

ご提供サービス
NOLOSIWordPressレスポンシブデザインプラグイン開発AWS

貸事務所紹介サイトの運営で営業効率が向上。

株式会社フロンティアキューブ 東京版

東京版:http://www.frontiercube.com/
名古屋版:http://nagoya.frontiercube.com/

貸事務所の仲介で40年近い実績を持つ株式会社フロンティアキューブ様では、お客様からの引き合いの多様性を追求して、貸事務所紹介サイトの運用を開始しました。

続きを読む

興業会社(劇場)に映画の宣伝材料を効率的に提供。宣伝材料管理システムを開発。

▲課題

映画配給会社では、映画作品ごとにポスター、チラシ、プロモーションビデオ等の宣伝材料を興業会社(劇場)に提供します。宣伝材料の実物を送付すると同時に、どうようなツールがあるか事前に通知をしますが、従来は興業会社ごとに異なった資料をエクセルで作成し、メールに添付して通知をしていたため、膨大な時間がかかっていました。

続きを読む

iPadの法人利用の拡大(2)

企業、法人でのアプリの普及、利用、多様化が進むなかで、一度公開したアプリのコンテンツ更新、削除などの効率的な運用が注目されています。

Appstoreのアップデートの画面を見てみると、

・2月分の新商品を追加しました。(2ヶ月遅れで)
・3月の動画を削除しました。
・アイシャドー10色追加しました。
・建物物件を追加しました。

などの一般的な更新作業項目が多く目に付きます。

・バグの解消
・新型iPadに対応
・OS対応

逆に、上記3点などは、当然に更新申請が必要でも仕方ないと思うのですが、
先の4点の更新、追加、削除などは、AppStoreへの申請等のプロセスを経ずに、1日単位で行いたいものです。

アプリのキャンペーン連動、商品リリース、コンテンツ追加・削除・更新など、その度に再申請を行っていては、各種プロモーションとのタイムリーな連動は図れません。
プレスマンでは、これらの課題を、ネイティブ開発とweb標準技術を利用した『更新・配布システムを搭載したサーバ』を提供することで解決します。

・再申請を必要としないアプリの開発、運用
・アプリを常に最新状態に保つドキュメント管理
・3G回線の容量制限に縛られない配布

などのお問合せは、プレスマンまで、お気軽にお問い合わせください。

販促提案から見た、iPad(アイパッド)の法人利用の拡大(1)

iPad新しいデバイスとして、増々注目される、タブレット型PC(iPad)。
プレスマンがお取引する業界での、
iPad(アイパッド)の導入事例に付いて、情報を集めてみました。

まだ、一部ですが、
ノート型パソコン → タブレット型パソコン(iPad)
ケータイ電話 → スマートフォン(iPhone)
という、大きな地殻変動が起きつつあると感じています。

続きを読む

▲ 先頭へ戻る