日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

快速搭建移動應用直傳服務

更新時間:
一鍵部署
我的部署

本文主要介紹如何基于STS服務在30分鐘內快速搭建一個移動應用數據直傳服務,讓您的移動應用數據上傳與下載直接對接OSS,僅需通過應用服務器管理控制信息,實現數據傳輸的高效與安全。

為什么選擇直傳服務

在移動互聯的時代,手機App上傳的數據越來越多。作為開發者,您可以利用OSS處理各種數據存儲需求,從而更加專注于自己的應用邏輯。基于OSS的移動應用數據直傳服務具有以下優勢:

  • 數據安全:使用靈活的權限管理機制進行數據的上傳和下載,更加安全。

  • 成本低廉:您不需要準備很多服務器。移動應用直接連接云存儲OSS,只有控制流連接應用服務器。

  • 高并發:輕松應對高并發訪問,保證用戶體驗。

  • 彈性擴容:存儲空間隨需擴展,滿足業務增長需求。

  • 數據處理:無縫集成圖片處理與音視頻轉碼功能,數據處理更靈活。

前提條件

如何進行移動應用直傳

移動應用直傳服務的開發流程如下:

image

實現步驟如下:

  1. 移動應用向業務服務器請求臨時訪問憑證。

    說明

    Android和iOS應用不能直接存儲AccessKey,這樣會存在數據泄露的風險。因此,應用可以向用戶的應用服務器申請一個STS憑證。這個STS憑證是有時效性的,如果STS憑證的過期時間是30分鐘(由應用服務器指定),那么在這30分鐘里,該Android、iOS應用可以使用此Token從OSS上傳和下載數據,30分鐘后需要重新獲取STS憑證。

  2. 業務服務器使用STS SDK調用AssumeRole接口,獲取臨時訪問憑證。

  3. STS生成并返回臨時訪問憑證給業務服務器。

  4. 業務服務器返回臨時訪問憑證給客戶端。

  5. 移動應用使用OSS SDK通過該臨時訪問憑證上傳文件到OSS。

  6. OSS返回成功響應給客戶端。

操作步驟

本方案使用的ROS模板:mobile-application-direct-transmission-service.yml

步驟一:開通STS服務并配置應用服務器

一鍵部署

您可以點擊一鍵部署通過ROS快速開通STS服務并配置應用服務器。在資源編排 ROS控制臺,輸入資源棧名稱,設置新購ECS的可用區、實例類型、系統盤類型、實例密碼。部署完成后,復制輸出頁簽下一鍵部署的應用服務器地址。

手動部署

步驟1:在訪問控制創建RAM用戶

首先,創建一個調用方式為OpenAPI調用的RAM用戶,并獲取對應的訪問密鑰,作為業務服務器的應用程序的長期身份憑證。

  1. 使用云賬號或賬號管理員登錄RAM控制臺

  2. 在左側導航欄,選擇身份管理 > 用戶

  3. 單擊創建用戶

  4. 輸入登錄名稱顯示名稱

  5. 調用方式區域下,選擇OpenAPI調用,然后單擊確定

  6. 單擊操作下的復制,保存調用密鑰(AccessKey ID和AccessKey Secret)。

步驟2:在訪問控制為RAM用戶授予調用AssumeRole接口的權限

創建RAM用戶后,需要授予RAM用戶調用STS服務的AssumeRole接口的權限,使其可以通過扮演RAM角色來獲取臨時身份憑證。

  1. 在左側導航欄,選擇身份管理 > 用戶

  2. 用戶頁面,找到目標RAM用戶,然后單擊RAM用戶右側的添加權限

  3. 新增授權頁面,選擇AliyunSTSAssumeRoleAccess系統策略。

    說明

    授予RAM用戶調用STS服務AssumeRole接口的固定權限是AliyunSTSAssumeRoleAccess,與后續獲取臨時訪問憑證以及通過臨時訪問憑證發起OSS請求所需權限無關。

  4. 單擊確認新增授權

