雖然設定權限和驗證的路上一踩一個坑,但是現在放棄還太早了!
雖然 boto3 不能直接使用 AWS Toolkit 取到的暫時性憑證,但是走過的路並沒有白費。
因為已經設定好了 IAM Identity Center,到了這一步才能直接使用 SSO 的方式設定 boto3 的驗證!
當然,要直接使用 IAM 生成的 AWS Access Key 技術上也可行,但安全性就沒有這麼好了。
在實務的應用上,使用金鑰也要另外考慮管理和輪替問題。
目標:用 boto3 透過 SSO Profile 連上 AWS
aws --version
來確認版本
PS C:\Projects\2025-ironman\s3-reader> aws --version
aws-cli/2.28.9 Python/3.13.4 Windows/11 exe/AMD64
aws configure sso
欄位名稱 | 說明 |
---|---|
SSO session name | 自定義名稱,用來識別登入資訊 |
SSO start URL | AWS IAM Identity Center 的專屬登入入口網址 |
SSO region | IAM Identity Center 建立所在的 Region |
SSO registration scopes | 登入時要求的存取範圍。預設:sso:account:access ,一般情境下不需要修改。 |
SSO start URL
邀請信中提供的 Your AWS access portal URL,
也可以從 Console -> IAM Identity Center -> 設定 中找到。
欄位名稱 | 說明 |
---|---|
Default client Region | 要操作的 Region |
CLI default output format | CLI 輸出的格式,常見選項有 json 、table 、text ,預設為 json |
Profile name | SSO Profile 名稱,預設帶入 <服務名稱>-<帳號ID> ,可以自行改成方便識別的名稱 |
aws sts get-caller-identity --profile <剛取好的 profile name>
這裡要小小調整一下程式,原先的方式:
s3_client = boto3.client("s3")
要改成取用剛建立好的 profile
# 使用剛才建立的 profile 建立一個 boto3 Session(封裝憑證與設定)
session = boto3.Session(profile_name="ithome-2025-developer")
# 透過這個 Session 建立 S3 Client
s3_client = session.client("s3")
是的,就這樣。
建立好 IAM Identity Center
就是這麼方便!
剛才的 aws configure sso
其實做了兩件事:
~/.aws/config
~/.aws/sso/cache/
,提供 SDK(boto3)自動取用所以只要指定要使用的 SSO 設定檔,boto3 就知道現在要使用哪一個 SSO token 執行囉!
也因為設定好了 SSO 設定檔,往後要登入的時候只需要一行指令:
aws sso login --profile <SSO profile name>
再完成瀏覽器的登入流程就可以成功取得 SSO token。
不完全對。
import boto3
session = boto3.Session(profile_name="ithome-2025-developer")
s3 = session.client("s3")
實際上的運行流程是這樣的:
~/.aws/config
找到指定的 profile,確認它是 SSO 型的設定。~/.aws/sso/cache
找對應 start URL 且還在有效期內的 SSO access token。⚠️ 注意
SSO token 的存續時間 與 Permission Set session 憑證的存續時間 是彼此獨立的兩個時間。
有鑑於這幾天的篇幅實在長,最後就統整一下 AWS 帳號與開發環境設定流程
步驟 | 目的 | 注意事項 |
---|---|---|
1. 安全化 Root 帳號 | 保護帳號最高權限,避免日常使用 | 僅用於帳單與帳號設定,必須啟用 MFA |
2. 建立低權限登入用 User | 作為日常登入入口,降低風險 | 不附加任何權限,僅啟用 Console Access 與 MFA;登入後需切換角色 |
3. 建立 Admin Role | 提供管理資源的最高權限 | 附加 AdministratorAccess;信任政策限制只能由登入用 User + MFA Assume |
4. 安裝 AWS Toolkit for VS Code | 提供 IDE 直接操作 AWS 資源 | 僅在 IDE 中可用,無法將憑證分享給 boto3 |
5. 啟用 IAM Identity Center | 建立使用者,集中管理權限 | 選定固定的 Region;建立 Permission Set 並指派帳號 |
6. 安裝 AWS CLI v2 | 讓 CLI 與 SDK 支援 SSO 登入與臨時憑證 | 確認版本指令 aws --version |
7. 設定 SSO Profile | 讓 CLI / SDK 共用登入資訊 | 使用 aws configure sso 建立設定檔;登入時跑 aws sso login --profile <sso profile name> |