富士通クラウドダイレクトブログ

初心者エンジニア向けTechBlog

富士通クラウドダイレクトブログ

初心者エンジニア向けTechBlog

英語力ゼロの初心者エンジニアにBoxからクラウドへのバックアップを教える話

皆さん、こんにちは! 富士通クラウドダイレクトの中の人Sです…。
最近、部屋が寒すぎてエアコンをつけっぱなしにしていたら電気代が大変なことになったので、湯たんぽを導入しました。 パソコンの排熱が暖かいってどこのデータセンターだよ!って思います。

今回は、コンテンツクラウドとして人気のサービス「Box」から某クラウドサービス(AWSとか)にバックアップするお話です。

途中でChatGPTに脱線が見られますが、最後までお付き合いください。

Box2S3でLambdaを使ってファイルを転送するポンチ絵

Boxのデータをクラウドにバックアップ?

先日、たまに行くお店で知り合った初心者エンジニアOさん(32歳)から、LINEで「Sさん!動画ファイルをBoxで共有してるんだけど、無料プランだとそろそろヤバいんで何処かにバックアップできませんか?AWSとか」という質問を受けました。

個人的には、Boxに課金して容量増やせばいいんじゃない?って言いたいのはやまやまでしたが、「AWSにバックアップしたい」という明確なニーズを捻じ曲げるのは良くないと思いましたので、こういうアドバイスをしました。

「BoxからAWS+連携」ってググるといいよ!

我ながら、外資系3社を含むマルチクラウドな返答で素晴らしいな!と思いましたが、さらに質問が!

Boxのサポートコミュニティは英語だった

「Boxのサポートコミュニティ、英語なんだけどコレどういう意味か分かります?」

https://support.box.com/hc/ja/community/posts/360049154094-Box-to-Aws-S3

めんどくさいな!と思いながら、上記のURLをクリックしましたが、当然英語なのでTOEIC300点の私では即答できず、流行りのAI翻訳サービスを使うしかありません。

AI翻訳サービスを使ってみた

「あのな…翻訳サービスというものがあって、そこにココからココまでコピーして、ペーストすると…」と返信したいところですが、冷たい人間だと思われそうだし、さらに質問されそうな気がしたので、翻訳結果そのままではなく会話風にアレンジしてみました。親切ですね!

みなさん、こんxxは。

私は、SDKを使用してBoxフォルダからAWS S3のバケットにファイルを保存しようとしてます。いろいろな方法を試しましたが、javaでやろうとしたらダメでした。どんな情報でもありがたいです。教えて欲しいです。

ちなみに、ローカルマシンにボックスファイルをダウンロードしてアップロードしてみまたらうまくいきました。しかし、わざわざローカルマシンにダウンロードしてから再アップロードするのはダサいのでやりたくないです。ダウンロードしたボックスファイルのストリームオブジェクトをスマートな方法で直接S3バケットにアップロードしたいのです。

続いて、コレに対する回答その1を・・・

回答者1

ふつうは、ローカルにダウンロードしてからS3にアップロードするほうがアクセスしやすくて楽なんだけどな?さらに、アップロードしている間に新しいファイルのリクエストも受け付けられるので、プラットフォーム間の非同期処理がやりやすいんですよ。

ファイルをローカルにダウンロードしないようにする唯一の方法として考えられるのは、新しいSkills API (詳しくは自分でブログとかドキュメントを調べてくれ)またはToken Exchange (詳しくは自分でブログとかドキュメントを調べてくれ)を使用して、ファイルへの一時的な認証リンクを取得し、それがパブリックにアクセス可能なURLをサポートしている場合には、それを使ってS3にパイプライン処理することです。Gitにトークンを晒して漏洩しないようにしてくださいね!

自分でググれ!ってことか。 しかし、概念しか書いてないぞ?不親切だな。 次いってみよう。

回答者その2

BoxがFTPSをサポートしてるの知ってますか? https://community.box.com/t5/Upload-and-Download-Files-and/Using-Box-with-FTP-or-FTPS/ta-p/26050 を参照