步驟3:在訪問控制創建RAM角色

為當前云賬號創建一個RAM角色,并獲取對應的角色的ARN(Aliyun Resource Name,阿里云資源名稱),用于RAM用戶之后進行扮演。

  1. 在左側導航欄,選擇身份管理 > 角色

  2. 單擊創建角色,可信實體類型選擇阿里云賬號,單擊下一步

  3. 填寫角色名稱,選擇當前云賬號

  4. 單擊完成。完成角色創建后,單擊關閉

  5. 在RAM角色管理頁面,搜索框輸入角色名稱,例如oss-web-upload

  6. 單擊復制,保存角色的ARN。

    1.png

步驟4:在訪問控制創建自定義權限策略

按照最小授權原則,為RAM角色創建一個自定義權限策略,限制只能向指定OSS的存儲空間進行XX操作。

  1. 在左側導航欄,選擇權限管理 > 權限策略

  2. 單擊創建權限策略

  3. 創建權限策略頁面,單擊腳本編輯,將以下腳本中的<Bucket名稱>替換為準備工作中創建的Bucket名稱。

    重要

    以下示例僅供參考。您需要根據實際需求配置更細粒度的授權策略,防止出現權限過大的風險。關于更細粒度的授權策略配置詳情,請參見對象存儲自定義權限策略參考

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "oss:PutObject",
          "Resource": "acs:oss:*:*:<Bucket名稱>/uploads/*"
        }
      ]
    }
  4. 策略配置完成后,單擊繼續編輯基本信息

  5. 基本信息區域,填寫策略名稱,然后單擊確定

步驟5:在訪問控制為RAM角色授予權限

為RAM角色授予創建的自定義權限,以便該RAM角色被扮演時能獲取所需的權限。

  1. 在左側導航欄,選擇身份管理 > 角色

  2. 角色頁面,找到目標RAM角色,然后單擊RAM角色右側的新增授權

  3. 新增授權頁面下的自定義策略頁簽,選擇已創建的自定義權限策略。

  4. 單擊確定

步驟6:在業務服務器獲取臨時身份憑證

創建一臺ECS實例作為業務服務器,用于生成臨時身份憑證。

說明

在實際部署時,您可以將調用STS服務的接口集成到自己的業務服務器的接口中,而無需創建該ECS實例。

參數

示例值

付費類型

按量付費

地域

華東1(杭州)

公網 IP

分配公網 IPv4 地址

安全組

開放HTTP (TCP:80)端口

具體步驟,請參見通過控制臺使用ECS實例(快捷版)

步驟7:在業務服務器獲取臨時身份憑證

在Web應用中,通過在業務服務器集成STS SDK,實現一個獲取臨時STS身份憑證的接口。當這個接口(/get_sts_token)通過HTTP GET方法被訪問時,它會生成一個臨時身份憑證,并將其返回給請求者。

