DevEco Studio エンドクラウド 共同開発 クラウドストレージ

DevEco Studio エンドクラウド 共同開発 クラウドストレージ

オープンソースの詳細については、以下をご覧ください。

51CTO オープンソース基本ソフトウェアコミュニティ

​​https://ost..com​​

序文

前回の記事では、AppGallery Connect (AGC) を OpenHarmony アプリケーションに統合して、アプリケーションの基本機能である認証サービス、クラウド機能、クラウド データベースを構築する方法について説明しました。これらの機能を適用することで、アプリケーションの迅速な反復と起動を強化できます。この記事では、OpenHarmony で AGC のクラウド ストレージ サービスを使用する方法について説明します。

1. 環境

  • DevEco Studio 3.1 ベータ 1(V3.1.0.200)
  • 触覚インテリジェンス IDO-EVB3568-V1 開発ボード
  • カスタム teui コンポーネント ライブラリ
  • エンドクラウドの共同開発とアプリケーション作成(クラウド機能を含む)​​
  • クラウドデータベースのエンドツークラウド共同開発

2. クラウドストレージ

クラウド ストレージは、AGC プラットフォームの基本的なアプリケーション構築機能のカテゴリに属します。これは、写真、オーディオ、ビデオ、またはその他のユーザー生成コンテンツを保存するために使用できる、スケーラブルでメンテナンスフリーのクラウド ストレージ サービスです。従来のモノリシック アーキテクチャやマイクロサービス アーキテクチャと比較して、サーバーレス アーキテクチャでは、開発者はビジネス機能の実現に集中できます。例えば、クラウドストレージサービスを利用する場合、ストレージサーバーの開発、導入、運用・保守、容量拡張などを気にする必要がありません。クラウド ストレージは、クライアント SDK とサーバー SDK を提供します。開発者はクラウド ストレージ SDK を使用して、既存または既存のアプリケーションに安全で信頼性の高いファイルのアップロードおよびダウンロード機能を実装できます。

3. AGCプラットフォームでクラウドストレージを有効にする

クラウド ストレージ サービスを初めて使用する場合、サービスを手動でアクティブ化する必要があるという点で、クラウド機能やクラウド データベースとは異なります。 DevEco Studio エンドクラウド コラボレーションでは、アプリケーションが最初に作成されたときにクラウド ストレージがアクティブ化されません。クラウド ストレージ開発に必要な依存パッケージのみが導入されており、エンド サイド アプリケーション アプリケーションの​entry​ディレクトリにある​package.json​ファイルで確認できます。

(1)サービスを有効にする

AppGC コンソールを開きます。 [マイ プロジェクト] リストで、記事「エンド クラウド共同開発アプリケーションの作成 (Cloud Functions を含む)」で作成されたエンド クラウド統合開発エクスペリエンス プロジェクトの下にある AppCloud エンド クラウド共同アプリケーションを開きます。左側のメニューバーで、[Serverless] > [Cloud Storage] を選択します。 「クラウド ストレージ」ページで、「今すぐアクティブ化」をクリックして、クラウド ストレージ サービスを有効にします。

クラウド ストレージ アクティベーション インターフェイスにストレージ インスタンス名を入力し、デフォルトのデータ処理場所を設定します (この項目はエンド クラウド共同開発の作成時に設定されており、ここでは無視できます)。ストレージ インスタンス名は、次の規則を満たす必要があります。

  • 名前は数字または文字で始まり、小文字の英語、数字、および「-」のみで構成され、「-」で終わることはできません。長さは 3 文字以上、57 文字以下である必要があります。
  • 名前にIPアドレスは使用できません
  • 名前はグローバルに一意である必要があり、作成後に変更することはできません。

ストレージインスタンス名を入力した後、「次へ」ボタンをクリックして、デフォルトのセキュリティポリシー表示インターフェイスに入ります。デフォルトのセキュリティ ポリシーは、アクティブ化されると変更できません。デフォルトのセキュリティ ポリシーでは、認証されたユーザーがすべての読み取りおよび書き込み操作を実行できるようになります。カスタマイズされたセキュリティ ポリシーが必要な場合は、ユーザー データを保護するためにサービスを有効にした後、[セキュリティ] タブでセキュリティ ポリシーを構成する必要があります。