Yah○○!掲示板でも、よくこういうコメントをつける人はいらっしゃいますね。 この情報と同じですね。 違うんだよ。。 次行ってみよう。

回答者3

FTPS?いや、そんなこと聞いてないだろ。

https://community.box.com/t5/Upload-and-Download-In の結果を見ると、BoxからAmazon S3にファイルをアップロードする特定のイベントに基づいて、CouchdropのAPIとWebhooksを使用できるって書いてあります。

ちなみに、CouchdropはBoxのパートナーなんだけど私はここの中の人です。

鋭いツッコミをしてきたので期待してしまったけど、オチで自社の有料サービスに誘導してるような。。。

宣伝乙(死語)ってやつ?

次行ってみよう。

回答者4

その後何か進展あった? 私もいろんなユースケースを見た結果を言いますね! Boxからs3にファイルを移動させて機械学習処理をする場合、ファイルサイズがデカいと転送速度が遅いからあまりいい方法じゃないと思うよ。

そ、それを言うためにわざわざ?

っと、もう一件回答がありますので次行ってみよう。

回答者5

お世話になります。 亀レス失礼します! 一件アドバイスさせてもらうと、移行ツールを使用して、ボックスからS3にファイル転送するのがいいですよ。

って課金しないとダメですか!

とりあえず、この情報をOさんにLINEで送ったら数分後に返信がありました。

突然のChatGPT登場

「Sさん!ChatGPTって使ったことあります?これで聞いてみたらいいのかな?」

ChatGPTを使う程度の英語力があるのかよ!

適当なフレーズを教えてあげたら、こういうのが生成されたとのこと。

に、日本語で聞いてくださいよ!

Box is a cloud content management platform that allows users to store, share, and collaborate on files and documents. Box provides a Webhooks API that allows developers to receive notifications when specific events occur on Box, such as file uploads or changes.

You can use Box Webhooks in combination with the Amazon S3 API to automate the transfer of files from Box to S3. Here are the general steps to set up a webhook to transfer files from Box to S3:

Set up an Amazon S3 bucket to store your files. You can do this using the AWS Management Console or the AWS CLI.

Create an AWS Lambda function that will receive the webhook notifications and transfer the files to S3. You can create the function using the AWS Management Console or the AWS CLI.

Create a Box webhook that will send notifications to the Lambda function when a file is uploaded or modified in a specific folder.

Test the webhook to ensure that the files are being transferred correctly.

Here are some additional details on each step:

Setting up an S3 bucket: To create an S3 bucket using the AWS Management Console, log in to your AWS account and navigate to the S3 service. Click the "Create bucket" button and follow the prompts to configure your bucket. You can also create a bucket using the AWS CLI by running the "aws s3api create-bucket" command.

Creating an AWS Lambda function: To create a Lambda function using the AWS Management Console, log in to your AWS account and navigate to the Lambda service. Click the "Create function" button and follow the prompts to configure your function. You can also create a function using the AWS CLI by running the "aws lambda create-function" command.

Creating a Box webhook: To create a webhook using the Box API, you will need to use an OAuth2 access token and make a POST request to the /webhooks endpoint. You will need to specify the URL of your Lambda function as the webhook target, as well as the Box folder ID that you want to monitor. Once the webhook is created, Box will send a POST request to your Lambda function whenever a file is uploaded or modified in the specified folder.

Testing the webhook: To test the webhook, you can upload a file to the specified >Box folder and verify that it is transferred to the S3 bucket. You can also check >the logs of your Lambda function to see if any errors occurred during the transfer.

Note that these are general steps, and the specific commands and configuration options may vary depending on your operating system, programming language, and other factors. It is important to consult the Box and AWS documentation for more detailed instructions and best practices.

ChatGPTってすごいな(小並感)。

ついでに、ChatGPTで翻訳サービスも探してくれよ…と言いたかったです。

再びAI翻訳で日本語化

だんだん面倒くさくなってきたので、会話風にリライトするのは省略します。
なお、ChatGPTは英語が得意なので、英語で出力した結果をAI翻訳サービスで日本語化するという方法論は、今のところ合理性があるようです。。