在ECS實例上,使用Flask框架快速搭建Web應用,實現一個獲取臨時STS身份憑證的接口的操作示例如下:

  1. 連接ECS實例。

    具體操作,請參見連接ECS實例

  2. 安裝Python3

  3. 創建項目文件夾,然后切換到項目目錄。

    mkdir my_web_sample
    cd my_web_sample
  4. 安裝依賴。

    pip3 install Flask
    pip3 install attr
    pip3 install yarl
    pip3 install async_timeout
    pip3 install idna_ssl
    pip3 install attrs
    pip3 install aiosignal
    pip3 install charset_normalizer
    pip3 install alibabacloud_tea_openapi
    pip3 install alibabacloud_sts20150401
    pip3 install alibabacloud_credentials
  5. 編寫后端代碼。

    1. 創建一個main.py文件。

    2. 在這個文件中,添加以下Python代碼。

      import json
      from flask import Flask, render_template
      from alibabacloud_tea_openapi.models import Config
      from alibabacloud_sts20150401.client import Client as Sts20150401Client
      from alibabacloud_sts20150401 import models as sts_20150401_models
      from alibabacloud_credentials.client import Client as CredentialClient
      
      app = Flask(__name__)
      
      # 將<YOUR_ROLE_ARN>替換為RAM角色的ARN。
      role_arn_for_oss_upload = '<YOUR_ROLE_ARN>'
      # 設置為STS服務的地域,例如cn-hangzhou。
      region_id = 'cn-hangzhou'
      
      @app.route("/")
      def hello_world():
          return render_template('index.html')
      
      @app.route('/get_sts_token', methods=['GET'])
      def get_sts_token():
          # 初始化 CredentialClient 時不指定參數,代表使用默認憑據鏈。
          # 在本地運行程序時,可以通過環境變量 ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET 指定 AK;
          # 在 ECS\ECI\容器服務上運行時,可以通過環境變量 ALIBABA_CLOUD_ECS_METADATA 來指定綁定的實例節點角色,SDK 會自動換取 STS 臨時憑證。
          config = Config(region_id=region_id, credential=CredentialClient())
          sts_client = Sts20150401Client(config=config)
          assume_role_request = sts_20150401_models.AssumeRoleRequest(
              role_arn=role_arn_for_oss_upload,
              # 將<YOUR_ROLE_SESSION_NAME>設置為自定義的會話名稱。
              role_session_name='<YOUR_ROLE_SESSION_NAME>'
          )
          response = sts_client.assume_role(assume_role_request)
          token = json.dumps(response.body.credentials.to_map())
          return token
      app.run(host="0.0.0.0", port=80)
    3. 將代碼中的<YOUR_ROLE_ARN>替換為步驟三獲取的角色ARN。

    4. 將代碼中的<YOUR_ROLE_SESSION_NAME>設置為自定義的會話名稱,例如role_session_test

  6. 使用步驟1獲取的訪問密鑰啟動應用程序。

    ALIBABA_CLOUD_ACCESS_KEY_ID=<YOUR_AK_ID> ALIBABA_CLOUD_ACCESS_KEY_SECRET=<YOUR_AK_SECRET> python3 main.py
  7. 在瀏覽器中訪問http://<ECS實例公網IP地址>/get_sts_token

    成功返回示例如下:

    sts token.png

  8. Ctrl + C停止應用程序。

步驟二:下載并安裝移動應用

Android

  1. 下載移動應用源碼

    您可以通過此移動應用上傳圖片到OSS。上傳的方法支持普通上傳和斷點續傳上傳。在網絡環境差的情況下,推薦使用斷點續傳上傳。您還可以利用圖片處理服務,對要上傳的圖片進行縮略和加水印處理。

  2. 打開移動應用,配置應用參數

    20240919140109

    1. STS鑒權服務器:填寫步驟一:配置應用服務器中部署的應用服務器地址。

    2. 上傳Bucket:該移動應用要把數據上傳到哪個Bucket。

    3. 區域:上傳Bucket所在的地域。

  3. 單擊設置

iOS

  1. 下載移動應用源碼

    您可以通過此移動應用上傳圖片到OSS。上傳的方法支持普通上傳和斷點續傳上傳。在網絡環境差的情況下,推薦使用斷點續傳上傳。您還可以利用圖片處理服務,對要上傳的圖片進行縮略和加水印處理。

  2. 打開移動應用,配置應用參數。

    運行demo前,您需要在OSSTestMacros.h文件中配置必要參數。OSS_BUCKET_PRIVATE、OSS_ENDPOINT、OSS_STSTOKEN_URL。OSS_STSTOKEN_URL:配置為步驟1:配置應用服務器中部署的應用服務器地址。

    image

  3. 運行該實例。

    image

步驟三:體驗移動應用直傳服務

  1. 設置OSS的object名。單擊上傳,選擇需要上傳的圖片。

  2. 上傳成功后,通過控制臺查看上傳結果。