「完了」ボタンをクリックすると、クラウド ストレージ サービスが正常にアクティブ化されます。サービスがアクティブ化されると、AGC はデフォルトのストレージ インスタンスを作成します。デフォルトのストレージインスタンス名は、クラウドストレージサービスをアクティブ化するときに開発者が入力したインスタンス名 + 「- 5 つのランダムな数字と文字」です。

クラウド ストレージ インターフェイスの [フォルダーの追加] ボタンを使用してフォルダーを作成し、[ファイルのアップロード] ボタンを使用してファイルをアップロードできます。

(2)安全保障戦略

クラウド ストレージが提供するセキュリティ ポリシーは簡潔で明確な形式であり、認証を通じて特定のパスでのデータへのユーザー アクセスを制御できます。

セキュリティ ポリシー ルールを構築するときには、次の 2 つのデータ タイプが必要です。

  • null 値が存在しない場合は、null 識別子が使用されます。
 // ログインしていないため、閲覧する権限がないことを示します
読み取りを許可: request.auth != null の場合;
  • bool ブール型。true と false の 2 つの値が含まれます。
 // どのような場合でもアクセスできることを示します
読み取りを許可する: true の場合;

Cloud Storage は、次のようなセキュリティ ルールを記述するためのテンプレート化された方法を開発者に提供します。

  • Match は、ストレージ インスタンスの下のファイル パスを識別するために使用されます。ワイルドカードを使用して、特定のパスの下にある任意のファイルを指定することもできます。
  • allow は、指定された条件が満たされた場合に、ユーザーにファイル パスへの読み取りおよび書き込み権限を許可するために使用されます。
  • 読み取り権限は、取得権限と一覧権限に分けられます。設定時に、ビジネスニーズに応じて単一ファイルの読み取り権限を設定し、大量のクエリを拒否することができます。
  • 書き込み権限は、作成権限、更新権限、削除権限に分けられます。設定時には、ビジネスニーズに基づいて新しい権限を追加することしかできず、更新または削除することはできません。
 // インスタンス内のすべてのファイルに読み取りと書き込みが許可されていることを示します
エイジーシーストレージ[
一致: / {バケット} / {パス=** } {
読み取り書き込みを許可します: trueの場合;
}
]
// インスタンス内のすべてのファイルの読み取りまたは書き込みが許可されていないことを示します
エイジーシーストレージ[
一致: / {バケット} / {パス=** } {
読み取り書き込みを許可します: falseの場合;
}
]

// ファイル分割ルールの設定
エイジーシーストレージ[
// スプラッシュパス内のsplash.jpgファイルを一致させる
一致: / { bucket } / splash / spalshjpg {
取得を許可: trueの場合;
許可リスト: falseの場合; // リストクエリはサポートされていません
書き込みを許可:要求された場合認証!= null
}

// スプラッシュパス内の任意のファイルに一致
一致: / {バケット} /スプラッシュ/ {パス=** } {
読み取り書き込みを許可します: trueの場合;
}
]

クラウド ストレージ インターフェイスで、[セキュリティ] タブを開き、クラウド ストレージのセキュリティ ポリシーを構成します。著者はクラウド ストレージに 2 つのフォルダーを作成しました。 Splash は、アプリケーションの起動インターフェイスの表示イメージを保存するために使用されます。フォルダーの権限は、すべてのユーザーに単一ファイルの表示権限が与えられ、書き込み操作にはログインした承認済みユーザーのみ操作できるように構成されています。ユーザースペースはユーザーデータを保存するために使用されるため、アクセスするにはログイン認証が必要です。

この時点で、AppGallery Connect プラットフォーム上のクラウド ストレージ サービスの構成は完了です。クロスドメイン設定や静的 CDN アクセラレーション構成などの詳細な操作について詳しく知りたい場合は、公式ドキュメント - Cloud Storage ドキュメント - を詳しくお読みください。

4. クライアントサイド開発