Boxはクラウドコンテンツ管理プラットフォームで、ユーザーはファイルやドキュメントの保存、共有、共同作業ができる。BoxはWebhooks APIを提供しており、開発者はファイルのアップロードや変更など、Boxで特定のイベントが発生したときに通知を受け取ることができる。

Box WebhooksをAmazon S 3 APIと組み合わせて使用すると、BoxからS 3へのファイル転送を自動化できます。BoxからS3へのファイル転送用のWebhookを設定する一般的な手順は次のとおりです。

1.ファイルを保存するAmazon S 3バケットを設定します。これを行うには、AWSマネジメントコンソールまたはAWS CLIを使用します。

2.webhook通知を受信し、ファイルをS 3に転送するAWS Lambda関数を作成します。AWSマネジメントコンソールまたはAWS CLIを使用して関数を作成できます。

3.特定のフォルダでファイルがアップロードまたは変更されたときに、Lambda 関数に通知を送信するBoxウェブフックを作成します。

4.webhookをテストして、ファイルが正しく転送されていることを確認します。

各手順の詳細を次に示します。

1.S3バケットのセットアップ:AWSマネジメントコンソールを使用してS 3バケットを作成するには、AWSアカウントにログインし、S3サービスに移動します。「バケットの作成」ボタンをクリックし、プロンプトに従ってバケットを設定します。AWS CLIを使用して「aws s3 api create-bucket」コマンドを実行してバケットを作成することもできます。

2.AWS Lambda関数の作成:AWSマネジメントコンソールを使用してLambda関数を作成するには、AWSアカウントにログインしてLambdaサービスに移動します。「Create関数」ボタンをクリックし、プロンプトに従って機能を設定します。AWS CLIを使用して「aws lambda create-function」コマンドを実行して関数を作成することもできます。

3.Box webhookの作成:Box APIを使用してwebhookを作成するには、OAuth 2アクセストークンを使用して、/webhooksエンドポイントにPOSTリクエストを行う必要があります。ウェブフックターゲットとしてLambda関数のURLと、モニタリングするBoxフォルダIDを指定する必要があります。ウェブフックが作成さ>れると、指定したフォルダでファイルがアップロードまたは変更されるたびに、BoxはLambda関数にPOSTリクエストを送信します。

4.webhookのテスト:webhookをテストするには、指定したBoxフォルダにファイルをアップロードし、S3バケットに転送されることを確認します。Lambda関数のログをチェックして、転送中にエラーが発生したかどうかを確認することもできます。

これらは一般的な手順であり、特定のコマンドおよび設定オプションは、オペレーティングシステム、プログラミング言語、およびその他の要因によって異なる場合があります。詳細な手順とベストプラクティスについては、BoxとAWSのドキュメントを参照することが重要です。

AIってすごいですね(小並感)。。
Google検索で日本語のドキュメントも色々探してみましたが、某有名技術ブログ等の記載内容をうまくサマリーしたらこうなる?感じがします。。

Oさんにこの翻訳結果を送り付けるとともに、あとはChatGPTともっと仲良くしてくれとコメントしておきました。 ※ChatGPTの生成した結果が正しいかどうかは、ご自身で判断してください。

AI翻訳は、各社のサービスでもジャンル的得手不得手があるんだろうな(日常会話的な文章より取説っぽいドキュメントが得意とか)…と感じました。

結論

箇条書きにするとこういうことです。

 ・BoxからAWSへのバックアップは結構面倒
 ・BoxからS3にWebhookでバックアップする場合AWSのLambdaを使う
 ・一番簡単なのはバックアップサービスに課金すること
 ・わからないことはChatGPTとAI翻訳で解決してみるのも手

以上です。

Boxの個人向け無料プランだと、APIは使えないので、法人向けの低価格プランBox Businessのご利用がおすすめです。

それでは、また次回もお楽しみに。

最後に宣伝です。
FJcloud-V無料トライアル実施中! ぜひ、この機会に国産クラウドFJcloud-Vをお試しください。
こちらをクリック↓↓↓↓↓↓↓