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

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

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

推薦する

「知っているサイトを探して」の感想

最近暇だったので、ある疑問について考えました。つまり、ウェブサイトを探すときに、一部の人々は何を検索...

ウェブサイトの一時的掲載停止に合理的かつ効果的に対処する方法

ウェブサイトのインクルードは、ウェブサイトの開発を制限するハサミのようなものです。検索エンジンのアル...

クラウド コンピューティングに切り替える理由は何ですか?

AWS、Google Cloud、Microsoft Azure などのパブリック クラウド サービ...

arkecxc マレーシア クラウド サーバー レビュー: クアラルンプール データ センター、1Gbps の大容量帯域幅

arkecxcはどうですか? arkecxのマレーシアクラウドサーバーを使って簡単な評価をしてみまし...

地域分類情報ウェブサイトの構築方法の実践的分析

もともと地域情報サイトを手がけていたわけではないので、地域情報サイトを手がけたのは合計で10ヶ月程度...

国防総省はAWS、グーグル、オラクル、マイクロソフトの間で巨額の取引を分割した

国防総省は昨年マイクロソフトとの100億ドルのJEDI契約をキャンセルしたが、今度はクラウドコンピュ...

ウェブサイトにキーワードランキングがない場合、どこからトラフィックを獲得できますか?

サイトの重みが増すほど、サイトのキーワードランキングが高くなり、検索エンジンからのトラフィックが増え...

A5 Yuehuai SEO最適化道路の分析

最近のSEOニュースを調べてみると、A5が正式に独立したドメイン名yuehuai.comを立ち上げ、...

Baidu スナップショットの更新とロールバックがウェブサイトのランキングに与える影響を分析する

Baidu スナップショットの更新は、すべてのウェブマスターにとって常に懸念事項です。Baidu ス...

クラウドネイティブインフラストラクチャについて - EventMesh イベントドリブンメッシュ

今日はイベント駆動型メッシュであるEventMeshについてお話します。実際、クラウド ネイティブ ...

個人 SEO 担当者として契約を交渉する方法 (パート 2)

5 日に、SEO 担当者が取引交渉を経験したいくつかの記事を公開しました。その後、取引交渉の過程で遭...

2 ページ目のキーワードを 1 ページ目に表示させるにはどうすればよいですか?

SEO を行う私たちなら、Baidu がホームページに比較的高い重みを与えることが多いことを知ってい...

休暇中にウェブサイトの正常な動作とランキングを確保する方法

毎年の年末年始に最も悩まされるのは、ウェブサイトのメンテナンスです。なぜなら、年末年始になると、サー...

Kubernetes Pod のトラブルシューティングをマスターする: 高度な戦略とシナリオ

Kubernetes (K8s) のデプロイメントでは、ポッド、サービス、イングレス、応答しないクラ...

クラウドコンピューティングを再構築! Baidu Smart Cloudが20以上のフルスタック製品を一挙にリリース

12月20日、2023年百度クラウドインテリジェンスカンファレンスおよびインテリジェントコンピューテ...