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​​

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

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

推薦する

皆様、建国記念日おめでとうございます!

一年で珍しい長い休日です。今年の建国記念日は7日間です。皆さんが楽しい時間を過ごせますように!当分の...

deepnetsolutions - $5/2g メモリ/100g ハードディスク/1.5T トラフィック/1G ポート/3 コンピュータ ルーム

deepnetsolutions には 50% 割引コードがあり、割引コードはQuebecNatio...

Linode-日本データセンター新プラン月額5ドルVPSレビュー

昨日、Linode は、最低 VPS 価格を 1G メモリで月額 5 ドルに引き下げると発表しました...

ウェブサイトのPR価値とページのPR価値について簡単に説明します

私は幸運にも外資系企業でSEO業務に携わっており、日々先輩方からSEOを学んでいます。そこで、私の学...

Aizhan.comを例に、ウェブサイト構築におけるユーザーエクスペリエンスの役割を簡単に分析します。

ウェブマスターにとって、Aizhan.com は馴染みのあるサイトです。この記事を読んでいる間も、A...

VMware がクラウド コンピューティング戦略と技術ロードマップを公開

VMworld Europe 2009 において、VMware (NYSE: VMW) の社長兼 C...

Namesilo - 6.00 ドル (通常価格) / 5.8.00 ドル (通常価格)

namesilo は、目標達成 (年間管理するドメイン名の数が前年の「何とも言えない」数倍) を記念...

どのような外部リンクがウェブサイトのランキングを向上させることができますか?

ウェブサイトの最適化は、「コンテンツは王、外部リンクは女王」という原則に従います。新しいウェブサイト...

Baidu の最近の微妙な変化に気づきましたか?

草の根ウェブマスターになるのはとても忙しいです。毎日オリジナルの記事を探し、たくさんの外部リンクを投...

エッジコンピューティング向け統合スケジューリングソリューションの検討

パート01エッジコンピューティングソリューションの概念的定義図1上図1に示すように、「AIエッジコン...

ピークサーバー - $10/年/128M メモリ/5G ハードドライブ/100G トラフィック/ダラス

Peakservers は、256M メモリの OVZ を年間 6 ドルでずっと販売してきましたが、...

国内SEOの現状分析:SEOをやるときに面倒なのはなぜ?

Ant Online は今日、Zhihu の投稿を見ました: Zhihu の「XXX はどのような ...

USクラウドサーバー\US VPS推奨「トップ」マーチャント「Vultr」

Vultrは2009年に設立された、アメリカのChoopaデータセンター傘下のクラウドサーバーブラン...

検索エンジン最適化の専門家にはどのような資質が必要ですか?

私は、国内の SEO 実践者の多くが SEO をあまりにも単純に捉えすぎているようにいつも思ってきま...

テンセントモバイルQQがWiFiパスワードを共有し苦情を招く

Android フォン向け QQ の最新バージョンの新機能がネットユーザーから苦情を集めている。Wi...