目录
04 AWS IAM Identity Center (SSO)配置
01 配置秘钥
环境变量秘钥
Linux | Mac
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_DEFAULT_REGION=us-west-2
Windows CMD
setx AWS_ACCESS_KEY_ID AKIAIOSFODNN7EXAMPLE
setx AWS_SECRET_ACCESS_KEY wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
setx AWS_DEFAULT_REGION us-west-2
Powershell
$Env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
$Env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
$Env:AWS_DEFAULT_REGION="us-west-2"
声明 profile
CLI 参数声明
aws ec2 describe-instances --profile user1
环境变量声明
linux | mac
export AWS_PROFILE=user1
Windows
setx AWS_PROFILE user1
aws configure
配置 default profile
# aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
02 aws configure 命令
list [--profile PROFILE]
获取某个 profile 的配置信息
# aws configure list --profle xxx
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************ABCD shared-credentials-file
secret_key ****************ABCD shared-credentials-file
region us-west-2 env AWS_DEFAULT_REGION
list-profiles
获取已配置的所有 profile
# aws configure list-profiles
default
test
import
从在 console 中下载的 csv 中导入
aws configure import --csv file://credentials.csv
get
# aws configure get region --profile integ
us-west-2
set
# aws configure set region us-west-2 --profile integ
03 配置文档字段
范例
~/.aws/credentials
(Linux 和 Mac)或 %USERPROFILE%\.aws\credentials
(Windows)
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
[user1]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
~/.aws/config
(Linux 和 Mac)或 %USERPROFILE%\.aws\config
(Windows)
[default]
region=us-west-2
output=json
[profile user1]
region=us-east-1
output=text
credentials
秘钥相关
aws_access_key_id = AKIAIOSFODNN7EXAMPLE
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token = AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
config
cli_auto_prompt
为 AWS CLI 版本 2 启用自动提示。可以使用两种设置:
-
on
每次尝试运行 aws
命令时都会使用完整的自动提示模式。这包括在完整或不完整的命令之后按 ENTER 键。
cli_auto_prompt = on
-
on-partial
使用部分自动提示模式。如果命令不完整或由于客户端验证错误而无法运行,则使用自动提示。如果您已有现有脚本、运行手册,或者如果您希望只对于不熟悉的命令收到自动提示,而不是每个命令都收到提示,则此模式将非常有帮助。
cli_auto_prompt = on-partial
您可以使用 aws_cli_auto_prompt
环境变量或 --cli-auto-prompt
和 --no-cli-auto-prompt
命令行参数覆盖此设置。
cli_pager
指定用于处理输出的分页程序。预设情况下,AWS CLI 版本 2 会通过操作系统的原定设置分页程序返回所有输出。
可以被 AWS_PAGER 环境变量覆盖。
cli_pager=less
要完全禁用外部分页程序,请将该变量设置为空字符串,如以下示例所示。
cli_pager=
cli_timestamp_format
指定输出中包含的时间戳值的格式。可以指定以下任一值:
- iso8601 – AWS CLI 版本 2 的原定设置值。如果指定,AWS CLI 根据 ISO 8601 对所有时间戳进行重新格式化。
ISO 8601 格式的时间戳与以下示例类似。第一个示例通过在时间之后加入 Z
,显示以协调世界时 (UTC) 表示的时间。日期和时间由 T
分隔。
2019-10-31T22:21:41Z
要指定不同的时区,不是使用 Z
,而是指定 +
或 -
以及所需时区在 UTC 之前或之后的小时数作为两位数值。以下示例显示的时间与上一个示例相同,但调整为太平洋标准时间(比 UTC 晚 8 小时):
2019-10-31T14:21:41-08
- wire – AWS CLI 版本 1 的原定设置值。如果指定,AWS CLI 按原样显示在 HTTP 查询响应中收到的所有时间戳值。
该条目没有等效的环境变量或命令行选项。
cli_timestamp_format = iso8601
max_attempts
指定 AWS CLI 重试处理程序使用的最大重试次数值,其中初始调用计入您提供的 max_attempts
值。
您可以使用 AWS_MAX_ATTEMPTS
环境变量覆盖此值。
max_attempts = 3
output
指定使用该配置文件请求的命令的原定设置输出格式。您可以指定以下任意值:
- json – 输出采用 JSON 字符串的格式。
- yaml – 输出采用 YAML 字符串的格式。
- yaml-stream – 输出被流式处理并采用 YAML 字符串的格式。串流支持更快地处理大型数据类型。
- text – 输出采用多个制表符分隔字符串值行的格式。这对于将输出传递到文本处理器(如
grep
、sed
或 awk
)很有用。 - table – 输出采用表格形式,使用字符 +|- 以形成单元格边框。它通常以“人性化”格式呈现信息,这种格式比其他格式更容易阅读,但从编程方面来讲不是那么有用。
可以被 AWS_DEFAULT_OUTPUT
环境变量或 --output
命令行选项覆盖。
output = table
region
对于使用该配置文件请求的命令,指定要将请求发送到的 AWS 区域。
- 您可以指定可用于所选服务的任何区域代码,有关列表,请参阅《Amazon Web Services 一般参考》中的 AWS 区域和终端节点。
- 通过
aws_global
,您可以为不仅支持区域端点,还支持全局端点的服务指定全局端点,例如 AWS Security Token Service (AWS STS) 和 Amazon Simple Storage Service (Amazon S3)。
您可以使用 AWS_REGION
环境变量、AWS_DEFAULT_REGION
环境变量或 --region
命令行选项覆盖此值。
region = us-west-2
S3 自有属性
[profile development]
s3 =
max_concurrent_requests = 20
max_queue_size = 10000
multipart_threshold = 64MB
multipart_chunksize = 16MB
max_bandwidth = 50MB/s
use_accelerate_endpoint = true
addressing_style = path
04 AWS IAM Identity Center (SSO)配置
configure 配置
配置信息
$ aws configure sso
SSO session name (Recommended): my-sso
SSO start URL [None]: https://my-sso-portal.awsapps.com/start
SSO region [None]: us-east-1
SSO registration scopes [None]: sso:account:access
浏览器验证
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:
https://device.sso.us-west-2.amazonaws.com/
Then enter the code:
QCFK-N451
选择账号和角色
There are 2 AWS accounts available to you.
> DeveloperAccount, developer-account-admin@example.com (123456789011)
ProductionAccount, production-account-admin@example.com (123456789022)
Using the account ID 123456789011
There are 2 roles available to you.
> ReadOnly
FullAccess
设置 config
CLI default client Region [None]: us-west-2<ENTER>
CLI default output format [None]: json<ENTER>
CLI profile name [123456789011_ReadOnly]: my-dev-profile<ENTER>
成功验证
To use this profile, specify the profile name using --profile, as shown:
aws s3 ls --profile my-dev-profile
~/.aws/config 自动写入以下数据
[profile my-dev-profile]
sso_session = my-sso
sso_account_id = 123456789011
sso_role_name = readOnly
region = us-west-2
output = json
[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
也可多 profile 共用一个 session配置方式如下,
[profile dev]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole
[profile prod]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole2
[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
再次登录过程
登录 profile
# aws sso login --profile my-dev-profile
Using a browser, open the following URL:
https://device.sso.us-west-2.amazonaws.com/
and enter the following code:
QCFK-N451
登录 session
# aws sso login --sso-session my-dev-session
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:
https://device.sso.us-west-2.amazonaws.com/
and enter the following code:
QCFK-N451
Successfully logged into Start URL: https://cli-reinvent.awsapps.com/start
登出
# aws sso logout
Successfully signed out of all SSO profiles.
配置 IAM 角色
IAM 角色的定义要定义在 ~/.aws/config
基本设置
[profile marketingadmin]
role_arn = arn:aws:iam::123456789012:role/marketingadminrole
source_profile = user1
同账号带有 MFA 信息
[profile role-without-mfa]
region = us-west-2
role_arn= arn:aws:iam::128716708097:role/cli-role
source_profile=cli-user
[profile role-with-mfa]
region = us-west-2
role_arn= arn:aws:iam::128716708097:role/cli-role
source_profile = cli-user
mfa_serial = arn:aws:iam::128716708097:mfa/cli-user
[profile anika]
region = us-west-2
output = json
带有External ID 的配置
[profile crossaccountrole]
role_arn = arn:aws:iam::234567890123:role/SomeRole
source_profile = default
mfa_serial = arn:aws:iam::123456789012:mfa/saanvi
external_id = 123456
带有 Session Name 的配置
[profile namedsessionrole]
role_arn = arn:aws:iam::234567890123:role/SomeRole
source_profile = default
role_session_name = Session_Maria_Garcia
带有 Session name 后, sts caller identity 会显示以下格式
arn:aws:iam::234567890123:assumed-role/SomeRole/Session_Maria_Garcia
清除凭证缓存
linux | mac
rm -r ~/.aws/cli/cache
Windows
del /s /q %UserProfile%\.aws\cli\cache