全部產品
Search
文件中心

Simple Message Queue (formerly MNS):配置訪問網域名稱及憑證

更新時間:Sep 07, 2024

使用Java SDK發起SMQ請求,您需要配置存取點及訪問憑證。阿里雲服務會通過訪問憑證驗證您的身份資訊和存取權限。您可以根據使用情境對認證和授權的要求,選擇不同類型的訪問憑證。本文介紹如何配置存取點、臨時訪問憑證、長期訪問憑證。

配置訪問網域名稱

SMQ公網或內網存取點資訊配置在aliyun-mns.properties檔案中,該檔案一般位於${user.home}/.aliyun-mns.properties

在Linux和macOS作業系統中,aliyun-mns.properties檔案位於~/.aliyun-mns.properties

在Windows作業系統中,aliyun-mns.properties檔案位於%USERPROFILE%\.aliyun-mns.properties

aliyun-mns.properties檔案配置如下:

mns.accountendpoint=http://120228xxxxxxx.mns.cn-xxxxxx.aliyuncs.com

關於SMQ的存取點資訊,您可以在控制台的隊列詳情/主題詳情頁面的存取點地區查看。image

配置訪問憑證

您可以選擇以下類型的訪問憑證。

  • 長期訪問憑證:出於安全性考慮,不建議您使用長期訪問憑證,建議您使用臨時訪問憑證。對於需要便利性的情境,長期訪問憑證可以在較長時間內免除多次重新整理的麻煩。建議每三個月更換一次長期訪問憑證,以提高帳號的安全性。當長期訪問憑證泄露或者不再使用時,應該及時刪除或者禁用相關的訪問憑證,以免造成安全風險。

  • 臨時訪問憑證:對於需要高安全性的情境,例如臨時授權應用訪問SMQ,建議使用臨時訪問憑證。臨時訪問憑證可以限制訪問的有效期間,從而減少訪問憑證泄露的風險。此外,臨時訪問憑證支援許可權控制,可以有效地避免許可權過大的問題。

使用長期訪問憑證

當您準備在應用或服務中長期使用Java SDK訪問SMQ服務時,您可以通過以下方式配置長期訪問憑證。

