2017-07-21 25 views
0

Google Cloud Storage(GCS)のドキュメントを読みましたが、私は非常に混乱しています。私はとSQLテーブルからデータをバックアップするために、単純なPHPスクリプトを使用していますGoogle Compute EngineからGoogle Storageへのファイル転送

前:

は私が状況を説明してみましょう。 1時間ごとに。その後私は自分のftpサーバに送った。 今すぐ Googleのニアラインコールドストレージに送信してください。スクリプトは簡単だった前

、空想何もほんの少しのPHP

passthru('curl --connect-timeout 30 --max-time 3600 -T '.$file_path.' "ftp://'.$ftp_server['user'].':'.$ftp_server['pass'].'@'.$ftp_server['ip'].':'.$ftp_server['port'].$ftp_server['path'].'/'.$filename.'.gz"', $status_result); 

は今、私はGoogleのクラウドAPIを読んで、それはGZを送信するように私は、私のPHPスクリプトを変更する実際の方法の非常に混乱していますファイルをニアラインコールドストレージに転送します。

私は、この読み取り:

  • https://developers.google.com/api-client-library/php/

    をし、私は次の質問を持っているそれは私がそれをどのように行うのですか、私はGoogleのAPIが含まれるように持っていることを述べていますか?この例では、 "$ composer require google/cloud"というコマンドを使用してPHPファイルに書き込む必要があります。 "Google \ Cloud \ ServiceBuilder;を使用します。"しかし、私はサーバー上でコンポーザーを使用していません。サーバーは純粋なPHPで書かれています。

    1. 単純なphpファイル(たとえばhistory_dump.php)を使用している場合、外部リンクとしてGoogleクラウドAPIを含めるにはどうすればよいですか?
    2. 私は今それをやったことはSQL - > csv - > gzです、GCSにGZファイルを送ることはできますか?どうやって?

理由だけではなく、小さなスクリプトを使用して保管しないで、事前

+0

を私も今はなくPHPスクリプトを書かれていますHTTP/1.1 401不正なX-GUploader-UploadID:******** _ 7hxso Vary:X-Origin WWW-Authenticate:Bearer realm = "https:// accounts。 google.com/ "、error = invalid_tokenコンテンツタイプ:application/json;文字列の長さ:249日付:金曜日、2017年7月21日14:50:50 GMTサーバー:UploadServer {"エラー":{"エラー":[{"ドメイン": "グローバル"、 "理由": "authError"、 "message":無効な資格 "、" locationType ":"ヘッダー "、"場所 ":"認可 "}]、" code ":401、" message ":"無効な資格 "}} – thefolenangel

+0

' HTTP 401 Unauthorized'応答は、認証に正しい資格情報を渡していないことを示します。あなたは['Authentication'](https://cloud.google.com/docs/authentication/)と[' Application Default Credentials'](https://developers.google.com/identity/protocols/application- default-credentials)を使用して、API呼び出しの認証情報を設定してCloud Storageに渡す方法を理解してください。 – Tuxdude

答えて

1

でいただきありがとうございますか! GCEにはgsutilがインストールされています。これを使用してファイルをGCSに転送できます。これを試してみてください:AUTHが動作するために、あなたは、インスタンスのサービスアカウントがGCSにアクセスするためにスコープされていることを確認する必要があります、

passthru('gsutil cp '.$filepath.' gs://bucket/', $status_result); 

注、以下を参照してくださいhttps://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#changeserviceaccountandscopes

+0

こんにちは私はあなたのコメントが非常に関連していると思う、私は初心者のPHPデベロッパーです。そこで私は、system()、exec()、ofc passthru()などのunixコマンドを呼び出すために使用できる関数を読みました。 しかし、私はあなたが言ったように、私はそれを書いても、何かを見逃しています。私は私の認証が正しくないと思う、スクリプトを実行した後、それはエラーである '1'を返す。 現在、「ストレージ」の「クラウドAPIアクセススコープ」は「読み取り専用」に設定されていますが、問題はこれにありますか? – thefolenangel

+0

これを実行すると、デバッグのためのもう少しの情報が得られます。 passthru( "gcloud -h"、$ status_result2); と私はそれが実際に動作する結果変数をエコーし​​ますか? – thefolenangel

+0

それは助けていただきありがとうございます!私の他の質問は、サービスアカウントのスコープに関連していました >たとえば、devstorage.read_onlyスコープでVMを作成した場合、サービスアカウントに書き込み権限がある場合でもバケットに書き込もうとすると失敗します。バケツ。 devstorage.full_controlまたはdevstorage.read_writeが必要です。 – thefolenangel

関連する問題