DevEco Studio(以下、DS)を使用して、以前のAppCloudエンドクラウド連携アプリケーションを開き、エンド側アプリケーションアプリケーションを開きます。クライアント側では、DS はプロジェクトの作成時にクラウド ストレージ SDK を導入しました。ただし、クラウド ストレージは後で有効になるため、entry/resources/rawfile ファイルの下の agconnect-services.json ファイルを更新する必要があります。このファイルは、AppGallery Connect コンソールのプロジェクト設定タブでダウンロードして置き換えることができます。 OpenHarmony アプリケーションでクラウド ストレージを使用するプロセスは次のとおりです。

(1)初期化保存例

デフォルトの例を使用しており、デフォルトのインスタンス StorageManagement オブジェクトを初期化するには agconnect.cloudstorage を呼び出す必要があります。

 // エントリ/src/main/ets/service/cloudstorage/CloudStorgaeService.ts
'@hw-agconnect/api-ohos'からagconnectをインポートします
"@hw-agconnect/cloudstorage-ohos"をインポートします

'../AgcConfig'から{ getAGConnect }をインポートします

エクスポートクラスCloudStorageService {

// コンテキスト コンテキスト;パスファイルパス、クラウドデータベースのフィールド値です
パブリック静的initコンテキスト任意パス文字列): Promise <文字列> {
新しいPromiseを返します((解決拒否) => {
getAGConnect (コンテキスト);
const storageManagement = agconnectクラウドストレージ();
...
})
}
}

(2)参照を作成する

初期化が成功したら、StorageManagement.storageReference を呼び出して StorageReference オブジェクトへの参照を作成します。ファイル参照を使用して、ファイルのアップロード、ファイルのダウンロード アドレスの取得、ファイルの削除、ファイルのメタデータの更新などの操作を行うことができます。

 // エントリ/src/main/ets/service/cloudstorage/CloudStorgaeService.ts
'@hw-agconnect/api-ohos'からagconnectをインポートします
"@hw-agconnect/cloudstorage-ohos"をインポートします

'../AgcConfig'から{ getAGConnect }をインポートします

エクスポートクラスCloudStorageService {

// コンテキスト コンテキスト;パスファイルパス、クラウドデータベースのフィールド値です
パブリック静的initコンテキスト任意パス文字列): Promise <文字列> {
新しいPromiseを返します((解決拒否) => {
getAGConnect (コンテキスト);
const storageManagement = agconnectクラウドストレージ();
ストレージ管理ストレージ参照()。それから(( ret ) => {
...
})。キャッチ((エラー) => {
拒否(エラー)
})
})
}
}

(3)ファイルのエコー(ダウンロード)アドレスを取得する

AppGallery Connect コンソールの Cloud Storage UI でファイルをアップロードした後、StorageManagement.storageReference を呼び出してダウンロードするファイルへの参照を作成し、StorageReference.getDownloadURL を使用してダウンロード (エコー) アドレスを取得します。

 // エントリ/src/main/ets/service/cloudstorage/CloudStorgaeService.ts
'@hw-agconnect/api-ohos'からagconnectをインポートします
"@hw-agconnect/cloudstorage-ohos"をインポートします

'../AgcConfig'から{ getAGConnect }をインポートします

エクスポートクラスCloudStorageService {

// コンテキスト コンテキスト;パスファイルパス、クラウドデータベースのフィールド値です
パブリック静的initコンテキスト任意パス文字列): Promise <文字列> {
新しいPromiseを返します((解決拒否) => {
getAGConnect (コンテキスト);
const storageManagement = agconnectクラウドストレージ();
ストレージ管理ストレージ参照()。それから(( ret ) => {
ret(パス)。 getDownloadURL() を取得しますそれから(( res ) => {
解決する
})。キャッチ((エラー) => {
拒否(エラー);
})
})。キャッチ((エラー) => {
拒否(エラー)
})
})
}
}

(4)画像の表示

アプリケーションのスプラッシュ起動ページを開きます。 AppCloud 起動ページのデータはクラウド データベースから取得されます。ステータスが「1」の AppCloud データベースのデータの backgroundImg フィールド値を、クラウド ストレージを使用してデータを取得するためのファイル参照である splash/splash.jpg に変更します。次に、スプ​​ラッシュ ページの aboutToAppear() メソッド内のビジネス コードの改善を続けます。

 ...