配置RAM使用者的存取金鑰:如果您需要長期訪問您的SMQ,您可以通過RAM使用者的存取金鑰的方式訪問您的SMQ

  1. 擷取RAM使用者的存取金鑰。

    如何擷取RAM使用者的存取金鑰,請參見建立RAM使用者的AccessKey

    重要

    對於超過3個月的RAM使用者的存取金鑰,建議及時輪換。對於長期不用的RAM使用者的存取金鑰,建議及時禁用並刪除。以降低RAM使用者的存取金鑰被泄露的風險。

  2. 配置RAM使用者的存取金鑰。

    環境變數

    1. 配置環境變數。

      macOS

      1. 開啟終端。

      2. 執行以下命令。

        nano ~/.bash_profile
      3. 在檔案末尾添加RAM使用者的存取金鑰。

        export ALIBABA_CLOUD_ACCESS_KEY_ID=LTA****
        export ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs**** 
      4. Ctrl+X,按Y鍵確認儲存,然後按Enter鍵退出檔案。

      5. 輸入以下命令以使更改生效。

        source ~/.bash_profile
      6. 執行以下命令驗證環境變數配置。

        echo $ALIBABA_CLOUD_ACCESS_KEY_ID
        echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET

        成功返回樣本如下:

        LTA****
        moiEs****  

      Linux

      1. 開啟終端。

      2. 執行以下命令。

        sudo vim /etc/profile
      3. 在檔案末尾添加RAM使用者的存取金鑰。

        export ALIBABA_CLOUD_ACCESS_KEY_ID=LTA****
        export ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs**** 
      4. ESC鍵退出編輯模式,輸入:wq,然後按Enter鍵儲存並退出檔案。

      5. 輸入以下命令以使更改生效。

        source /etc/profile
      6. 執行以下命令驗證環境變數配置。

        echo $ALIBABA_CLOUD_ACCESS_KEY_ID
        echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET

        成功返回樣本如下:

        LTA****
        moiEs**** 

      Windows

      通過圖形化使用者介面GUI

      以Windows 10為例,通過圖形化使用者介面以環境變數的方式設定RAM使用者存取金鑰的步驟如下:

      1. 在案頭按右鍵此電腦,選擇屬性 > 進階系統設定 > 環境變數 > 系統變數/使用者變數 > 建立

      2. 添加以下環境變數。

        變數名

        樣本值

        ALIBABA_CLOUD_ACCESS_KEY_ID

        LTA****

        ALIBABA_CLOUD_ACCESS_KEY_SECRET

        moiEs****

      3. 執行以下命令驗證環境變數配置。

        echo $ALIBABA_CLOUD_ACCESS_KEY_ID
        echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET

        成功返回樣本如下:

        LTA****
        moiEs**** 

      通過命令列提示符CMD

      1. 開啟命令列。

      2. 執行以下命令配置RAM使用者的存取金鑰。

        set ALIBABA_CLOUD_ACCESS_KEY_ID=LTA****
        set ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****  
      3. 執行以下命令以使更改生效。

        setx ALIBABA_CLOUD_ACCESS_KEY_ID "%MNS_ACCESS_KEY_ID%"
        setx ALIBABA_CLOUD_ACCESS_KEY_SECRET "%MNS_ACCESS_KEY_SECRET%"
      4. 執行以下命令驗證環境變數配置。

        echo %ALIBABA_CLOUD_ACCESS_KEY_ID%
        echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%

        成功返回樣本如下:

        LTA****
        moiEs****  

      通過Windows PowerShell

      1. 按下鍵盤上的Win + X按鍵組合。

      2. 設定RAM使用者的存取金鑰。

        僅當前會話有效
        1. 在彈出的菜單中,選擇Windows PowerShell

        2. 為當前會話添加以下環境變數。

          $env:ALIBABA_CLOUD_ACCESS_KEY_ID = "LTA****"
          $env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "moiEs****"
        對所有新會話有效
        1. 在彈出的菜單中,選擇Windows PowerShell

        2. 為所有新會話添加以下環境變數。

          [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::User)
          [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::User)
        對所有使用者有效
        1. 在彈出的菜單中,選擇Windows PowerShell(管理員)

        2. 為所有使用者添加以下環境變數。

          [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine)
          [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)
      3. 執行以下命令驗證環境變數配置。

        Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID
        Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET

        成功返回樣本如下:

        LTA****
        moiEs**** 
    2. 從環境變數中擷取RAM使用者的存取金鑰。

      // 使用環境變數中擷取的RAM使用者的存取金鑰配置訪問憑證。
      CloudAccount account = new CloudAccount(ServiceSettings.getMNSAccountEndpoint());

    代碼嵌入

    警告

    在代碼中嵌入訪問憑證會導致安全問題。如果訪問憑證被泄漏,攻擊者就可以使用該訪問憑證來訪問您的資源SMQ,造成損失。因此,建議您使用更安全的方式,例如從環境變數中擷取訪問憑證,來提高安全性。

    CloudAccount account = new CloudAccount(ServiceSettings.getMNSAccountEndpoint());

使用臨時訪問憑證

當您準備臨時使用Java SDK訪問SMQ服務時,您可以選擇以下方式配置臨時訪問憑證。

  • 配置STS臨時訪問憑證:如果您需要在規定時間內訪問您的SMQ,您可以通過STS服務頒發一個STS臨時訪問憑證。臨時訪問憑證無需透露您的RAM使用者存取金鑰,使您的SMQ訪問更加安全。

  • 配置RAM角色:如果您需要授權訪問或跨帳號訪問SMQ,您可以通過RAM使用者扮演對應的RAM角色的方式授權訪問或跨帳號訪問SMQ

  • 配置ECS的RAM角色:如果你需要在阿里雲的Elastic Compute Service中訪問您的SMQ,您可以通過ECS執行個體RAM角色的方式訪問SMQ。執行個體RAM角色允許您將一個角色關聯到雲端服務器執行個體,在執行個體內部基於STS臨時憑證通過指定方法訪問SMQ。STS臨時憑證由系統自動產生和更新,應用程式可以使用指定的執行個體中繼資料URL擷取臨時憑證,無需特別管理。

