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

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

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

推薦する

QQ番号キャンセル機能により、ユーザーは自身のQQアカウントをキャンセルできる。

テンセントは3月20日夜、ユーザーがQQアカウントを解約できるようにすると発表した。ユーザーはテンセ...

mycustomhosting-年間18ドル/2IP/512mメモリ/KVM/15gハードディスク/500gトラフィック

mycustomhosting の新しいプロモーション情報が出てきて、少し心配になりました。デュアル...

程炳浩のスピーチを理解する: インターネットビジネスを始めるときに知っておくべき4つの文章

2012年第7回インターネットウェブマスター年次大会は終了しましたが、そこでの発言は途切れることなく...

ImpactVPS-1ドル/KVM/1g RAM/2コア/250g HDD/10Gポート

subnetlabs.com のサブブランド impactvps は、KVM 仮想化、ストレージ目的...

国美電子商取引の3大謎を分析:Kubaブランドは消滅するのか?

[はじめに] Gome OnlineはKubaと統合し、バックエンド管理とリソース共有の統一を実現し...

簡単な議論: 外部リンクは本当にトラフィックをもたらすことができるのでしょうか?

SEO 業界がいつから内部リンクが王様で外部リンクが最も重要だと言い始めたのかはわかりません。多くの...

ウェブサイトの重量を素早く改善する方法

ウェブサイトが良いランキングを獲得したい場合、Baidu での重みを高める方法を見つける必要がありま...

GoogleのPageRankアルゴリズムが復活

ちょうど 1 年前、検索エンジン マーケティングと最適化の業界全体と主要なインターネット マーケティ...

Mafengwo ビッグデータ プラットフォームにおける Kafka クラスターの最適化とアプリケーション拡張

Kafka は人気のあるメッセージ キュー ミドルウェアです。大量のデータをリアルタイムで処理でき、...

ウェブマスターネットワークレポート:北京でタオバオの登録が停止、360が「シルクロード」の脈を測る

1. 自宅にいながら水道代、電気代、ガス代を支払えるつい最近5月21日、Suning.comはモバイ...

災害復旧とコストがハイブリッドクラウドの導入を促進

ハイブリッド クラウドは、今日のテクノロジー環境において大きな差別化要因へと進化しました。クラウド ...

Sina WeiboがWeiboプロモーションをテスト:ニュースフローに表示されるBaiduプロモーションに類似

Sina Weibo が新しい広告形式をテスト中: Weibo プロモーション (TechWeb の...

詳細説明: Linuxネットワーク仮想化技術

Linux ネットワーク仮想化は、LXC プロジェクトのサブプロジェクトです。 LXC には、ファイ...

企業がSEOを選択する将来展望は?

この記事は、この地域の企業に基づいて書かれています。多くの企業は、SEO を選択することで会社にどの...

次世代ハイブリッドクラウドがコロケーションデータセンターにもたらす影響

以前のバージョンとは異なり、新しいハイブリッド クラウド フレームワークは導入が簡単で、「クラウド ...