'../services/cloudstorage/CloudStorageService'から{ CloudStorageService }をインポートします

@エントリ
@成分
構造体スプラッシュ{
...
表示されることについて(){
// クラウド データベース クエリ データの表示
クラウドDBクエリ( getContext ( this ))。その後( ret => {
もし戻り){
これメッセージ= JSON文字列化( ret );
// クラウドストレージ内の画像のエコーアドレスを照会する
クラウドストレージサービスinit ( getContext ( this )、 ret . backgroundImg )。その後( res => {
これメッセージ= JSON文字列化( res );
これ結果背景画像= res ;
これisSkip = true ;
})。キャッチ((エラー) => {
これメッセージ= JSON文字列化(エラー)
})
}
})
}
}

(5)アプリケーションを実行する

アプリケーションを実行するには、触覚インテリジェント IDO-EVB3568-V1 開発ボードを使用します。実行効果は下の図に示されています。

オープンソースの詳細については、以下をご覧ください。

51CTO オープンソース基本ソフトウェアコミュニティ

​​https://ost..com​​

<<:  建設業界におけるエッジコンピューティングの応用価値は何ですか?

>>:  エッジツークラウドがデジタル変革の次の段階をどのように推進するか

推薦する

最近のデデクムの隠れた危険性とリスクを防ぐ方法について話す

Dedecms は、主に 2 つの主要なウェブマスター ネットワークの強力なサポートにより、ウェブサ...

Exabytes が .net ドメイン名を初年度 0.99 ドルで登録

老舗企業のエクサバイトは、これまで2回ほど紹介してきましたが、今回は、新規ユーザーのみ100名限定で...

「スマート企業はクラウドを楽しむ」、初のSAP中国クラウドカンファレンスが開催されました

2019 年 6 月 5 日、上海 - 本日、第 1 回 SAP クラウド カンファレンスが上海で盛...

ガートナー:中国のクラウド価格戦争はインフラと運用のクラウド戦略を変える

近年、中国のハイパースケール クラウド プロバイダーは、他のグローバルおよびローカル クラウド プロ...

美しいウェブサイト最適化プランを作成する方法を共有する

優れたウェブサイト最適化計画を作成するには、オンサイト最適化とオフサイト最適化の 2 つの角度から検...

「共引用」についての私の意見

業界の著名人である呂松松氏(以下、「呂」)が自身のブログに「『共通引用』は『アンカーテキスト』に取っ...

ボストン・グローブ紙が PTC を 2018 年の「最も働きがいのある会社」に選出

PTC (NASDAQ: PTC) は、ボストン グローブ紙の第 11 回年次従業員調査で、マサチュ...

pqhosting: ポルトガルの VPS、月額 3.7 ユーロから、1Gbps の帯域幅、無制限のトラフィック、Windows システム

pq.hosting、このモルドバの商人は非常に興味深いです。彼らは現在、比較的珍しいポルトガルのデ...

#ブラックフライデー#: Linode は新規ユーザーと既存ユーザーの両方に賞金をプレゼントします!

VPS 業界のベテラン ブランドである Linode は、このブラック フライデーにちょっとしたサプ...

fozzy - ロシアの VPS / $8.99 / 1g RAM / 15g SSD / 1T トラフィック

Fozzy は米国に登録されている会社です。実際、その親会社は xbtholding.com (ルク...

潜在顧客を開拓するためにオンラインマーケティングでブランド戦略をどのように活用すればよいでしょうか?

オンラインマーケティングにはブランド戦略が必要ですか?近年、オンラインマーケティングプロモーションで...

ウェブサイトを構築するときにできることは検索エンジンのランキングだけというのは本当ですか?

今日、私はウェブマスターのウェブサイトで「SEOの発展:どこに向かっているのか?」というタイトルの記...

3月の国内OS市場:Windows 7のシェアが30%に迫る

IDC Review Network(idcps.com)は4月3日に次のように報じた。CNZZが発...

Weiboマーケティングは時代遅れですか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス業界ではよく知られている...

ウェブサイトのオンラインカスタマーサービスシステムに関する個人的な意見(パート2)

「ウェブサイトオンラインカスタマーサービスシステムに関する個人的な見解(パート1)」では、ウェブサイ...