配置STS臨時訪問憑證

  1. 建立RAM使用者。

    具體操作,請參見建立RAM使用者

  2. 為RAM使用者授予 AliyunSTSAssumeRoleAccess許可權。

    具體操作,請參見為RAM使用者授權

  3. 使用RAM使用者調用STS服務的AssumeRole介面擷取STS臨時訪問憑證。

    具體操作,請參見AssumeRole

  4. 配置STS臨時訪問憑證。

    環境變數

    1. 使用擷取的STS臨時訪問憑證配置環境變數。

      macOS

      1. 開啟終端。

      2. 執行以下命令。

        nano ~/.bash_profile
      3. 在檔案末尾添加從STS服務擷取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。

        export MNS_ACCESS_KEY_ID=LTA****
        export MNS_ACCESS_KEY_SECRET=moiEs****
        export MNS_SESSION_TOKEN=CAES****
      4. Ctrl+X,按Y鍵確認儲存,然後按Enter鍵退出檔案。

      5. 執行以下命令以使更改生效。

        source ~/.bash_profile
      6. 執行以下命令驗證環境變數配置。

        echo $MNS_ACCESS_KEY_ID
        echo $MNS_ACCESS_KEY_SECRET
        echo $MNS_SESSION_TOKEN

        成功返回樣本如下:

        LTA****
        moiEs**** 
        CAES****

      Linux

      1. 開啟終端。

      2. 執行以下命令。

        sudo vim /etc/profile
      3. 在檔案末尾添加從STS服務擷取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。

        export MNS_ACCESS_KEY_ID=LTA****
        export MNS_ACCESS_KEY_SECRET=moiEs****
        export MNS_SESSION_TOKEN=CAES****
      4. ESC鍵退出編輯模式,輸入:wq,然後按Enter鍵儲存並退出檔案。

      5. 執行以下命令以使更改生效。

        source /etc/profile
      6. 執行以下命令驗證環境變數配置。

        echo $MNS_ACCESS_KEY_ID
        echo $MNS_ACCESS_KEY_SECRET
        echo $MNS_SESSION_TOKEN

        成功返回樣本如下:

        LTA****
        moiEs**** 
        CAES****

      Windows

      通過圖形化使用者介面GUI

      以Windows 10為例,通過圖形化使用者介面以環境變數的方式設定STS臨時訪問憑證的步驟如下:

      1. 在案頭按右鍵此電腦,選擇屬性 > 進階系統設定 > 環境變數 > 系統變數/使用者變數 > 建立

      2. 添加以下環境變數。

        變數名

        樣本值

        MNS_ACCESS_KEY_ID

        LTA****

        MNS_ACCESS_KEY_SECRET

        moiEs****

        MNS_SESSION_TOKEN

        CAES****

      3. 執行以下命令驗證環境變數配置。

        echo %MNS_ACCESS_KEY_ID%
        echo %MNS_ACCESS_KEY_SECRET%
        echo %MNS_SESSION_TOKEN%

        成功返回樣本如下:

        LTA****
        moiEs**** 
        CAES****

      通過命令列提示符CMD

      1. 開啟命令列。

      2. 執行以下命令配置從STS服務擷取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。

        set MNS_ACCESS_KEY_ID=LTA****
        set MNS_ACCESS_KEY_SECRET=moiEs**** 
        set MNS_SESSION_TOKEN=CAES****
      3. 執行以下命令以使更改生效。

        setx MNS_ACCESS_KEY_ID "%MNS_ACCESS_KEY_ID%"
        setx MNS_ACCESS_KEY_SECRET "%MNS_ACCESS_KEY_SECRET%"
        setx MNS_SESSION_TOKEN "%MNS_SESSION_TOKEN%"
      4. 執行以下命令驗證環境變數配置。

        echo %MNS_ACCESS_KEY_ID%
        echo %MNS_ACCESS_KEY_SECRET%
        echo %MNS_SESSION_TOKEN%

        成功返回樣本如下:

        LTA****
        moiEs**** 
        CAES****

      通過Windows PowerShell

      1. 按下鍵盤上的Win + X按鍵組合。

      2. 設定STS臨時訪問憑證。

        僅當前會話有效
        1. 在彈出的菜單中,選擇Windows PowerShell

        2. 為當前會話添加以下環境變數。

          $env:MNS_ACCESS_KEY_ID = "LTA****"
          $env:MNS_ACCESS_KEY_SECRET = "moiEs****"
          $env:MNS_SESSION_TOKEN = "CAE****"
        對所有新會話有效
        1. 在彈出的菜單中,選擇Windows PowerShell

        2. 為所有新會話添加以下環境變數。

          [System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::User)
          [System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::User)
          [System.Environment]::SetEnvironmentVariable('MNS_SESSION_TOKEN', 'CAES****', [System.EnvironmentVariableTarget]::User)
        對所有使用者有效
        1. 在彈出的菜單中,選擇Windows PowerShell(管理員)

        2. 為所有使用者添加以下環境變數。

          [System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine)
          [System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)
          [System.Environment]::SetEnvironmentVariable('MNS_SESSION_TOKEN', 'CAES****', [System.EnvironmentVariableTarget]::Machine)
      3. 執行以下命令驗證環境變數配置。

        Get-ChildItem env:MNS_ACCESS_KEY_ID
        Get-ChildItem env:MNS_ACCESS_KEY_SECRET
        Get-ChildItem env:MNS_SESSION_TOKEN

        成功返回樣本如下:

        LTA****
        moiEs**** 
        CAES****
    2. 從環境變數中擷取STS臨時訪問憑證。

      // 從環境變數中擷取RAM使用者的臨時存取金鑰(AccessKey ID、AccessKey Secret和SecurityToken)。 
      String accessKeyId = System.getenv("MNS_ACCESS_KEY_ID"); 
      String accessKeySecret = System.getenv("MNS_ACCESS_KEY_SECRET");
      String sessionToken = System.getenv("MNS_SESSION_TOKEN"); 
      AlibabaCloudCredentials credentials = new BasicSessionCredentials(accessKeyId,accessKeySecret,sessionToken); 
      AlibabaCloudCredentialsProvider provider = new StaticCredentialsProvider(credentials);

    代碼嵌入

    警告

    在代碼中嵌入訪問憑證會導致安全問題。如果訪問憑證被泄漏,攻擊者就可以使用該訪問憑證來訪問您的資源MNS,造成損失。因此,建議您使用更安全的方式,例如從環境變數中擷取訪問憑證,來提高安全性。

    // 從環境變數中擷取RAM使用者的臨時存取金鑰(AccessKey ID、AccessKey Secret和SecurityToken)。
    String accessKeyId = System.getenv("MNS_ACCESS_KEY_ID");
    String accessKeySecret = System.getenv("MNS_ACCESS_KEY_SECRET");
    String sessionToken = System.getenv("MNS_SESSION_TOKEN");
    
    AlibabaCloudCredentials credentials = new BasicSessionCredentials(accessKeyId,accessKeySecret,sessionToken);
    AlibabaCloudCredentialsProvider provider = new StaticCredentialsProvider(credentials);
    
    String endpoint = ServiceSettings.getMNSAccountEndpoint();
    CloudAccount account = new CloudAccount(endpoint, provider);

