本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
使用Python SDK發起SMQ請求,您需要配置接入點及訪問憑證。阿里云服務會通過訪問憑證驗證您的身份信息和訪問權限。您可以根據使用場景對認證和授權的要求,選擇不同類型的訪問憑證。本文介紹如何配置接入點、臨時訪問憑證、長期訪問憑證。
配置訪問域名
下載最新版Python SDK,解壓后進入aliyun-mns-python-sdk子目錄。
打開sample.cfg文件,配置Endpoint。
關于SMQ的接入點信息,您可以在控制臺的隊列詳情/主題詳情頁面的接入點區域查看。
不同地域的接入地址不同。
配置訪問憑證
您可以選擇以下類型的訪問憑證。
長期訪問憑證:出于安全性考慮,不建議您使用長期訪問憑證,建議您使用臨時訪問憑證。對于需要便利性的場景,長期訪問憑證可以在較長時間內免除多次刷新的麻煩。建議每三個月更換一次長期訪問憑證,以提高賬號的安全性。當長期訪問憑證泄露或者不再使用時,應該及時刪除或者禁用相關的訪問憑證,以免造成安全風險。
臨時訪問憑證:對于需要高安全性的場景,例如臨時授權應用訪問SMQ,建議使用臨時訪問憑證。臨時訪問憑證可以限制訪問的有效期,從而減少訪問憑證泄露的風險。此外,臨時訪問憑證支持權限控制,可以有效地避免權限過大的問題。
使用長期訪問憑證
當您準備在應用或服務中長期訪問SMQ服務時,您可以通過RAM用戶的訪問密鑰的方式訪問您的SMQ。
獲取RAM用戶的訪問密鑰。
如何獲取RAM用戶的訪問密鑰,請參見創建RAM用戶的AccessKey。
重要對于超過3個月的RAM用戶的訪問密鑰,建議及時輪換。對于長期不用的RAM用戶的訪問密鑰,建議及時禁用并刪除。以降低RAM用戶的訪問密鑰被泄露的風險。
配置RAM用戶的訪問密鑰。
環境變量
配置環境變量。
macOS
打開終端。
執行以下命令。
nano ~/.bash_profile
在文件末尾添加RAM用戶的訪問密鑰。
export ALIBABA_CLOUD_ACCESS_KEY_ID=LTA**** export ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****
按
Ctrl
+X
,按Y
鍵確認保存,然后按Enter
鍵退出文件。輸入以下命令以使更改生效。
source ~/.bash_profile
執行以下命令驗證環境變量配置。
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
成功返回示例如下:
LTA**** moiEs****
Linux
打開終端。
執行以下命令。
sudo vim /etc/profile
在文件末尾添加RAM用戶的訪問密鑰。
export ALIBABA_CLOUD_ACCESS_KEY_ID=LTA**** export ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****
按
ESC
鍵退出編輯模式,輸入:wq
,然后按Enter
鍵保存并退出文件。輸入以下命令以使更改生效。
source /etc/profile
執行以下命令驗證環境變量配置。
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
成功返回示例如下:
LTA**** moiEs****
Windows
通過圖形化用戶界面GUI
以Windows 10為例,通過圖形化用戶界面以環境變量的方式設置RAM用戶訪問密鑰的步驟如下:
在桌面右鍵單擊此電腦,選擇
。添加以下環境變量。
變量名
示例值
ALIBABA_CLOUD_ACCESS_KEY_ID
LTA****
ALIBABA_CLOUD_ACCESS_KEY_SECRET
moiEs****
執行以下命令驗證環境變量配置。
echo $ALIBABA_CLOUD_ACCESS_KEY_ID echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
成功返回示例如下:
LTA**** moiEs****
通過命令行提示符CMD
打開命令行。
執行以下命令配置RAM用戶的訪問密鑰。
set ALIBABA_CLOUD_ACCESS_KEY_ID=LTA**** set ALIBABA_CLOUD_ACCESS_KEY_SECRET=moiEs****
執行以下命令以使更改生效。
setx ALIBABA_CLOUD_ACCESS_KEY_ID "%MNS_ACCESS_KEY_ID%" setx ALIBABA_CLOUD_ACCESS_KEY_SECRET "%MNS_ACCESS_KEY_SECRET%"
執行以下命令驗證環境變量配置。
echo %ALIBABA_CLOUD_ACCESS_KEY_ID% echo %ALIBABA_CLOUD_ACCESS_KEY_SECRET%
成功返回示例如下:
LTA**** moiEs****
通過Windows PowerShell
按下鍵盤上的
Win + X
組合鍵。設置RAM用戶的訪問密鑰。
僅當前會話有效
在彈出的菜單中,選擇Windows PowerShell。
為當前會話添加以下環境變量。
$env:ALIBABA_CLOUD_ACCESS_KEY_ID = "LTA****" $env:ALIBABA_CLOUD_ACCESS_KEY_SECRET = "moiEs****"
對所有新會話有效
在彈出的菜單中,選擇Windows PowerShell。
為所有新會話添加以下環境變量。
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::User) [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::User)
對所有用戶有效
在彈出的菜單中,選擇Windows PowerShell(管理員)。
為所有用戶添加以下環境變量。
[System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_ID', 'LTA****', [System.EnvironmentVariableTarget]::Machine) [System.Environment]::SetEnvironmentVariable('ALIBABA_CLOUD_ACCESS_KEY_SECRET', 'moiEs****', [System.EnvironmentVariableTarget]::Machine)
執行以下命令驗證環境變量配置。
Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_ID Get-ChildItem env:ALIBABA_CLOUD_ACCESS_KEY_SECRET
成功返回示例如下:
LTA**** moiEs****
從環境變量中獲取RAM用戶的訪問密鑰。
// 使用環境變量中獲取的RAM用戶的訪問密鑰配置訪問憑證。 accid = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") acckey = os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
代碼嵌入
警告在代碼中嵌入訪問憑證會導致安全問題。如果訪問憑證被泄漏,攻擊者就可以使用該訪問憑證來訪問您的資源SMQ,造成損失。因此,建議您使用更安全的方式,例如從環境變量中獲取訪問憑證,來提高安全性。
accid,acckey,endpoint,token = MNSSampleCommon.LoadConfig() my_account = Account(endpoint, accid, acckey, token)
使用臨時訪問憑證
當您準備臨時訪問SMQ服務時,您可以配置STS臨時訪問憑證,通過STS服務頒發一個STS臨時訪問憑證。臨時訪問憑證無需透露您的RAM用戶訪問密鑰,使您的SMQ訪問更加安全。
創建RAM用戶。
具體操作,請參見創建RAM用戶。
為RAM用戶授予
AliyunSTSAssumeRoleAccess
權限。具體操作,請參見為RAM用戶授權。
使用RAM用戶調用STS服務的AssumeRole接口獲取STS臨時訪問憑證。
具體操作,請參見AssumeRole。
配置STS臨時訪問憑證。
環境變量
使用獲取的STS臨時訪問憑證配置環境變量。
macOS
打開終端。
執行以下命令。
nano ~/.bash_profile
在文件末尾添加從STS服務獲取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。
export MNS_ACCESS_KEY_ID=LTA**** export MNS_ACCESS_KEY_SECRET=moiEs**** export MNS_SESSION_TOKEN=CAES****
按
Ctrl
+X
,按Y
鍵確認保存,然后按Enter
鍵退出文件。執行以下命令以使更改生效。
source ~/.bash_profile
執行以下命令驗證環境變量配置。
echo $MNS_ACCESS_KEY_ID echo $MNS_ACCESS_KEY_SECRET echo $MNS_SESSION_TOKEN
成功返回示例如下:
LTA**** moiEs**** CAES****
Linux
打開終端。
執行以下命令。
sudo vim /etc/profile
在文件末尾添加從STS服務獲取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。
export MNS_ACCESS_KEY_ID=LTA**** export MNS_ACCESS_KEY_SECRET=moiEs**** export MNS_SESSION_TOKEN=CAES****
按
ESC
鍵退出編輯模式,輸入:wq
,然后按Enter
鍵保存并退出文件。執行以下命令以使更改生效。
source /etc/profile
執行以下命令驗證環境變量配置。
echo $MNS_ACCESS_KEY_ID echo $MNS_ACCESS_KEY_SECRET echo $MNS_SESSION_TOKEN
成功返回示例如下:
LTA**** moiEs**** CAES****
Windows
通過圖形化用戶界面GUI
以Windows 10為例,通過圖形化用戶界面以環境變量的方式設置STS臨時訪問憑證的步驟如下:
在桌面右鍵單擊此電腦,選擇
。添加以下環境變量。
變量名
示例值
MNS_ACCESS_KEY_ID
LTA****
MNS_ACCESS_KEY_SECRET
moiEs****
MNS_SESSION_TOKEN
CAES****
執行以下命令驗證環境變量配置。
echo %MNS_ACCESS_KEY_ID% echo %MNS_ACCESS_KEY_SECRET% echo %MNS_SESSION_TOKEN%
成功返回示例如下:
LTA**** moiEs**** CAES****
通過命令行提示符CMD
打開命令行。
執行以下命令配置從STS服務獲取的臨時訪問憑證(包括AccessKeyId、AccessKeySecret、SecurityToken)。
set MNS_ACCESS_KEY_ID=LTA**** set MNS_ACCESS_KEY_SECRET=moiEs**** set MNS_SESSION_TOKEN=CAES****
執行以下命令以使更改生效。
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%"
執行以下命令驗證環境變量配置。
echo %MNS_ACCESS_KEY_ID% echo %MNS_ACCESS_KEY_SECRET% echo %MNS_SESSION_TOKEN%
成功返回示例如下:
LTA**** moiEs**** CAES****
通過Windows PowerShell
按下鍵盤上的
Win + X
組合鍵。設置STS臨時訪問憑證。
僅當前會話有效
在彈出的菜單中,選擇Windows PowerShell。
為當前會話添加以下環境變量。
$env:MNS_ACCESS_KEY_ID = "LTA****" $env:MNS_ACCESS_KEY_SECRET = "moiEs****" $env:MNS_SESSION_TOKEN = "CAE****"
對所有新會話有效
在彈出的菜單中,選擇Windows PowerShell。
為所有新會話添加以下環境變量。
[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)
對所有用戶有效
在彈出的菜單中,選擇Windows PowerShell(管理員)。
為所有用戶添加以下環境變量。
[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)
執行以下命令驗證環境變量配置。
Get-ChildItem env:MNS_ACCESS_KEY_ID Get-ChildItem env:MNS_ACCESS_KEY_SECRET Get-ChildItem env:MNS_SESSION_TOKEN
成功返回示例如下:
LTA**** moiEs**** CAES****
從環境變量中獲取STS臨時訪問憑證。
accid = os.getenv("MNS_ACCESS_KEY_ID") acckey = os.getenv("MNS_ACCESS_KEY_SECRET") token = os.getenv("MNS_SESSION_TOKEN") or ""
代碼嵌入
警告在代碼中嵌入訪問憑證會導致安全問題。如果訪問憑證被泄漏,攻擊者就可以使用該訪問憑證來訪問您的資源SMQ,造成損失。因此,建議您使用更安全的方式,例如從環境變量中獲取訪問憑證,來提高安全性。
accid = os.getenv("MNS_ACCESS_KEY_ID") acckey = os.getenv("MNS_ACCESS_KEY_SECRET") token = os.getenv("MNS_SESSION_TOKEN") or "" endpoint = "example.endpoint" my_account = Account(endpoint, accid, acckey, token)