配置RAM角色

  1. 擷取RAM使用者的存取金鑰。

    具體操作,請參見建立RAM使用者的AccessKey

    重要

    為降低RAM使用者的存取金鑰被泄露的風險,對於超過3個月的RAM使用者的存取金鑰,建議及時輪換。對於長期不用的RAM使用者的存取金鑰,建議及時禁用並刪除。

  2. 擷取目標RAM角色的RamRoleArn。

    說明

    RamRoleArn是RAM角色的ARN資訊,即需要扮演的角色ID。格式為acs:ram::$accountID:role/$roleName。$accountID為阿里雲帳號ID。$roleName為RAM角色名稱。

    具體操作,請參見查看RAM角色

  3. 配置RAM使用者的存取金鑰和目標RAM角色的RAMRoleArn作為訪問憑證。

    環境變數

    1. 使用擷取的RAM使用者的存取金鑰和目標RAM角色的RamRoleArn配置環境變數。

      macOS

      1. 開啟終端。

      2. 執行以下命令。

        nano ~/.bash_profile
      3. 在檔案末尾添加擷取的RAM使用者的存取金鑰和RAM角色的RamRoleArn。

        export MNS_ACCESS_KEY_ID=LTAI****
        export MNS_ACCESS_KEY_SECRET=IrVTNZNy****  
        export MNS_STS_ROLE_ARN=acs:ram::17464958********:role/mnsststest
      4. Ctrl+X,按Y鍵確認儲存,然後按Enter鍵退出檔案。

      5. 執行以下命令以使更改生效。

        source /etc/profile
      6. 執行以下命令驗證環境變數配置。

        echo $MNS_ACCESS_KEY_ID
        echo $MNS_ACCESS_KEY_SECRET
        echo $MNS_STS_ROLE_ARN

        成功返回樣本如下:

        LTAI****
        IrVTNZNy****  
        acs:ram::17464958********:role/mnsststest

      Linux

      1. 開啟終端。

      2. 執行以下命令。

        sudo vim /etc/profile
      3. 在檔案末尾添加擷取的RAM使用者的存取金鑰和RAM角色的RamRoleArn。

        export MNS_ACCESS_KEY_ID=LTAI****
        export MNS_ACCESS_KEY_SECRET=IrVTNZNy****  
        export MNS_STS_ROLE_ARN=acs:ram::17464958********:role/mnsststest
      4. ESC鍵退出編輯模式,輸入:wq,然後按Enter鍵儲存並退出檔案。

      5. 執行以下命令以使更改生效。

        source /etc/profile
      6. 執行以下命令驗證環境變數配置。

        echo $MNS_ACCESS_KEY_ID
        echo $MNS_ACCESS_KEY_SECRET
        echo $MNS_STS_ROLE_ARN

        成功返回樣本如下:

        LTAI****
        IrVTNZNy****  
        acs:ram::17464958********:role/mnsststest

      Windows

      通過圖形化使用者介面GUI

      以Windows 10為例,通過圖形化使用者介面以環境變數的方式設定RAM使用者的存取金鑰和目標RAM角色的RAMRoleArn步驟如下:

      1. 在案頭按右鍵此電腦,選擇屬性 > 進階系統設定 > 環境變數 > 系統變數/使用者變數 > 建立

      2. 添加以下環境變數。

        變數名

        樣本值

        MNS_ACCESS_KEY_ID

        LTAI****

        MNS_ACCESS_KEY_SECRET

        IrVTNZNy****

        MNS_STS_ROLE_ARN

        acs:ram::17464958********:role/mnsststest

      3. 執行以下命令驗證環境變數配置。

        echo $MNS_ACCESS_KEY_ID
        echo $MNS_ACCESS_KEY_SECRET
        echo $MNS_STS_ROLE_ARN

        成功返回樣本如下:

        LTAI****
        IrVTNZNy**** 
        acs:ram::17464958********:role/mnsststest

      通過命令列提示符CMD

      1. 開啟命令列。

      2. 執行以下命令配置RAM使用者的存取金鑰和RAM角色的RamRoleArn。

        set MNS_ACCESS_KEY_ID=LTAI****
        set MNS_ACCESS_KEY_SECRET=IrVTNZNy****  
        set MNS_STS_ROLE_ARN=acs:ram::17464958********:role/mnsststest
      3. 執行以下命令以使更改生效。

        setx MNS_ACCESS_KEY_ID "%MNS_ACCESS_KEY_ID%"
        setx MNS_ACCESS_KEY_SECRET "%MNS_ACCESS_KEY_SECRET%"
        setx MNS_STS_ROLE_ARN "%MNS_STS_ROLE_ARN%"
      4. 執行以下命令驗證環境變數配置。

        echo %MNS_ACCESS_KEY_ID%
        echo %MNS_ACCESS_KEY_SECRET%
        echo %MNS_STS_ROLE_ARN%

        成功返回樣本如下:

        LTAI****
        IrVTNZNy****  
        acs:ram::17464958********:role/mnsststest

      通過Windows PowerShell

      1. 按下鍵盤上的Win + X按鍵組合。

      2. 設定RAM使用者的存取金鑰和目標RAM角色的RAMRoleArn。

        僅當前會話有效

        1. 在彈出的菜單中,選擇Windows PowerShell

        2. 為當前會話添加以下環境變數。

          $env:MNS_ACCESS_KEY_ID = "LTAI****"
          $env:MNS_ACCESS_KEY_SECRET = "IrVTNZNy****"
          $env:MNS_STS_ROLE_ARN = "acs:ram::17464958********:role/ossststest"

        對所有新會話有效

        1. 在彈出的菜單中,選擇Windows PowerShell

        2. 為所有新會話添加以下環境變數。

          [System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTAI****', [System.EnvironmentVariableTarget]::User)
          [System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'IrVTNZNy****', [System.EnvironmentVariableTarget]::User)
          [System.Environment]::SetEnvironmentVariable('MNS_STS_ROLE_ARN', 'acs:ram::17464958********:role/mnsststest', [System.EnvironmentVariableTarget]::User)

        對所有使用者有效

        1. 在彈出的菜單中,選擇Windows PowerShell(管理員)

        2. 為所有使用者添加以下環境變數。

          [System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_ID', 'LTAI****', [System.EnvironmentVariableTarget]::Machine)
          [System.Environment]::SetEnvironmentVariable('MNS_ACCESS_KEY_SECRET', 'IrVTNZNy****', [System.EnvironmentVariableTarget]::Machine)
          [System.Environment]::SetEnvironmentVariable('MNS_STS_ROLE_ARN', 'acs:ram::17464958********:role/mnsststest', [System.EnvironmentVariableTarget]::Machine)
      3. 執行以下命令驗證環境變數配置。

        Get-ChildItem env:MNS_ACCESS_KEY_ID
        Get-ChildItem env:MNS_ACCESS_KEY_SECRET
        Get-ChildItem env:MNS_STS_ROLE_ARN

        成功返回樣本如下:

        LTAI****
        IrVTNZNy**** 
        acs:ram::17464958********:role/mnsststest
    2. 從環境變數中擷取RAM使用者的存取金鑰RAM角色的RamRoleArn。

      // 授權STSAssumeRole訪問的Region。以華東1(杭州)為例,其它Region請根據實際情況填寫。
      String region = "cn-hangzhou";
      // 從環境變數中擷取RAM使用者的存取金鑰(AccessKey ID和AccessKey Secret)。
      String accessKeyId = System.getenv("MNS_ACCESS_KEY_ID");
      String accessKeySecret = System.getenv("MNS_ACCESS_KEY_SECRET");
      // 從環境變數中擷取RAM角色的RamRoleArn。
      String roleArn = System.getenv("MNS_STS_ROLE_ARN");
      
      // 使用環境變數中擷取的RAM使用者的存取金鑰和RAM角色的RamRoleArn配置訪問憑證。
      STSAssumeRoleSessionCredentialsProvider credentialsProvider = CredentialsProviderFactory
              .newSTSAssumeRoleSessionCredentialsProvider(
                      region, 
                      accessKeyId, 
                      accessKeySecret, 
                      roleArn
              );

    代碼嵌入

    警告

    在代碼中嵌入訪問憑證會導致安全問題。如果訪問憑證被泄漏,攻擊者就可以使用該訪問憑證來訪問您的資源OSS,造成損失。因此,建議您使用更安全的方式,例如從環境變數中擷取訪問憑證,來提高安全性。

    // 這個region Id和mns endpoint為一個region。
    String regionId = "cn-hangzhou";
    
    // 從環境變數中擷取RAM使用者的存取金鑰(AccessKey ID和AccessKey Secret)。
    String accessKeyId = System.getenv("MNS_ACCESS_KEY_ID");
    String accessKeySecret = System.getenv("MNS_ACCESS_KEY_SECRET");
    // 從環境變數中擷取RAM角色的RamRoleArn。
    String roleArn = System.getenv("MNS_STS_ROLE_ARN");
    
    DefaultProfile profile = DefaultProfile.getProfile(regionId);
    AlibabaCloudCredentialsProvider provider = new STSAssumeRoleSessionCredentialsProvider(
        new BasicCredentials(accessKeyId, accessKeySecret),
        roleArn,
        profile
    );
    
    
    String endpoint = ServiceSettings.getMNSAccountEndpoint();
    CloudAccount account = new CloudAccount(endpoint, provider);

配置ECS的RAM角色

  1. 為ECS執行個體授予RAM角色。

    具體操作,請參見授予執行個體RAM角色

  2. 配置ECS的RAM角色作為訪問憑證。

    // 通過ECS RAM角色擷取訪問憑證,例如以角色名稱(ecs-ram-role)訪問為例。
    CredentialsProvider provider = new InstanceProfileCredentialsProvider("ecs-ram-role");